Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
R
 
 
 
 
man
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Fast symbolic multivariate polynomials in R

Build Status CRAN_Status_Badge Rdoc Codecov test coverage

Overview

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.

Installation

You can install the released version of mvp from CRAN with:

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

The mvp package in use

Creating 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

Further information

For more detail, see the package vignette

vignette("mvp")

About

No description, website, or topics provided.

Resources

Packages

No packages published
You can’t perform that action at this time.