| Ops.freealg {freealg} | R Documentation |
Arithmetic Ops methods for the the free algebra
Description
Arithmetic operators for manipulation of freealg objects such as addition, multiplication, powers, etc
Usage
## S3 method for class 'freealg'
Ops(e1, e2)
free_negative(S)
free_power_scalar(S,n)
free_eq_free(e1,e2)
free_plus_numeric(S,x)
free_plus_free(e1,e2)
lowlevel_simplify(words,coeffs)
lowlevel_free_prod(words1,coeffs1,words2,coeffs2)
lowlevel_free_sum(words1,coeffs1,words2,coeffs2)
lowlevel_free_power(words,coeffs,n)
lowlevel_diffn(words,coeffs,r)
lowlevel_subs(words1, coeffs1, words2, coeffs2, r)
inv(S)
Arguments
S, e1, e2 |
Objects of class |
n |
Integer, possibly non-positive |
r |
Integer vector indicating variables to differentiate with respect to |
x |
Scalar value |
words, words1, words2 |
A list of words, that is, a list of integer vectors representing the variables in each term |
coeffs, coeffs1, coeffs2 |
Numeric vector representing the coefficients of each word |
Details
The function Ops.freealg() passes binary arithmetic operators
(“+”, “-”, “*”,
“^”, and “==”) to the appropriate
specialist function.
The caret, as in a^n, denotes arithmetic exponentiation, as in
x^3==x*x*x. The only comparison operators are equality and
inequality; x==y is defined as is.zero(x-y).
Functions lowlevel_foo() are low-level functions that interface
directly with the C routines in the src/ directory and
are not intended for the end-user.
Function inv() is defined only for freealg objects with a
single term. If x has a single term we have
inv(x)*x=x*inv(x)=1. There is no corresponding division in the
package because a/b may be either a*inv(b) or
inv(b)*a.
Author(s)
Robin K. S. Hankin
Examples
rfalg()
as.freealg("1+x+xy+yx") # variables are non-commutative
as.freealg("x") * as.freealg("X") # upper-case letters are lower-case inverses
constant(as.freealg("x+y+X+Y")^6) # OEIS sequence A035610
inv(as.freealg("2aaabAAAAx"))