Examples of the cross product of three vectors in eight dimensions.
Version of Saturday 5 April 2014.
Dave Barber's other pages.

The 3-factor (or 3-fold or ternary) cross product in 8 dimensions (briefly, the "3-in-8") is mentioned from time to time in the algebraic literature, but concrete examples are rarely furnished. This site offers instances specific enough that they can be programmed into a computer — in fact we found them through a computer-assisted search.

A few preliminaries:


Our baseline example of a 3-in-8 is established in the following condensed version of a longer table:

Table 1.
U0 × U1 × U2 = +U3 U0 × U1 × U3 = −U2 U0 × U2 × U3 = +U1 U1 × U2 × U3 = −U0
U0 × U1 × U4 = +U5 U0 × U1 × U5 = −U4 U0 × U4 × U5 = +U1 U1 × U4 × U5 = −U0
U0 × U1 × U6 = +U7 U0 × U1 × U7 = −U6 U0 × U6 × U7 = +U1 U1 × U6 × U7 = −U0
U0 × U2 × U4 = +U6 U0 × U2 × U6 = −U4 U0 × U4 × U6 = +U2 U2 × U4 × U6 = −U0
U0 × U2 × U5 = −U7 U0 × U2 × U7 = +U5 U0 × U5 × U7 = −U2 U2 × U5 × U7 = +U0
U0 × U3 × U4 = −U7 U0 × U3 × U7 = +U4 U0 × U4 × U7 = −U3 U3 × U4 × U7 = +U0
U0 × U3 × U5 = −U6 U0 × U3 × U6 = +U5 U0 × U5 × U6 = −U3 U3 × U5 × U6 = +U0
U1 × U2 × U4 = +U7 U1 × U2 × U7 = −U4 U1 × U4 × U7 = +U2 U2 × U4 × U7 = −U1
U1 × U2 × U5 = +U6 U1 × U2 × U6 = −U5 U1 × U5 × U6 = +U2 U2 × U5 × U6 = −U1
U1 × U3 × U4 = +U6 U1 × U3 × U6 = −U4 U1 × U4 × U6 = +U3 U3 × U4 × U6 = −U1
U1 × U3 × U5 = −U7 U1 × U3 × U7 = +U5 U1 × U5 × U7 = −U3 U3 × U5 × U7 = +U1
U2 × U3 × U4 = −U5 U2 × U3 × U5 = +U4 U2 × U4 × U5 = −U3 U3 × U4 × U5 = +U2
U2 × U3 × U6 = −U7 U2 × U3 × U7 = +U6 U2 × U6 × U7 = −U3 U3 × U6 × U7 = +U2
U4 × U5 × U6 = −U7 U4 × U5 × U7 = +U6 U4 × U6 × U7 = −U5 U5 × U6 × U7 = +U4
To obtain the other entries, note that:
• Exchanging exactly two factors negates the product.
• If two factors are equal, the product is zero.
• If any factor is zero, the product is zero.

See also a demonstrator program in C++11.

This function fulfills the two requirements usually expected of anything called a cross product:

This function has many other characteristics like those of the 2-factor cross product in 3 dimensions (the 2-in-3), such as:

Because multiplication distributes over addition, and scalars can be factored out, a multiplication table that gives the products of all the combinations of basis vectors is sufficient to define the function.


In discussing vector spaces over the complex numbers, we write a prefix tilde (as in ~A) to represent conjugation of the individual components. This nonstandard symbol was chosen because it is easily rendered in simple HTML, it is available in the C++ language in which the demonstrator program was written, and because it resembles a negative sign, which is pertinent because conjugation involves negation. As usual,

~A = [ ~a0, ~a1, ~a2, ~a3, ~a4, ~a5, ~a6, ~a7 ]

Fundamental is this relation:

~A × ~B × ~C = ~ ( A × B × C )

In calculating the complex dot product, the practice of conjugating one of the factors, usually the second, is widespread throughout mathematics. However, in this cross product environment such conjugation does more harm than good, therefore we will never automatically conjugate any factor, whether of a dot or cross product. Rather, any conjugation will expressly indicated with a tilde. In fact, the following items require non-conjugative dot multiplication in order to succeed:

With complex vectors, it is sometimes true that | A × B × C | is greater than | A | | B | | C |; by contrast, with real vectors the inequality would typically be in the opposite sense. This is related to the fact that the sine function of a real argument has a magnitude no greater than unity, but the sine of a complex argument is unbounded.


The 3-in-8 operation can be repeated to effect a kind of exponentiation. Even though the 3-in-8 cannot be directly used to form a composition algebra, certain configurations of repeated cross multiplication do give exponential growth or decay. To describe them, it helps to have a superscript notation which expands as follows:

n AnBnC AnBCn ABnCn
0 C   B   A
1 A × B × C   A × B × C   A × B × C
2 A × B × (A × B × CA × (A × B × C) × C  (A × B × C) × B × C
3 A × B × (A × B × (A × B × C)) A × (A × (A × B × C) × C) × C ((A × B × C) × B × C) × B × C
et cetera

Note that the zeroth power does not yield anything resembling a multiplicative identity.

This exponential nature is revealed by the following ratios of magnitudes for the eight-dimensional vectors when their components are real numbers:

| An+2Bn+2C | : | An+1Bn+1C | :: | An+1Bn+1C | : | AnBnC |
whenever n ≥ 2

and for vectors of complex numbers, which skip a step:

| An+3Bn+3C | : | An+2Bn+2C | :: | An+1Bn+1C | : | AnBnC |
whenever n ≥ 2

Naturally, the same thing applies to AnBCn and ABnCn. The failure of the ratios for n < 2 suggests that generalizing the operation to negative exponents is doubtful.


Nontrivial is to solve A × B × C = D for C, when A, B and D are furnished.


The baseline cross product is one of 32 obtained by rearranging the positive and negative signs. Each such sign arrangement has 30 versions obtained by permuting the basis vectors. Hence there are 960 varieties of this 3-in-8, all essentially the same. The possibility remains open that some substantially different 3-in-8s exist.

Something similar happens in a seven-dimensional space of orthonormal basis V = { V0, V1, V2, V3, V4, V5, V6 } with the two-factor cross product (the 2-in-7). There are 8 arrangements of sign for each of 60 permutations, yielding 480 varieties.


Some, if not all, definitions of the 3-in-8 yield closure for certain four-dimensional subspaces. With the 960 functions of the baseline family, any one of the following four equations implies the other three:

Ua × Ub × Uc = +Ud
Ub × Uc × Ud = −Ua
Uc × Ud × Ua = +Ub
Ud × Ua × Ub = −Uc

Analogously, any one of the following equations for the 2-in-7 implies the other two:

Va × Vb = ± Vc
Vb × Vc = ± Va
Vc × Va = ± Vb

Returning to the 3-in-8, we introduce the black diamond symbol ♦ to indicate a vector that zeroes some of its components, the digits after the diamond indicating which components to retain. For instance,

A♦0123 = [ a0, a1, a2, a3, 0, 0, 0, 0 ]
B♦0257 = [ b0, 0, b2, 0, 0, b5, 0, b7 ]
C♦1247 = [ 0, c1, c2, 0, c4, 0, 0, c7 ]

We call each ♦wxyz symbol a diamond quadruple. With that, we can in the case of the baseline cross product write:

(A × B × C)♦0123 = A♦0123 × B♦0123 × C♦0123

The behavior in this case is isomorphic to the 3-factor cross product in 4 dimensions (the 3-in-4). Besides ♦0123, this is also true for ♦0145, ♦0167, ♦0246, ♦0257, ♦0347, ♦0356, ♦1247, ♦1256, ♦1346, ♦1357, ♦2345, ♦2367 and ♦4567. These combinations will vary if the subscripts are permuted, but not if the signs are rearranged.

Recall the relation from above:

| A × B × C | = | A | | B | | C | when A · B = B · C = C · A = 0

This is satisfied in a four-dimensional subspace corresponding to a diamond quadruple, even if the vectors have complex components; contrast that it fails with eight-dimensional vectors that have complex components.

Here are the diamond quadruples broken down all the way:

A × B × C = A♦0123 × B♦0123 × C♦0123 + A♦4567 × B♦4567 × C♦4567
+ A♦0145 × B♦0145 × C♦0145 + A♦2367 × B♦2367 × C♦2367
+ A♦0167 × B♦0167 × C♦0167 + A♦2345 × B♦2345 × C♦2345
+ A♦0246 × B♦0246 × C♦0246 + A♦1357 × B♦1357 × C♦1357
+ A♦0257 × B♦0257 × C♦0257 + A♦1346 × B♦1346 × C♦1346
+ A♦0347 × B♦0347 × C♦0347 + A♦1256 × B♦1256 × C♦1256
+ A♦0356 × B♦0356 × C♦0356 + A♦1247 × B♦1247 × C♦1247

Thus the baseline 3-in-8 is the sum of fourteen instances of the 3-in-4; a nontrivial question is whether all possible 3-in-8s do something along the same lines. Some guidance may be gleaned from the fact that the 2-in-7 can always be written as the sum of seven instances of the 2-in-3. In particular, suppose D and E are two vectors in V. A counterpart to the table above is the table below, with its diamond triples, for a particular 2-in-7:

D × E = D♦012 × E♦012
+ D♦034 × E♦034
+ D♦056 × E♦056
+ D♦135 × E♦135
+ D♦146 × E♦146
+ D♦236 × E♦236
+ D♦245 × E♦245

Under the baseline 3-in-8, the non-diamond quadruples exhibit a behavior we call anti-closure.


There is considerable computational expense associated with figuring a 3-in-8 cross product when each vector is stored as eight floating point numbers.

The primitive approch to finding A × B × C involves successively calculating a0b0c0, a0b0c1, a0b0c2 et cetera. With 512 = 83 combinations of elements, and 2 multiplications per combination, this entails 1024 multiplications. Additions number 504 = 512 − 8. It is possible to build a 64-element cache containing a0b0, a0b1, a0b2 et cetera, and then multiply each cache member by each element of c. This entails 576 = 64 + 64 · 8 multiplications, but does not reduce the additions.

Depending on the computer hardware, time might be saved by testing for, and bypassing, those combinations that surely turn into zero, such as a2b3c2. Of the 512 combinations, 336 = 8 · 7 · 6 survive, leaving about one-third (176) to vanish. When this is done, additions drop to 328 = 336 − 8. In conjunction with such bypassing, a 56-element cache (a0b1, a0b2, a0b3 et cetera) would reduce the number of multiplications from 672 = 336 · 2 to 392 = 336 + 56.

Another matter is that if the vectors are stored as arrays, there will be some integer address calculation at each access. However, this will probably be a minor contributor to running time as the arithmetic needed for using arrays is generally simple, and operations of integer arithmetic generally run considerably faster than those of floating-point.

Never to be ruled out is the discovery of an ingenious algorithm of remarkable efficiency.


The discussion of diamond quadruples above reveals that the 3-in-4 cross product is precisely the 3-in-8 cross product restricted to a particular subspace of U.

Calculating a 3-in-4 requires about one-eighth as many multiplications as a 3-in-8. This observation may be of help to a researcher who is using computerized brute force techniques in searching for theorems. Depending on the nature of the theorems, it might be possible to save time by testing each candidate theorem on the 3-in-4 cross product; if a theorem fails there, there is no need to try it with the more expensive 3-in-8.


We have defined the baseline 3-in-8 by means of an explicit table. There are other ways to specify a 3-in-8, two of which employing octonions are presented below. Octonion multiplication is intimately related with the 2-in-7, much as quaternion multiplication is connected with the 2-in-3. For clarity, we use the ⊗ symbol for octonion multiplication instead of the customary juxtaposition.

Here are two distinct operations on an eight-dimensional vector:

The bang was selected for much the same reasons as the tilde; among other things, in the C++ language both pertain to negation.

Several authors, including Gray, have given two formulas that yield two non-isomorphic families of 3-in-8s:

A × B × C = ± ( − A ⊗ (!BC) + (A · B) C + (B · C) A − (C · A) B )
A × B × C = ± ( − (A ⊗ !B) ⊗ C + (A · B) C + (B · C) A − (C · A) B )

Meanwhile, Lee and Leung offer this:

A × B × C = ( A ⊗ ( !BC ) − C ⊗ ( !BA ) ) ÷ 2



A ternary magma.

Students of abstract algebra might discard all notion of vectors and scalars, and consider merely a 17-element ternary magma. The objects in the magma are symbolized as:

+u0, +u1, +u2, +u3, +u4, +u5, +u6, +u7,
0,
u0, −u1, −u2, −u3, −u4, −u5, −u6, −u7

and the sole operation is cross multiplication, the baseline operation a satisfactory choice. (Along the same lines is the procedure by which the quaternion group may be extracted from the quaternions.)

The × symbol can be dropped, condensing the notation, because there is only one operation. That operation is cancellative when nonzero, meaning this:

if acd = bcd ≠ 0 then a = b
if abd = acd ≠ 0 then b = c
if abc = abd ≠ 0 then c = d


Suppose a, b, c, d and e are all nonzero and pairwise distinct. Then, exchanging middle factors, we can say:

if abc = +cde then adc = −cbe

By resequencing the factors within each cross product, we can move the exchange point from the middle to the left or right.


Here is a rather limited extension of the Jacobi identity. Suppose that a, b, c, d and e are elements of { +u0, +u1, +u2, +u3, +u4, +u5, +u6, +u7 }, and suppose further that a, b, c, d and e meet one of these conditions:

Then the following identity will be satisfied:

(abc)de + (bcd)ea + (cde)ab + (dea)bc + (eab)cd +
(ace)bd + (ceb)da + (ebd)ac + (bda)ce + (dac)eb = 0

Comments:


Summary listing of other pages on this site: