OFFSET
0,1
COMMENTS
The signs in the second line of the table give the Thue-Morse sequence (A010060).
LINKS
Joerg Arndt, Matters Computational (The Fxtbook), section 39.14.1 "The Cayley-Dickson construction", pp.815-818
Joerg Arndt, Demo program
John C. Baez, The Octonions, Bull. Amer. Math. Soc., 39 (2002), 145-205.
EXAMPLE
Multiplication table for the octonions:
Let e0,e1,...e7 be the units.
The third entry in the second row is 3+, meaning that e1*e2==+e3.
The product is anti-commutative unless one factor is e0.
0 1 2 3 4 5 6 7
0: 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+
1: 1+ 0- 3- 2+ 5- 4+ 7+ 6-
2: 2+ 3+ 0- 1- 6- 7- 4+ 5+
3: 3+ 2- 1+ 0- 7- 6+ 5- 4+
4: 4+ 5+ 6+ 7+ 0- 1- 2- 3-
5: 5+ 4- 7+ 6- 1+ 0- 3+ 2-
6: 6+ 7- 4- 5+ 2+ 3- 0- 1+
7: 7+ 6+ 5- 4- 3+ 2+ 1- 0-
For the multiplication er*ec = +-ep we have p = r XOR c
The sign is given in the following array:
0 1 2 3 4 5 6 7
0: + + + + + + + +
1: + - - + - + + -
2: + + - - - - + +
3: + - + - - + - +
4: + + + + - - - -
5: + - + - + - + -
6: + - - + + - - +
7: + + - - + + - -
Now replace all + by 0 and all - by 1.
Read by antidiagonals (rising order) to obtain the sequence.
Cayley-Dickson construction:
Multiplication rule is
(a,b)*(A,b) = (a*A - B*conj(b), conj(a)*B + A*b)
where conj(a,b) := (conj(a), -b) and conj(x):=x for x real
[ Transposed rule/table is obtained if rule is changed to
(a,b)*(A,b) = (a*A - conj(B)*b, b*conj(A) + B*a) ]
PROG
(C++)
void cp2(ulong a, ulong b, ulong &u, ulong &v) { u=a; v=b; }
int CD_sign(ulong r, ulong c, ulong n) // (returns +1 or -1)
{
int s = +1;
while ( true )
{
if ( (r==0) || (c==0) ) return s;
if ( c==r ) return -s;
if ( c>r ) { std::swap(r, c); s=-s; }
n >>= 1;
if ( c>=n ) cp2(c-n, r-n, r, c);
else if ( r>=n ) cp2(c, r-n, r, c);
}
}
CROSSREFS
KEYWORD
nonn,tabl
AUTHOR
Joerg Arndt, May 20 2006
STATUS
approved