# Maths - 3D Clifford Algebra - Arithmetic - Derivation of multipication table

Derivation

Each term can be calculated as follows, for example when working out the 5th term in the first multivector a.e12 e1^ e2 multiplied by the 6th term in the second multivector b.e31 e3^ e1 we get the magnitude a.e12*b.e31 and the type e1^ e2 * e3^ e1 which can be calculated as follows:

The type of each term can be calculated by following these rules:

1. Write down the indices of both terms, the indices of the left hand multiplicand followed immediately by the indices of the right hand multiplicand without a space. If either of the terms is negative then put a negative sign in front, if both terms are negative then the composite is positive.
2. If this contains any duplicate numbers, then swap any two numbers to make the duplicate numbers adjacent, every swap inverts the sign.
3. Adjacent duplicate numbers can then be removed, repeat step 2 until all duplicate terms are removed.
4. If the remaining numbers are not in the same order as the base values then swap any two numbers, as before every swap inverts the sign.
5. If there are no numbers left the result is e (or -e if negative).

As an example, using 3D vectors, we can use the above rules to calculate a table showing all possible combinations:

In order to make sure we work out all possible combinations of products, I suggest using a table. The entries in the table only shows the type and sign change of the product, it does not show its absolute value. We therefore need to prefix the product by its numerical value which is the real number which is the product of the numbers at the top and left headings.

So we can start by entering the above results in the table, the value to the left of the * is represented by the columns and the value to the right of the * is represented by the rows. So when calculating a^b the column headings are denoted by a.?? and the rows are denoted by b.??

 a*b b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123 a.e 1 e1 e2 e3 e12 e31 e23 e123 a.e1 e1 e11 = 1 [rule 5] e12 e13 = -e31 [rule 4] e112 = e2 [rule 3] e131 =-e113 [rule 2] = -e3 [rule 3] e123 e1123 = e23 [rule 3] a.e2 e2 a21 = -e12 [rule 4] e22 = 1 [rule 5] e23 e212 = -e221 [rule 2] = -e1 [rule 3] e231 = -e132 [rule 4] e123 [rule 4] e223 = e3 [rule 3] e2123 = -e2213 [rule 2] = e31 [rule 4] a.e3 e3 e31 e32 = -e23 [rule 4] e33 = 1 [rule 5] e312 = -e132 [rule 4] = e123 [rule 4] e331 = e1 [rule 3] e323 = -e332 [rule 2] = -e2 [rule 3] e3123 = -e3321 [rule 2] = e12 [rule 4] a.e12 e12 e121 = -e112 [rule 2] = -e2 [rule 3] e122 = e1 [rule 3] e123 e1212 = -e1122 [rule 2] = -1 [rule 5] e1231 = -e1132 [rule 2] = e23 [rule 3 & 4] e1223 = e13 [rule 3] -e31 [rule 4] e12123 =-e11223 [rule 2] = -e3 [rule 3] a.e31 e31 e311 = e3 [rule 3] e312 = -e132 [rule 4] = e123 [rule 4] e313 = -e331 [rule 2] = -e1 [rule 3] e3112 = e32 [rule 3] = -e23 [rule 4] e3131 = -e1133 [rule 2] = -1 [rule 5] e3123 = -e3321 [rule 2] = e12 [rule 3&4] e31123 = e323 [rule 3] = -e332 = -e2 a.e23 e23 e231 =-e132 [rule 4] = e123 [rule 4] e232 = -e223 [rule 2] = -e3 [rule 3] e233 = e2 [rule 3] e2312 = -e2213 [rule 2] = e31 [rule 3&4] e2331 = e21 [rule 3] = -e12 [rule 4] e2323 = -e3322 [rule 2] = -1 [rule 5] e23123 = -e22133 [rule 2] = -e1 [rule 3] a.e123 e123 e1231 = -e1123 [rule 2] = e23 [rule 3&4] e1232 =-e1223 [rule 2] = e31 [rule 3&4] e1233 = e12 [rule 3] e12312 = -e11322 [rule 2] = -e3 [rule 3] e12331 = e121 [rule 2] =-e112 = -e2 e12323 = -e12233 [rule 2] =-e1 [rule 3] e123123 = -e113223 [rule 2] = -1 [rule 5]

So the finished table is:

 a*b b.e b.e1 b.e2 b.e3 b.e12 b.e31 b.e23 b.e123 a.e 1 e1 e2 e3 e12 e31 e23 e123 a.e1 e1 1 e12 -e31 e2 -e3 e123 e23 a.e2 e2 -e12 1 e23 -e1 e123 e3 e31 a.e3 e3 e31 -e23 1 e123 e1 -e2 e12 a.e12 e12 -e2 e1 e123 -1 e23 -e31 -e3 a.e31 e31 e3 e123 -e1 -e23 -1 e12 -e2 a.e23 e23 e123 -e3 e2 e31 -e12 -1 -e1 a.e123 e123 e23 e31 e12 -e3 -e2 -e1 -1

In the above table we can see that some entries are commutative and some are anti-commutative, that is, if we swap rows and columns (or reflect in leading diagonal) some values remain the same and the others have their sign changed. We can also see that (A * B)† = B†* A† because if we rotate the whole table by 90 degrees then the entry will become its reversal.

I guess what we really need to know is that, given a multivector with numerical values: a.e, a.e1, a.e2, a.e3, a.e12, a.e31, a.e23 and a.e123 multiplied by a second multivector with numerical values: b.e, b.e1, b.e2, b.e3, b.e12, b.e31, b.e23 and b.e123 then what are the resulting numerical values. Multiplying out each term gives the following result:

 e = a.e * b.e + a.e1 * b.e1 + a.e2 * b.e2 + a.e3 * b.e3 - a.e12 * b.e12 - a.e31 * b.e31 - a.e23 * b.e23 - a.e123 * b.e123 e1 = a.e1 * b.e + a.e * b.e1 - a.e12 * b.e2 + a.e31 * b.e3 + a.e2 * b.e12 - a.e3 * b.e31 - a.e123 * b.e23 - a.e23 * b.e123 e2 = a.e2 * b.e + a.e12 * b.e1 + a.e * b.e2 - a.e23 * b.e3 - a.e1 * b.e12 - a.e123 * b.e31 + a.e3 * b.e23 - a.e31 * b.e123 e3 = a.e3 * b.e - a.e31 * b.e1 + a.e23 * b.e2 + a.e * b.e3 - a.e123 * b.e12 + a.e1 * b.e31 - a.e2 * b.e23 - a.e12 * b.e123 e12 = a.e12 * b.e + a.e2 * b.e1 - a.e1 * b.e2 + a.e123 * b.e3 + a.e * b.e12 + a.e23 * b.e31 - a.e31 * b.e23 + a.e3 * b.e123 e31 = a.e31 * b.e - a.e3 * b.e1 + a.e123 * b.e2 + a.e1 * b.e3 - a.e23 * b.e12 + a.e * b.e31 + a.e12 * b.e23 + a.e2 * b.e123 e23 = a.e23 * b.e + a.e123 * b.e1 + a.e3 * b.e2 - a.e2 * b.e3 + a.e31 * b.e12 - a.e12 * b.e31 + a.e * b.e23 + a.e1 * b.e123 e123 = a.e123 * b.e + a.e23 * b.e1 + a.e31 * b.e2 + a.e12 * b.e3 + a.e3 * b.e12 + a.e2 * b.e31 + a.e1 * b.e23 + a.e * b.e123

### alternative method

Some programs implement multiplication by using Eddington Basis

```Eddington Basis for aMonad
E Number 1 : 0, 0, 0, *0
E Number 2 : 0, 0, 1, *1
E Number 3 : 0, 0, 2, *2
E Number 4 : 0, 0, 3, *3
E Number 5 : 0, 1, 2, *6
E Number 6 : 0, 1, 3, *7
E Number 7 : 0, 2, 3, *11
E Number 8 : 1, 2, 3, *27

E Number 1 : 1, 2, 3, 4, 5, 6, 7, 8, *0
E Number 2 : 2, 1, 5, 6, 3, 4, 8, 7, *1
E Number 3 : 3, -5, 1, 7, -2, -8, 4, -6, *2
E Number 4 : 4, -6, -7, 1, 8, -2, -3, 5, *3
E Number 5 : 5, -3, 2, 8, -1, -7, 6, -4, *6
E Number 6 : 6, -4, -8, 2, 7, -1, -5, 3, *7
E Number 7 : 7, 8, -4, 3, -6, 5, -1, -2, *11
E Number 8 : 8, 7, -6, 5, -4, 3, -2, -1, *27

E Number 1 : 1, 2, 3, 4, 5, 6, 7, 8, *0
E Number 2 : 2, -1, 5, 6, -3, -4, 8, -7, *1
E Number 3 : 3, -5, -1, 7, 2, -8, -4, 6, *2
E Number 4 : 4, -6, -7, -1, 8, 2, 3, -5, *3
E Number 5 : 5, 3, -2, 8, -1, 7, -6, -4, *6
E Number 6 : 6, 4, -8, -2, -7, -1, 5, 3, *7
E Number 7 : 7, 8, 4, -3, 6, -5, -1, -2, *11
E Number 8 : 8, -7, 6, -5, -4, 3, -2, 1, *27
```

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.      Clifford Algebra to Geometric Calculus: A Unified Language for Mathematics and Physics (Fundamental Theories of Physics). This book is intended for mathematicians and physicists rather than programmers, it is very theoretical. It covers the algebra and calculus of multivectors of any dimension and is not specific to 3D modelling.      New Foundations for Classical Mechanics (Fundamental Theories of Physics). This is very good on the geometric interpretation of this algebra. It has lots of insights into the mechanics of solid bodies. I still cant work out if the position, velocity, etc. of solid bodies can be represented by a 3D multivector or if 4 or 5D multivectors are required to represent translation and rotation.