The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
R package for multivariate polynomials with rational coefficients.
library(gmpoly)
Define a polynomial with the gmpoly
function:
<- gmpoly("4 x^(2, 1, 1) + 1/2 x^(0,1,0)")
pol
pol## gmpoly object algebraically equal to
## 1/2 x^(0,1,0) + 4 x^(2,1,1)
Some arithmetic on this polynomial:
-pol
## gmpoly object algebraically equal to
## -1/2 x^(0,1,0) - 4 x^(2,1,1)
2 * pol
## gmpoly object algebraically equal to
## x^(0,1,0) + 8 x^(2,1,1)
/ 2
pol ## gmpoly object algebraically equal to
## 1/4 x^(0,1,0) + 2 x^(2,1,1)
+ 5
pol ## gmpoly object algebraically equal to
## 5 x^(0,0,0) + 1/2 x^(0,1,0) + 4 x^(2,1,1)
- 5
pol ## gmpoly object algebraically equal to
## -5 x^(0,0,0) + 1/2 x^(0,1,0) + 4 x^(2,1,1)
^2
pol## gmpoly object algebraically equal to
## 1/4 x^(0,2,0) + 4 x^(2,2,1) + 16 x^(4,2,2)
Note that you cannot directly use a bigq
scalar,
e.g. you can’t do gmp::as.bigq(5, 3) * pol
. To perform such
an operation, you have to use gmpolyConstant
:
gmpolyConstant(3, "5/3") * pol
## gmpoly object algebraically equal to
## 5/6 x^(0,1,0) + 20/3 x^(2,1,1)
The gmpolyConstant
function converts a scalar to a
constant polynomial, and two polynomials can be added and
multiplied:
<- gmpoly("2 x^(1,1) - 5/3 x^(0,1)")
pol1 <- gmpoly("-2 x^(1,1) + 3 x^(2,1)")
pol2 + pol2
pol1 ## gmpoly object algebraically equal to
## -5/3 x^(0,1) + 3 x^(2,1)
* pol2
pol1 ## gmpoly object algebraically equal to
## 10/3 x^(1,2) - 9 x^(2,2) + 6 x^(3,2)
Use gmpolyEval
to evaluate a polynomial for some values
of the variables:
library(gmp, warn.conflicts = FALSE)
<- gmpoly("5/2 x^(2,3) + 3 x^(1,1)")
pol gmpolyEval(pol, x = as.bigq(c(1, 1)))
## Big Rational ('bigq') :
## [1] 11/2
To evaluate the polynomial for several sets of variables, supply a matrix to the second argument:
<- rbind(
X t(as.bigq(c(1, 1))),
t(as.bigq(c(3, 4), c(4, 3)))
)gmpolyEval(pol, x = X)
## Big Rational ('bigq') object of length 2:
## [1] 11/2 19/3
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.