Multivariate polynomials are intereresting and useful objects. Here I
present the `mvp`

package which hopefully improves upon previous R
functionality provided by the packages `multipol`

, `mpoly`

, and `spray`

.
The `mvp`

package follows `mpoly`

in using a symbolic, rather than
numeric, representation of a multivariate polynomial; but it offers
speed advantages over `mpoly`

. `mvp`

uses the excellent print and
coercion methods of the `mpoly`

package. `mvp`

includes some pleasing
substitution idiom not found elsewhere; it is theoretically comparable
in speed to the `spray`

package and I present some timings in the
package vignette.

The `mvp`

package uses `C++`

’s STL `map`

class for efficiency, which has
the downside that the order of the terms, and the order of the symbols
within each term, is undefined. This does not matter as the mathematical
value of a multivariate polynomial is unaffected by reordering; and the
print method (taken from `mpoly`

) does a good job in producing
human-readable output.

You can install the released version of `mvp`

from
CRAN with:

```
# install.packages("mvp") # uncomment this to install the package
library("mvp")
```

`mvp`

package in useCreating a multivariate polynomial is straightforward:

```
X <- as.mvp("1 + a^2 + a*b*c^3")
X
#> mvp object algebraically equal to
#> 1 + a b c^3 + a^2
```

and arithmetic operations work as expected:

```
Y <- as.mvp("12*a^2 + b - c^2 + 4*d")
X+Y
#> mvp object algebraically equal to
#> 1 + a b c^3 + 13 a^2 + b - c^2 + 4 d
X-3*Y
#> mvp object algebraically equal to
#> 1 + a b c^3 - 35 a^2 - 3 b + 3 c^2 - 12 d
X^2
#> mvp object algebraically equal to
#> 1 + 2 a b c^3 + 2 a^2 + a^2 b^2 c^6 + 2 a^3 b c^3 + a^4
```

Substitution uses the `subs()`

function:

```
X
#> mvp object algebraically equal to
#> 1 + a b c^3 + a^2
subs(X,a=1)
#> mvp object algebraically equal to
#> 2 + b c^3
subs(X,a=1,b=2)
#> mvp object algebraically equal to
#> 2 + 2 c^3
subs(X,a=1,b=2,c=3)
#> [1] 56
subs(X+Y,a="1+x^2",b="x+y",c=0)
#> mvp object algebraically equal to
#> 14 + 4 d + x + 26 x^2 + 13 x^4 + y
```

For more detail, see the package vignette

`vignette("mvp")`

**Any scripts or data that you put into this service are public.**

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.