https://github.com/stla/gmpoly
Multivariate polynomials with 'gmp' rational coefficients
https://github.com/stla/gmpoly
gmp multivariate-polynomials r
Last synced: about 1 year ago
JSON representation
Multivariate polynomials with 'gmp' rational coefficients
- Host: GitHub
- URL: https://github.com/stla/gmpoly
- Owner: stla
- License: gpl-3.0
- Created: 2022-02-17T07:54:46.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-20T03:34:26.000Z (over 4 years ago)
- Last Synced: 2025-03-07T00:29:01.202Z (over 1 year ago)
- Topics: gmp, multivariate-polynomials, r
- Language: R
- Homepage:
- Size: 85 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Awesome Lists containing this project
README
---
title: "The 'gmpoly' package"
output: github_document
---
[](https://github.com/stla/gmpoly/actions)
*R package for multivariate polynomials with rational coefficients.*
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, collapse = TRUE)
```
```{r}
library(gmpoly)
```
Define a polynomial with the `gmpoly` function:
```{r}
pol <- gmpoly("4 x^(2, 1, 1) + 1/2 x^(0,1,0)")
pol
```
Some arithmetic on this polynomial:
```{r}
-pol
2 * pol
pol / 2
pol + 5
pol - 5
pol^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`:
```{r}
gmpolyConstant(3, "5/3") * pol
```
The `gmpolyConstant` function converts a scalar to a constant polynomial, and
two polynomials can be added and multiplied:
```{r}
pol1 <- gmpoly("2 x^(1,1) - 5/3 x^(0,1)")
pol2 <- gmpoly("-2 x^(1,1) + 3 x^(2,1)")
pol1 + pol2
pol1 * pol2
```
Use `gmpolyEval` to evaluate a polynomial for some values of the variables:
```{r}
library(gmp, warn.conflicts = FALSE)
pol <- gmpoly("5/2 x^(2,3) + 3 x^(1,1)")
gmpolyEval(pol, x = as.bigq(c(1, 1)))
```
To evaluate the polynomial for several sets of variables, supply a matrix to
the second argument:
```{r}
X <- rbind(
t(as.bigq(c(1, 1))),
t(as.bigq(c(3, 4), c(4, 3)))
)
gmpolyEval(pol, x = X)
```