# Ops.multipol: Arithmetic ops group methods for multipols In multipol: Multivariate Polynomials

## Description

Allows arithmetic operators to be used for multivariate polynomials such as addition, multiplication, and integer powers.

## Usage

 ```1 2 3 4 5 6 7``` ```## S3 method for class 'multipol' Ops(e1, e2 = NULL) mprod(..., trim = TRUE , maxorder=NULL) mplus(..., trim = TRUE , maxorder=NULL) mneg(a, trim = TRUE , maxorder=NULL) mps(a, b, trim = TRUE , maxorder=NULL) mpow(a, n, trim = TRUE , maxorder=NULL) ```

## Arguments

 `e1,e2,a` Multipols; scalars coerced `b` Scalar `n` Integer power `...` Multipols `trim` Boolean, with default `TRUE` meaning to return a `trim()`-ed multipol and `FALSE` meaning not to trim `maxorder` Numeric vector indicating maximum orders of the output [that is, the highest power retained in the multivariate Taylor expansion about `rep(0,d)`]. Length-one input is recycled to length `d`; default value of `NULL` means to return the full result. More details given under `taylor()`

## Details

The function `Ops.multipol()` passes unary and binary arithmetic operators (“`+`”, “`-`”, “`*`”, and “`^`”) to the appropriate specialist function.

In `multipol.R`, these specialist functions all have formal names such as `.multipol.prod.scalar()` which follow a rigorous pattern; they are not intended for the end user. They are not exported from the namespace as they begin with a dot.

Five conveniently-named functions are provided in the package for the end-user; these offer greater control than the arithmetic command-line operations in that arguments `trim` or `maxorder` may be set. They are:

• `mprod()` for products,

• `mplus()` for addition,

• `mneg()` for the negative,

• `mps()` for adding a scalar,

• `mpow()` for powers.

Addition and multiplication of multivariate polynomials is commutative and associative, to machine precision.

## Author(s)

Robin K. S. Hankin

`outer`,`trim`,`taylor`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21``` ```a <- as.multipol(matrix(1,4,5)) 100+a f <- as.function(a+1i) f(5:6) b <- as.multipol(array(rnorm(12),c(2,3,2))) f1 <- as.function(b) f2 <- as.function(b*b) f3 <- as.function(b^3) # could have said b*b*b x <- c(1,pi,exp(1)) f1(x)^2 - f2(x) #should be zero f1(x)^3 - f3(x) #should be zero x1 <- as.multipol(matrix(1:10,ncol=2)) x2 <- as.multipol(matrix(1:10,nrow=2)) x1+x2 ```