MyNixOS website logo
Description

Multivariate Polynomials with Rational Coefficients.

Symbolic calculation (addition or multiplication) and evaluation of multivariate polynomials with rational coefficients.

The ‘gmpoly’ package

R-CMD-check

R package for multivariate polynomials with rational coefficients.

library(gmpoly)

Define a polynomial with the gmpoly function:

pol <- gmpoly("4 x^(2, 1, 1) + 1/2 x^(0,1,0)")
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)
pol / 2
## gmpoly object algebraically equal to
## 1/4 x^(0,1,0) + 2 x^(2,1,1)
pol + 5
## gmpoly object algebraically equal to
## 5 x^(0,0,0) + 1/2 x^(0,1,0) + 4 x^(2,1,1)
pol - 5
## gmpoly object algebraically equal to
## -5 x^(0,0,0) + 1/2 x^(0,1,0) + 4 x^(2,1,1)
pol^2
## 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:

pol1 <- gmpoly("2 x^(1,1) - 5/3 x^(0,1)")
pol2 <- gmpoly("-2 x^(1,1) + 3 x^(2,1)")
pol1 + pol2
## gmpoly object algebraically equal to
## -5/3 x^(0,1) + 3 x^(2,1)
pol1 * pol2
## 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)
pol <- gmpoly("5/2 x^(2,3) + 3 x^(1,1)")
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:

X <- rbind(
  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
Metadata

Version

1.1.0

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows