# [Rd] octonions

Tony Plate tplate at blackmesacapital.com
Fri Jul 29 22:12:13 CEST 2005

```It's reasonably easy to define an S3 class for vectors (e.g.,
"octonion") and then define operator methods (for all operators other
than matrix operators) to do what you want with that class.  To do this
you need to define a function Ops.octonion.  All of this is easily done
in pure R. I just wrote a package that does just that for a vector class
with a different algebra (I can send you a copy if you could use any
hints on those aspects).  I'm not sure of the best way of defining a
method for '%*%'.   I think it's possible to use setMethod() to define a
method for '%*%', but I haven't played with that much (my initial
attempts have worked, but warnings have been generated by setMethod).

-- Tony Plate

Robin Hankin wrote:
> Hi
>
> I  thought it would be fun to develop R functionality for
> the octonions (there is  already some work on quaternions).
>
> The octonions are an 8 dimensional algebra over the reals, so an
> octonion
> may nicely be represented as a real vector of length 8.  Applications
> are many and varied, mostly quantum mechanics.
>
> I would like to develop some R functionality in this area.
> My first problem is how to get (eg) a matrix whose entries are
> octonions?
> It would  be nice for a %*% b to behave sensibly when a and b are
> matrices with octonion elements.
>
> Octonions  are not associative [that is,
> x*(y*z) != (x*y)*z ] or commutative [x*y != y*x].
> One usually sees an 8-by-8 table that gives the products.
>
> At this stage, I'm polling for ideas on overall structure.
> Would a package be the best way forward?  Or
> writing an equivalent of complex.c? Or is there
> another approach that would be better? The
> basic multiplication table is easily implemented in C,
> and I now have an (untested) R function OctonionProduct(. , .)
> that multiplies two octonions; but I
> am struggling to see how to make this play nicely with R: it's not
> obvious how to make octonion matrices multiply as they should,
> in the same way that (eg) complex matrices do.
>
> Perhaps we could define "*" and "/"  appropriately for vectors of class
> "octonion" (if such a thing makes sense):  or is there a better
> way?  Also, Mod(), Re(), and perhaps
> Conj() would have to be generalized to work with octonions.
>
>
>
>
> --
> Robin Hankin
> Uncertainty Analyst
> National Oceanography Centre, Southampton
> European Way, Southampton SO14 3ZH, UK
>   tel  023-8059-7743
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

```