Ops.mvp: Arithmetic Ops Group Methods for 'mvp' objects

Ops.mvpR Documentation

Arithmetic Ops Group Methods for mvp objects

Description

Allows arithmetic operators to be used for multivariate polynomials such as addition, multiplication, integer powers, etc.

Usage

## S3 method for class 'mvp'
Ops(e1, e2)
mvp_negative(S)
mvp_times_mvp(S1,S2)
mvp_times_scalar(S,x)
mvp_plus_mvp(S1,S2)
mvp_plus_numeric(S,x)
mvp_eq_mvp(S1,S2)
mvp_modulo(S1,S2)

Arguments

e1, e2, S, S1, S2

Objects of class mvp

x

Scalar, length one numeric vector

Details

The function Ops.mvp() passes unary and binary arithmetic operators “+”, “-”, “*” and “^” to the appropriate specialist function.

The most interesting operator is “*”, which is passed to mvp_times_mvp(). I guess “+” is quite interesting too.

The caret “^” denotes arithmetic exponentiation, as in x^3==x*x*x. As an experimental feature, this is (sort of) vectorised: if n is a vector, then a^n returns the sum of a raised to the power of each element of n. For example, a^c(n1,n2,n3) is a^n1 + a^n2 + a^n3. Internally, n is tabulated in the interests of efficiency, so a^c(0,2,5,5,5) = 1 + a^2 + 3a^5 is evaluated with only a single fifth power. Similar functionality is implemented in the freealg package.

Value

The high-level functions documented here return an object of mvp, the low-level functions documented at lowlevel.Rd return lists. But don't use the low-level functions.

Note

Function mvp_modulo() is distinctly sub-optimal and inst/mvp_modulo.Rmd details ideas for better implementation.

Author(s)

Robin K. S. Hankin

See Also

lowlevel

Examples

(p1 <- rmvp(3))
(p2 <- rmvp(3))

p1*p2

p1+p2

p1^3


p1*(p1+p2) == p1^2+p1*p2  # should be TRUE


mvp documentation built on April 4, 2025, 3:48 a.m.