onion {onion} | R Documentation |
Construct, coerce to, test for, and print onions
octonion(length.out = NULL, names = NULL, Re = 0, i = 0, j = 0, k = 0, l = 0, il = 0, jl = 0, kl = 0) as.octonion(x, single = FALSE, names=NULL) is.octonion(x) quaternion(length.out = NULL, names = NULL, Re = 0, i = 0, j = 0, k = 0) as.quaternion(x, single = FALSE, names=NULL) is.quaternion(x) is.onion(x) as.onion(x,type,names=NULL,single=FALSE) type(x)
length.out |
In functions |
names |
In functions |
Re |
The real part of the onionic vector returned. |
i |
Component i of the onionic vector returned. |
j |
Component j of the onionic vector returned. |
k |
In function |
l |
In function |
il |
In function |
jl |
In function |
kl |
In function |
x |
Onion to be tested or printed |
single |
In functions |
type |
In function |
Functions quaternion()
and octonion()
use standard
recycling where possible; rbind()
is used.
Functions as.quaternion()
and as.octonion()
coerce to
quaternions and octonions respectively. If given a complex vector,
the real and imaginary components are interpreted
as Re
and i
respectively.
The output of type()
is accepted as the type
argument of
function as.onion()
; thus as.onion(out,type=type(x))
works as
expected.
An onion is any algebra (over the reals) created by an iterated Cayley-Dickson process. Examples include quaternions, octonions, and sedenions. There does not appear to be a standard terminology for such objects (I have seen n-ion, anion and others. But “onion” is pronouncable and a bona fide English word).
Creating further onions is intended to be straightforward; the following steps show how to add the sedenions but any number of onions may be added the same way.
Add functions sedenion_prod_single()
and
sedenion_prod()
to src/onion.c
.
Update the following functions:
type()
harmonize()
as.onion()
AprodA()
This should be reasonably straightforward.
create the following functions:
rsed()
(by analogy with roct()
and rquat()
)
SprodS()
(by analogy with OprodO()
and
HprodH()
)
R_SprodS()
(by analogy with R_OprodO()
and
R_HprodH()
)
sedenion()
and is.sedenion()
(by analogy
with octonion()
and is.octonion()
)
as.sedenion()
by analogy with as.octonion()
.
a whole bunch of functions (with appropriate names) to get
and set individual onion components, by
analogy with i.quaternion()
and i<-.quaternion()
.
Sedenions have at least two different naming conventions.
Note that function Ops.onion()
need not be changed, as it copes
with generic onions.
Robin K. S. Hankin
x <- octonion(Re=1,il=1:3) x kl(x) <- 100 x as.quaternion(diag(4))