# Ops.freealg: Arithmetic Ops methods for the the free algebra In freealg: The Free Algebra

 Ops.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 `freealg` `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"))
```

freealg documentation built on Aug. 28, 2022, 9:05 a.m.