1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
\documentclass{article}
\usepackage{axiom}
\begin{document}
\title{\$SPAD/src/input octonion.input}
\author{The Axiom Team}
\maketitle
\begin{abstract}
\end{abstract}
\eject
\tableofcontents
\eject
\section{License}
<<license>>=
--Copyright The Numerical Algorithms Group Limited 1991.
@
<<*>>=
<<license>>
)clear all
-- the octonions build a non-associative algebra:
oci1 := octon(1,2,3,4,5,6,7,8)
oci2 := octon(7,2,3,-4,5,6,-7,0)
oci3 := octon(-7,-12,3,-10,5,6,9,0)
oci := oci1 * oci2 * oci3
(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3)
-- the following elements, together with 1, build a basis over the ground ring
octon(1,0,0,0,0,0,0,0)
i := octon(0,1,0,0,0,0,0,0)
j := octon(0,0,1,0,0,0,0,0)
octon(0,0,0,1,0,0,0,0)
octon(0,0,0,0,1,0,0,0)
octon(0,0,0,0,0,1,0,0)
J := octon(0,0,0,0,0,0,1,0)
octon(0,0,0,0,0,0,0,1)
i*(j*J)
(i*j)*J
-- we can extract the coefficient w.r.t. a basis element:
imagi oci
imagE oci
-- 1 and E build a basis with respect to the quaternions:
-- but what are the commuting rules?
qs := Quaternion Polynomial Integer
os := Octonion Polynomial Integer
-- a general quaternion:
q : qs := quatern(q1,qi,qj,qk)
E := octon(0,0,0,0,1,0,0,0)$os
q * E
E * q
q * 1$os
1$os * q
-- two general octonions:
o : os := octon(o1,oi,oj,ok,oE,oI,oJ,oK)
p : os := octon(p1,pi,pj,pk,pE,pI,pJ,pK)
-- the norm of an octonion is defined as the sum of the squares of the
-- coefficients:
norm o
-- and the norm is multiplicative:
norm(o*p)-norm(p*o)
@
\eject
\begin{thebibliography}{99}
\bibitem{1} nothing
\end{thebibliography}
\end{document}
|