# 9.56 OctonionΒΆ

The Octonions, also called the Cayley-Dixon algebra, defined over a commutative ring are an eight-dimensional non-associative algebra. Their construction from quaternions is similar to the construction of quaternions from complex numbers (see QuaternionXmpPage ).

As Octonion creates an eight-dimensional algebra, you have to give eight components to construct an octonion.

oci1 := octon(1,2,3,4,5,6,7,8)


 1+2i+3j+4k+5E+6I+7J+8K

Type: Octonion Integer

oci2 := octon(7,2,3,-4,5,6,-7,0)


 7+2i+3j-4k+5E+6I-7J

Type: Octonion Integer

Or you can use two quaternions to create an octonion.

oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0))


 -7-12i+3j-10k+5E+6I+9J

Type: Octonion Integer

You can easily demonstrate the non-associativity of multiplication.

(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3)


 2696i-2928j-4072k+16E-1192I+832J+2616K

Type: Octonion Integer

As with the quaternions, we have a real part, the imaginary parts i, j, k, and four additional imaginary parts E, I, J and K. These parts correspond to the canonical basis (1,i,j,k,E,I,J,K).

For each basis element there is a component operation to extract the coefficient of the basis element for a given octonion.

[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1,


imagJ oci1, imagK oci1]


 [1,2,3,4,5,6,7,8]

Type: List PositiveInteger

A basis with respect to the quaternions is given by (1,E). However, you might ask, what then are the commuting rules? To answer this, we create some generic elements.

We do this in FriCAS by simply changing the ground ring from Integer to Polynomial Integer.

q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk)


 q1+qii+qjj+qkk

Type: Quaternion Polynomial Integer

E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0)


 E

Type: Octonion Polynomial Integer

Note that quaternions are automatically converted to octonions in the obvious way.

q * E


 q1E+qiI+qjJ+qkK

Type: Octonion Polynomial Integer

E * q


 q1E-qiI-qjJ-qkK

Type: Octonion Polynomial Integer

q * 1$(Octonion Polynomial Integer)    q1+qii+qjj+qkk Type: Octonion Polynomial Integer 1$(Octonion Polynomial Integer) * q


 q1+qii+qjj+qkk

Type: Octonion Polynomial Integer

Finally, we check that the normnormOctonion, defined as the sum of the squares of the coefficients, is a multiplicative map.

o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK)


 o1+oii+ojj+okk+oEE+oII+oJJ+oKK

Type: Octonion Polynomial Integer

norm o


 ok2+oj2+oi2+oK2+oJ2+oI2+oE2+o12

Type: Polynomial Integer

p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK)


 p1+pii+pjj+pkk+pEE+pII+pJJ+pKK

Type: Octonion Polynomial Integer

Since the result is 0, the norm is multiplicative.

norm(o*p)-norm(p)*norm(o)


 0

Type: Polynomial Integer