Sierpinski (<1K) MULTIVECTOR METHODS
"Time was when all the parts of the subject were dissevered, when algebra, geometry, and arithmetic either lived apart or kept up cold relations of acquaintance confined to occasional calls upon one another; but that is now at an end; they are drawn together and are constantly becoming more and more intimately related and connected by a thousand fresh ties, and we may confidently look forward to a time when they shall form but one body with one soul." --- J.J. Sylvester, 1869

    This document requires the SYMBOL font (ab). Clarity will be increased if the Arial Font is installed. If some symbols are not displayed correctly (such as uparrow [ ↑ ] or times [×] or half [½] ) , see Browser Issues. Use your browser View|Text Size control to increase the text size if desired. This document is under continuous revision. Feedback appreciated.

Introduction

    Geometric algebra provides a practical alternative to conventional 3D vector methods which extends far more readily to higher dimensions. It also provides a coordinate independant symbolic geometry (an "algebra of directions") extendable into a geometric calculus of profound relevance to areas as diverse as quantum physics and computer vision. Although a notable advantage of geometric algebtra is coordinate independance, we will   initially take a coordinate (basis) based approach here since this is likely to be the most practicable in a programming context.
    The purpose of this section is to provide a concise but comprehensive introduction and broad reference for geometric algebra for those interested in it as a powerful computational and theoretical resource that spans and unifies a diverse range of fields. Fuller more formal treatments exist elsewhere and this document can serve as a primer for tackling such works. It assumes familiarity with "conventional" 3D constructs such as vectors and matrices and such basic mathematical functions as cosq and ex.  Mathmatical notations used are defined in the glossary.
    This treatment favours the contractive "computer scientist's" inner product a¿b over the semisymmetric "physicist's" inner product a.b where possible because this is arguably the more fundamental and has certain functional advantages.

    Any reader who enjoys mathematics but has not encountered multivectors before should prepare themselves for a treat.

    When first encountering multivectors they can seem bewildering, with a plethora of products and an overload of operators provided for their manipulation. But familiarity breeds respect. Given that multivectors are the "language" of (dynamic) geometry and by implication of nature itself, a half-dozen new symbols does not seem excessive.

    In this chapter we will dscribe the mathematical manipulations of multivectors, their various products and conjugations and operations such as exponentiation and logarithms, projections, and intersections. Of necessity some of this will be mathematically intensive and the reader is is encouraged to "skim" through such material rather than absorbing every product, conjugation, normalisation technique and exponential computation strategum on their first pass. The "point" of multivectors is what you can do with them, and this is addressed in the later sections
    In the Multivectors Programming chapter we describe how to impliment multivectors of both low and high dimension N in C/C++.
    In the Multivectors as Geometric Objects we will see some of the applications of multivectors in the elegant representation and manipulation of N-dimensional spheres, planes, lines and conics.
    In the Multivectors as Transformations we will see how multivectors can also be used to transform, distort, and displace such geometric constructs.
    In Multivector Arcana we cover some more esoteric mathematical aspects of multivectors of less general interest.
    In later sections we cover Multivector Calculus and the uses of multivectors in physics, in particular Relativity and Quantum Mechanics.

Sierpinski (<1K) Multivectors
"And therefore in geometry (which is the only science that it hath pleased God hitherto to bestow on mankind), men begin at settling the significations of their words; which settling of significations, they call definitions, and place them in the beginning of their reckoning." ---  Thomas Hobbes, Leviathan

    Geometric algebra is essentially a set of arithmetical techniques for manipulating N-dimensional vectors and to see how to properly multiply (and divide!) vectors we must first generalise the concept of vectors and scalars.
    Given k linearly independant N-dimensional vectors a1,a2,..,ak from a vector space UN [  we are interested initially in UN=ÂN, the space of real coordinate N-D vectors, but will refer to UN to emphasise applicability to alternate (eg. nonEuclidean) spaces which are of interest to us, particularly with regard to relativistic physics. By "linearly independant" we here mean that no one of the a1,a2,..ak can be expressed as a real-wighted sum of the others ] their outer product ak = a1Ùa2...Ùak (not to be confused with the 3D vector "cross" product)  is known as a blade of grade (aka. step or degree) k, or a k-blade. The fundamental rules for Ù are
     antisymmetry: aÙb = -bÙa ( and so aÙa=0) for any vectors a and b ;
    linearity: aÙ(b+c) = aÙb + aÙc ; and
    associativity: aÙ(bÙc) = (aÙb)Ùc.
     A k-blade ak can be thought of as representing an orientated and scaled k-dimensional subspace of UN, one in which all the vectors satisfy aÙak = 0. We say that a1,a2,..,ak are a k-frame for this subspace.
    A linear "weighted additive" combination of k-blades is known as a k-vector. An example 4D 3-vector is ½e1Ùe3Ùe4 + (Ö7)e1Ùe2Ùe3 .
    A 0-vector is a 0-blade is a scalar. We refer to a k-blade as proper if k>=1.
    A 1-vector is a 1-blade is a conventional vector.
    2-blades can be considered geometrically as directed areas (ie. a plane and a signed scalar).
    2-vectors (aka. bivectors) are sums of scaled 2-blades and need not "reduce" to a single 2-blade for N>3.
     For N£3, any k-vector is a k-blade. This is true only for k<2 when N > 3 .
[ Proof :  ae1Ùe3+be3Ùe1+ge1Ùe2 = (e1+(a/g)e3)Ù(ge2-be3) if g¹0, (ae2-be1)Ùe3 else . All 3D 3-vectors are multiples of e1Ùe2Ùe3    .]

    Consider the set ÂN (aka. GN and ClN in the literature) of all linear combinations (with real "coefficients" or "wieghtings") of k-vectors for 0£k£N, our 1-vectors being taken from the N-dimensional vector space ÂN. Clearly ÂN Ì ÂN (or, more properly, is represented within ÂN) and infact ÂN has dimension åk=0N NCk = 2k, there being NCk º N! (N-k)!-1 k!-1 distinct k-blades in N-dimensions.

    We refer to the elements of ÂN as multivectors An example Â3 multivector is 3+e1-4e2e1Ùe2+(Ö7)e2Ùe3 + pe1Ùe2Ùe3. We can thus think of a general N-D multivector as an arbitary real-weighted combination of 2N distinct basis blades. [  Mathematically, one can take the "blade coefficients" from any field or "number space". It is the utilisation of  - essentially identifying the blade "coefficients" or "coordinates" with "scalars" (0-vectors) - that distinguishes "geometric algebra" from more general Clifford algebras of only passing concern here. If we allow "complex number" blade coeeficients, for example,  we obtain a space CN of dimension 2N+1 . ]
    Multivectors can thus be represented with 2N dimensional 1-vectors, with respect to a given set of N linearly independant N-D basis 1-vectors e1,e2,...,eN and this tells us how to add and subtract them, but not how to multiply and divide them. For that we will need the "geometric product" and its associated "subproducts".

Conflicting Terminologies
    Some authors such as Pavsik use the term "k-vector" for what we will call a k-blade and "multivector" for our k-vector (ie. a single-graded multivector), adopting the term polyvector for our multivector.

Notations and Coordinates
    A general N-D multivector is thus the sum of a scalar, a 1-vector, a 2-vector,..., and an N-vector but we will frequently be interested in pure k-blades or k-vectors and will benefit from a notation that that distinguishes such from general multivectors.  We will use the following fonts to denote geometric algebra elements
FontRepresentsAlso known as
aProper blade
aGeneral multivector
a0-vectorScalar
a1-vectorVector
a2-vectorBivector
a(N-2)-vectorPseudovector
a(N-1)-vectorPseudoscalar


Blades
    Given an orthonormal basis (ie. a Cartesian coordinate frame) consisting of N orthonormal N-D 1-vectors {e1,e2,...,eN} for ÂN, we can consider multivectors as elements of Â2N, ie. as 2N-dimensional 1-vectors,
    We use the notation eij..m º eiÙej....Ùem     where i,j,..m are distinct indices. [  If we relax the distinctness restriction in the case of N indices we have eij..m = e12..Neij..m where scalar eij..m is the traditional "alternating tensor" returning ±1 or 0 according as whether ordered set {i,j,..,m } is an even/odd, or not a, permutation of ordered set { 1,2, .. N } ]
    If all 2N coefficients of the basis blades arising from a given orthonormal basis are integers ( eg. 5 + 3e1 - 7e2Ùe3) then we will say the multivector is integer-coefficiented with regard to that basis. If the coeffients are further restricted to { ±1 , 0 } then the resulting 32N "discrete" multivectors are said to be Mantheyian with regard to the basis.

Specific subcomponents
    We will write aij..m or a[ij..m] for the coefficient of eij..m in multivector a. . [  We will seldom have to raise individual components to integer powers and this raised suffix notation has definite advantages ]
    We will refer to the integer ½(2j+2k+...+2m) as the bitwise enumerator for the extended basis blade ejk..m. The ½ arises because we labelled our first frame vector e1 rather than e0. We will denote coordinates or blades indexed by a particular bitwise enumerator n by [.n.] . Thus eg. e[.0.]=1 ; e[.1.]=e1 ; e[.6.]=e23 and so on and we have a = åk=02N-1 a[.k.] b[.k.] .
    We will use the notation ak to indicate a k-vector, ak a k-blade, and the notation a<k> to indicate the k-vector component of a general multivector a (with a<k>=0<k>=0 for k>N) . The notation a<i,j,..m>º a<i>+ a<j>+ .. + a<m> will prove useful.
    We say a is pure or k-pure if a<k> = a. By an impure k-vector we mean a multivector having a nonzero k-vector component and possible nonzero j-vector components for j<k.
    If we wish to specify a multivector as having only components of grades 2,3 and 5, for example, we will refer to a <2,3,5>-vector. A <k>-vector is thus a pure k-vector. A <0,1>-vector is sometimes known as a paravector, particularly when N=3.
    We will use the notations a<+> º a<0,2,..,2*[N/2|> to denote the multivector obtained by taking only the even grade components of a, and a<-> º a<1,3,..,2*[N/2|+1> for the odd grade components.  

Zeroes
    The degenerate (zero magnitude) k-blade is denoted by 0k.
    All degenerate blades are considered equivalent ( 0 = 01 = 02 = ....0N = 0 ) , and this zero is the sole equivalence. Note that within a computational context (finite precision arithmetic) we will typically be checking for proximity rather than equivalence with zero. It is often worth keeping track of the "grades" of expected zeros.

    We are freuwently interested in issues such as whether the square of a multivector is a pure scalar but in practice this may mean checking that any residual nonzero coordinates are a "negligable" proportion of the scalar part, which can be problematic if the scalar part is also near zero.
    We define the sparsity of a multivector with respect to a given basis as the number of zero coefficients (coordinates) in its representation in that basis.

Inverse frames
    Suppose we have a possibly non-orthonormal linearly independant basis of N N-D 1-vectors providing a coordinate frame (ie. a set of axies) E=(e1,e2,...,eN) for UN. We can construct a reciprocal or inverse frame (e1,e2,...,eN) so that ei.ej = 1 when i=j and 0 else where . is the traditional scalar ("dot") product of two 1-vectors.
    If E is orthogonal then provided no ei2=0 we can set ek º ek-2ek . More generally we require ek º (-1)k-1(e1Ù..ek-1Ùek+1Ù...eN) i-1 where i=e12..N .   However, this may not make much sense to the reader till he is more familiar with Ù and the pseudoscalar i discussed later.
    We define a notation eij..m º eiÙejÙ...em .

    If E is orthogonal (ie. ei.ej=0 for i¹j) then (using the geometric product defined below) we have ekek = 1 (provided ek2¹0) ; but in general ekek has a non-zero 2-blade component because ekÙek ¹ 0 .
    E induces both the coordinate expression x = åi=1N xiei     [ with xi º ei.x ], and the reciprocal coordinate expression x = åi=1N xiei     [ with xi º x.ei ]. ei is the 1-vector geometric multiplier that "seperates"  1-vector x into xi + åj ¹ i xjeiÙej .

    In ÂN : (i) an orthonormal frame is self-inverse ( ei = ei ; xi = xi ) ; (ii) a general frame, expressed as an N×N matrix E with respect to a fixed orthonormal frame F=(f1,f2,...fN) in conventional manner via ( ei = åi=1N Ejifj ) has as its reciprocal frame the frame having matrix (E-1)T = (ET)-1   with respect to F, ie. the inverse transpose.

    Letting Eij º ei¿ej  and Eij º ei¿ej ,  we have xj = åi=1N Eijxi     ;      xj = åi=1N Eijxi .
    The N×N symmetric matrices {Eij} and {Eij} are related by {Eij} = {Eij}-1   where -1 is  the conventional matrix inverse.

Inverse Frame Units
    If frame vectors are assigned units, e1 having length 5 m say, then e1 must be regarded as having "length" 5-1 _meteri so that e1¿e1 = 1 m0 is dimensionless. Coordinates _xui =ei¿x are then unitless while reciprocal coordinates xi = ei¿x have units m2. xi 2 the inverse

Extended inverse frames
    Given an extended basis {e[.i.] : 0£i<2N } we can construct an extended pureblade inverse frame {e[.i.]} which satisfies e[.i.]* e[.j.] º (e[.i.]e[.j.])<0> =  1 Û i=j , 0 else .

The Geometric Product
"He who can propery define and divide is to be considered a god." --- Plato

    To make ÂN a linear space we require a "multiplication" with the following properties:
    a(bc) = (ab)c     (associativity)
    a(b+c) = ab + ac ; (b+c)a = ba + ca     (distributivity)
    aa = Sig(a) where Sig(a) is a scalar for all 1-vector a     (contraction).
    Of principle interest here is the contraction Sig(a) = e|a|2. where e (the signature of a) is either ±1 or 0 and |a| is the conventional magnitude ("length") of 1-vector a. A vector is null if a2=0.   
    We write Âp,q,r for a vector space having orthogonal basis {e1,e2,...eN} where N=p+q+r and Sig(ei) = 1 for 1£i£p ; -1 for p<i£p+q ; 0 for p+q<i£N .
    We write Âp,q,r for the associated geometric algebra. We write Âp,q (aka. Clp,q) as an abbreviation for Âp,q,0 and ÂN as an abbreviation for ÂN,0,0 .

    We define the geometric product of any a by a scalar b in the obvious "coordinatewise" commutative manner (ba)[ij..m] =    (ab)[ij..m] º b(a[ij...m]) .
     We define the geometric product of two 1-vectors by ab º a.b + aÙb where a.b is the conventional ÂN (or UN) vector "dot" product. We can then extend this definiton by means of the associativity and contraction rules to higher grade blades and hence (by distributivity) to multivectors generally. The geometric product is noncommutative, but this is actually an assett; the "degree" of noncommutativity of the geometric product of two multivectors being a measure of their orthogonality. A unit multivector is a multivector satisfying (aa)<0>=±1.

Â2
    We can tabulate the geometric product for Â2 with respect to a basis for Â2 derived from an orthonormal basis {e1,e2} for Â2.
ab for Â2
a
1  e1  e2  e12
11e1e2e12
be1e11e12-e2
e2e2-e121e1
e12e12e2-e1-1

[ Proof :  e12e1 = (e1Ùe2)e1 = -(e2Ùe1)e1 = -(e2e1)e1 = -e2(e1e1) = -e2 . Other products likewise.  .]
    We note in passing that the subspace Â2 + consisting of all 2D multivectors having no 1-vector component, ie. the space of multivectors of the form a + be12   is closed under the geometric product and is isomorphic to the complex number space C,  as is Â0,1.

Â1.1
    If e12=1 and e22=-1 then (e1Ùe2)2 = 1 and the even subalgebra Â1,1 + generated by 1 and (e1Ùe2) is isomorphic to the hyperbolic numbers x+yh where h2=1.
      These are less well studied than complex numbers and rarely implimented in code libraries. However it is easy to generalise a complex number class to allow for a plusquare or null i. The hyperbolic number x+yh has inverse (x-yh)(x2-y2)-1 provided x¹±y . Though we can express x+yh in "hyperbolic polar form" r(qh) where r=|x2-y2|½ and q =  tanh-1(xy-1) if |x|<|y| ; or  tanh-1(yx-1) if |y|<|x| , the inverse hyperbolic tangent providing q must be carefully defined since hyperbolic numbers divide naturally into four "regions" or "quadrants" seperated by the lines y=x and y=-x according as to which of |x| and |y| is larger and the sign of the larger coordinate. We will refer to hyperbolic numbers with x>0 and x>|y| as being in the (1)-quadrant since this is the quadrant containing 1. Hyperbolic numbers in this quadrant remain in it when raised to any power or exponentiated.
    We can express ay (1)-quadrant hypercomplex as r(qh) for real r³0 and q Î (-¥,¥) . Whereas the complex polar angle parameter can be restricted to (-p,p] and maps all 2-D directions, the hyperbolic polar angle parameter is unbounded and yet only maps a quarter of the 2-D directions. We cannot recover x and y from r and q, as we can for complex numbers, without also knowing which quadrant we are in. Multiplication with h flips x and y and so corresonds to reflection in x=y , mapping the (1)-quadrant into the (h)-quadrant, the (h)-quadrant into the (-1)-quadrant, and so on.   Computationally, we must specify the quadrant "mapped" by q as well as r and q, which requires an additional two bits.

Â3
    We can tabulate the geometric product for Â3 with respect to a basis derived from a standard orthonormal basis {e1,e2,e3} for Â3.
ab for Â3
a
1  e1  e2  e3   e23 e31 e12  e123
1 1e1e2e3 e23e31e12 e123
e1 e11-e12e31 e123e3-e2 e23
e2 e2e121-e23 -e3e123e1 e31
b e3 e3-e31e231 e2-e1e123 e12
e23 e23e123e3-e2 -1 e12-e31 -e1
e31 e31-e3e123 e1 -e12-1 e23 -e2
e12 e12e2-e1e123  e31-e23-1 -e3
e123 e123 e23 e31 e12 -e1-e2-e3 -1
and similar geometric multiplication tables can be constructed for higher N.
    What is happening here is e[.j.]e[.k.] = ± e[.j  ^  k.] where  ^  denotes bitwise XOR ("exclusive or") and the sign is determined both by how many commutations we have to do to bring the common ei together, and the signatures of the common ei.

    Writing i º e123 º e1Ùe2Ùe3 = e1e2e3 we see from the above table that i commutes with all multivectors and satisfies i2 = -1.
    We also observe that aÙb = i(a×b) = (a×b)i where a×b is the conventional Â3 vector "cross" product and that ia spans the plane normal to a. We also have aÙbÙc = (a.(b×c))i.
    We note in passing that the subspace Â3 + consisting of all 3D multivectors having no odd grade component, ie. the space of multivectors of the form a + be23 + ge31 + de12 is closed under the geometric product and is isomorphic to the quaternion space Q, as is Â0,2 . a + bi + gj + dk.

Biquaternions
    We further note that a general Â3 multivector can be uniquely expressed as (a + a2) + (b + b2)e123 where a,b are scalars and a2,b2 are pure Â3 bivectors. An alternative biquaternion (aka. complex four-vector aka. Pauli spinor) representation of Â3 sets i=i=e123 , s1=e1 , s2=e2 , s3=e3 (satisfying si sj=eijki sk). The biquaternion (a0+b0i) +(a1+b1i)e1 +(a2+b2i)e2 +(a3+b3i)e3 is equivalent to the Â3 multivector a0 + a1e1+a2e2+a3e3 + b1e23+b2e31+b3e12 + b0e123 . The product of two 3D 1-vectors is usually taken in this context to be ab º a.b + i(a×b) which is equivalent to the Â3 geometric product since i(a×b)=aÙb.

Pseudoscalars
    The N-vectors from a given UN are all equivalent apart from magnitude ("scale","volume") and sign ("handedness"). They are accordingly known as pseudoscalars. Conversely a nonzero pseudoscalar "spans" (and can be thought of as representing) UN .
    We will use the font a to denote a multivector viewed as a pseudoscalar.   
    Let i º iN be the unit pseudoscalar e12..N for ÂN. i satisifes i 2 = (-1)½(N-1)N and commutes with all multivectors if N is odd. For even N we have iak = (-1)kaki so that i (anti)commutes with (odd)even blades.
    We say a multivector is central if it commutes with all other multivectors. For even N, only scalars are central but for odd N any <0;N>-multivector (scalar plus pseudoscalar) is central.
    An (N-1)-vector is sometimes refreerd to as a pseudovector but we favour the term hyperblade here.
    Taking the geometric product of a multivector with i maps k-blades to (N-k)-blades and vice versa. In particular it maps scalars to pseudoscalars (and vice versa) and vectors to pseudovectors (and vice versa).
    Note that a k-blade acts as a pseudoscalar when acting upon multivectors wholly contained within the space it spans. The geometric product of a pseudoscalar i with a blade ak contained in the subspace spanned by i spans the subspace of i complimentary (orthogonal) to subspace ak. In particular, the geometric product of any blade with itself is a scalar.
    The signature   of a blade bk, ebk , is the sign of bk2 (or zero if bk2 = 0 in which case the blade is said to be null).

Duality

    We define the dual of a multivector a with respect to a pseudoscalar i spanning a space containing a by
    a* º ai-1 = a¿i-1
[  Where ¿ is the contractive inner product defined below. Some authors favour ai, but if i is a unit psuedoscalar the difference is only one of sign. ]
    a* spans the subspace of i "perpendicular" to pureblade a.
    If b is an unmixed (ie. odd or even) multivector, it will either commute or anticommute with i. For odd N, the pseudoscalar commutes with everything and we have (a*)b = a(b*) = (ab)* .
    For even N, i (anti)commutes with (odd) even multivectors and we have (a*)b = a(b#*) = (a(b#))* where # is the grade involution conjugation defined below.

    In the presence of a standard basis for ÂN, computing a* for the unit pseudoscalar i=e123..N is a computationally trivial "shuffling" of coordinates requiring no numeric computations. For the bitwise ordering we have (ai-1)[.i.] = ± a[.(i XOR (2N-1)).] where the actual sign depends upon N and the bitwise parity of i.

    The inverse dual or undual is defined by a-* º a*i2 = ai so that (a-*)* = a.

Matrix representations


Âp.q.r in Â2N×2N
    With regard to a particular extended basis, an N-D multivector a can be expressed as a 2N dimensional real 1-vector. But as a function mapping multivectors to multivectors a(x) = ax , ie.. a transform of 2N-D 1-vectors, a can also be represented as a 2N×2N matrix.
    Taking a=a0+a1e1+a2e2+a12e12 in Âp,q,r with p+q+r=2, for example, we have
    (a0+a1e1+a2e2+a12e12)(x0+x1e1+x2e2+x12e12)
        = (a0x0+e1a1x1+e2a2x2-e1e2a12x12) + (a1x0+a0x1+e2a12x2-e2a2x12)e1 + (a2x0+a0x2-e1a12x1+e1a1x12)e2 + (a0x12+a1x2-a2x1+a12)e12       
which we can express as
æ a0e1a1e2a2-e1e2a12 ö æ x0 ö  
ç a1a0e2a12-a2 ÷ ç x1 ÷
ç a2-e1a12a0e1a1 ÷ ç x2 ÷
è a12-a2a1a0 ø è x12 ø
    Note that the leftmost column of the matrix representation of a contains the 1-vector representation of a, and that the matrix is symmetric apart from occasional sign changes determined by both the position in the matrix and the signatures of the basis 1-vectors.
    Note also that the matrix trace (sum of leading diagonal elements) of the matrix representatrion of a is the frame-invariant scalar 2Na0 = 2Na<0> .
    The geometric product ab corresponds to conventional matrix multiplication of the matrix representations of a and b. Multivector 1 has as its matrix representation the 2N×2N identity matrix.
    If the pseudoscalar is central (all commuting) then we can express each multivector as a 2N-1 complex 1-vector and obtain a 2N-1×2N-1 complex matrix, which is half the size as a 2N×2N real matrix.
    Matrix representations of multivectors provide an alternate model for those who have philosophical difficulties with the concept of adding "different grade" blades to form a composite "entity". Geometric (multivector) algebra becomes the algebra of a particular "form" of matrix, requiring only standard matrix multiply and inversion techniques. Such an approach is computationally profligate, but can sometimes provide alternative insights and quick-and-dirty programming applications exploiting existing matrix suites.

    Far more compact matrix representors for multivectors are typically available. The following are all "maximally efficient" in that they require precisely 2N real scalar parameters to hold a general N-D multivector.

Â2 in Â2×2
1= æ 10 ö e1= æ 10 ö e2= æ 01 ö e12= æ 01 ö
è 01 ø è 0-1 ø è 10 ø è -10 ø
satisfy the required e12=e22=1 ; e12=e1e2=-e2e1 .

Â1.1 in Â2×2
1= æ 10 ö e1= æ 01 ö e2= æ 0-1 ö e12= æ 10 ö
è 01 ø è 10 ø è 10 ø è 0-1 ø
satisfy the required e12=1 ; e22=-1 ; e12=e1e2=-e2e1 .

Â3 in C2×2

    Â3 has a "biquaternian" representation with Hermitian 2×2 complex matrices
1=1= æ 10 ö ; e1= s1= æ 01 ö ; e2= s2= æ 0-i ö ; e3= s3= æ 10 ö
è 01 ø è 10 ø è i0 ø è 0-1 ø
which provide the Pauli algebra if we set i=e123=i (so that s1 s2 s3=i s32 = i 1 )
aba
1 s1 s2 s3
b11 s1 s2 s3
s1 s1 1-i s3+i s2
s2 s2+i s3 1-i s1
s3 s3-i s2+i s1 1

Note that siD=- si while 1D=1 , traditional 2×2 matrix adjoint D corresponding to a biquaternian "vector conjugation".

    The si and 1 act as a basis for the full   C2×2 algenra of complex 2×2 matrices since
æ ab ö = ½(a+d)1 + ½(b+c) s1   + ½i(b-c) s2 + ½(a-d) s3
è cd ø

    Each element of the special unitary group SU(2) of all C2×2 unitary (AA=1) matrices having unit positive determinant can be expressed via U=(½iåj=13 qjej) for three real scalar parameters qj. e1,e2, and e3 are then refered to as the generators of SU(2) so we can view SU(2) geometrically as the space of exponentiated Â3 bivectors.
    SU(2) is isomorphic to the group SO(3) of all orthogonal (AA_transp=1) Â3×3 matrices, with U (U)
æ zx-iy ö U-1
è x+iyz ø
equivalent to Ax where x=(x,y,z)_transp, yielding the quaternian representation Â3 + @ SO(3).

Â3.1 in Â4×4
1=1= æ 1000 ö ; e1= æ 1000 ö ; e2= æ 0100 ö ; e3= æ 0010 ö ; e4= æ 00-10 ö
ç 0100 ÷ ç 0-100 ÷ ç 1000 ÷ ç 000-1 ÷ ç 0001 ÷
ç 0010 ÷ ç 00-10 ÷ ç 0001 ÷ ç 1000 ÷ ç 1000 ÷
è 0001 ø è 0001 ø è 0010 ø è 0-100 ø è 0-100 ø
satisfy the required e12=e22= e32=-e42=1 ; eiej=-ejei for i¹j . [ Due to Lounesto.] Note that the 1-vector representors are traceless and have determinant ±1. Transpose negates only e4 and coresponds to geometric Hermitian conjugation.

Â4.1 in C4×4
1= æ 1000 ö    ; e1= æ 000i ö    ; e2= æ 0001 ö ; e3= æ 00i0 ö ;    e4= æ 0010 ö ;    e5= æ -i000 ö    
ç 0100 ÷ ç 00i0 ÷ ç 00-10 ÷ ç 000-i ÷ ç 0001 ÷ ç 0-i00 ÷
ç 0010 ÷ ç 0-i00 ÷ ç 0-100 ÷ ç -i000 ÷ ç 1000 ÷ ç 00i0 ÷
è 0001 ø è -i000 ø è 1000 ø è 0i00 ø è 0100 ø è 000i ø
satisfy the required e12=e22=e32=e42= -e52=1 ; eiej=-ejei  for  i¹j . Once again, the 1-vector representors are traceless and have determinant ±1. Note that e12345 = e1e2e3e4e5 = i1 = i with e1234=-ie5 .
    Setting e5'=ie5 provides a C4×4 representation of Â5 while setting ei'=iej for j£4  provides one for Â0,5.
    Setting g0=ie5 , g1=-ie1 , g2=-ie2 , g3=-ie3 provides a "Dirac matrix" basis for Â1,3 , inefficient in that it requires 16 complex values to represent a 4D multivector having 16 real coordinates.
    Note that matrix transpose coresponds to negation of e1 and e3 whereas matrix complex conjugation negates e1,e3, and e5 so that matrix Hermitian conjugation AT^ negates only negative signatured e5 and so coresponds to geometric Hermitian conjugation defined below. Negation of the on-lead-diagonal blocks is provided by e5= and negates 1 and e5.

    We can construct matrices having 1 in the first to fourth entries of the first column (and zeroes elsewhere) respectively as


    Ones in only the first, second, third, and fourth entries of the top row are given by the transposes of these, specifically u, ue31 , -ue1245 , and ue2345 respectively.
    Note that we here have e42=+1 , e52=-1.   In our later work on Â4,1 extended Minkowski spacetime we will favour e42=-1 and e52=1.

Other matrix representations
    It can be shown that Â0,4 @ Â4,0 @ Q2×2  ; Â0,6 @ Â8×8  ; Â6,0 @ Q4×4  ; Â7,0 @ Â0,7 @ C8×8 ;    Â0,8 @ Â8,0 @ Â16×16     [ where Q2×2 denotes the space of 2×2 quaternion matrices etc. ] but we do not provide example basies here. More generally, for even p+q, Âp,q is isomorphic to either a real, complex, or quaternion matrix algbera. For odd p+q we sometimes have a sum (ordered pair) of two such matrix algebras.

Adding Blades
    Expressing multivectors in coordinate or matrix forms induces a natural addition of multivectors and provides a potent computational technique, but regarding multivector a as _emphasising(being) the real weighted sum of the 2N outter product progency of N elemental "generators" e1,e2,...eN or a particular real matrix risks loosing sight of duality. All the "information" in a blade b is also "encoded" in its dual bi-1 and we might equally naturally regard a as bb +gc + .. where b = b1 + b2i etc. as a sum of "complex"-weighted blades, particularly for odd N when i is central and (when i2=-1) we have Âp,q @ Cp-1,q @ Cp,q-1. Because we can express a in terms of an extended basis we know that any multivector a can be expressed as a complex-weighted sum of 2N-1 blades but it is the minimal number of blades necessasry that best "classifies" the multivector. We define the positive integer spread of a multivector a to be the number of blades in its "irreducible" real weighted summation.   The spreads of 1 and of e13 + e23 = (e1+e2)Ùe3  are 1, for example. However the spread does not fully categorise the "complexity" of a because we don;t know how many blades appear with their duals. We will refer to the Expression of a multivector a suach as bb +gc  of reduced spread 2 in coordinate form "smears" b and c together. The spread and reduced spreads are not apparent.
    Though the addition of multivectors is well defined and frame-independant, it is in many cases somewhat dubious merit, particularly when adding high glade blades. Though the coordinate approach facilitates and encourages multivector additions and we will do so freely throughout this work, the strict mathmatical purist is correct to maintian an element of unease. Informally, multivectors are made for multiplying, not adding.

Sierpinski (<1K) Multivector Products


Restricted products
    Given the geometric product we can define a large variety of partial-geometric or restricted products by evaluating ab and then throwing away (zeroing the "coordinate" of) one or more particular blades. We might zero all the odd blades, for example, but more useful restricted products arise when the blades we zero are determined by the blades we multiply. The outter product is an example, with akÙbl = (akbl)<k+l> .
    There are two "outer" products and a plethora of potential "inner" products, most of which have something to commend them. All are restrictions of the geometric product in that their result for two extended basis blades is either the same as that of the geometric product or zero. From a programmer's perspective, the contractive inner product ¿ (defined below) is the most fundamental inner product. The reader should accordingly familiarise himself with ¿ , and also the Hestenes (.) product since it is ubiquitous in much of the literature and often required in this work. The other inner produts (·, ë, ¿+) are not used here and seldom seen elsewhere. They may have their place in a particular application, however, and are defined here for completeness.

The outer product
      Given the geometric product, we can fully define the outer or exterior product (aka. wedge product)   by defining
    akÙbl º (akbl)<k+l>     where ak,bl are blades of any grade;
and thence extending over multivectors by insisting on associativity and multilinearity.
    From this definition it follows that:
    aÙb = bÙa = ab ;
    akÙbl = (-1)klblÙak    ;    
    aÙb = ½(ab - ba) º a×b    ;     aÙbk = ½(abk + (-1)kbka) = ½(abk + bk#a)    ;     bkÙa = (-1)kaÙbk
    a1Ùa2Ù...ak = k!-1 åij..meij..m ai aj... am     summing over all k! permutations of {1,2,..k} .
    (aÙb)2   =   (a¿b)2 - (a2)(b2)   =   -a2b2 sin(q)     where q is angle subtended by a and b
[ Proof :  (aÙb)2 = -(aÙb)(bÙa) = -(ab-a.b)(ba-b.a) = -abba+(a.b)(ab+ba)-(a.b)2 = -a2b2 + 2(a.b)2 - (a.b)2  .]
    (a1Ùa2Ù...ak)2 = (-1)½k(k-1) (k! Volume(k-simplex of points 0,a1,a2,...ak))2 = (-1)½k(k-1) (Volume(parallelepiped with edge vectors a1,a2,...ak))2
    akÙak=0 is true for single proper blade ak but not for general k-vectors when k>1. Note that 0-blades (scalars) have aÙa=a2.
aÙb for Â3
a
1  e1  e2  e3   e23e31e12 e123
1 1e1e2e3 e23e31e12 e123
e1 e10-e12e31 e12300 0
e2 e2e120-e23 0e1230 0
b e3 e3-e31e230 00e123 0
e23 e23e12300 0000
e31 e310e1230 0000
e12 e1200-e123 0000
e123 e123000 0000


The "thin" outer product
    The thin outter product is here defined and denoted by by
    a^b º aÙb - a<0> b - b<0> a so that a^b = b^a = 0.
    It has the same multiplication table as Ù but with the scalar row and column zeroed. We make no use of it in this work.

The contractive inner product

    We define the contractive inner product (aka. Lounesto inner product) (¿ or û ) by
    ak¿bl º ( akbl)<l-k>       for l³k    ,    0  else   
where ak,bl are blades of any grade; and thence extending over multivectors by insisting on bilinearity.
    ¿ is neither associative nor commutative (symmetric). In particular, (a¿a)=a2 so  (a¿a)¿b=a2 b but a¿(a¿b) = 0 .
    For k-vectors with k>1, contraction with a 1-vector a corresponds to orthogonal projection into subspace a* so
a¿b is the "component factor" of blade b perpendicular to 1-vector a   .

    We have the following properties:

a¿b for Â3
a
1  e1  e2  e3   e23e31e12 e123
1 1000 000 0
e1 e1100 0000
e2 e2010 0000
be3 e3001 0000
e23 e230e3-e2 -1000
e31 e31-e30e1 0-100
e12 e12e2-e10 00-10
e123 e123e23e31e12 -e1-e2-e3 -1

    ¿ is sometimes known as left-contraction or onto-contraction as opposed to the right- or by-contraction defined by
    ak ë bm º ( akbm)<k-m>       for k³m ; 0 else
or equivalently by aëb = (a§¿b§)§ where § is the reverse operator defined below.

The semi-commutative inner product
    Some authors favour the semi-symmetric or semi-commutative inner product (aka. Hestenes inner product) (.) defined by
    a.bk º bk.a º 0 where bk is any blade  ;  ak.bm º ( akbm)<|k-m|> where ak,bm are proper (nonscalar) blades;
and thence extending over multivectors by inisiting on bilinearity. The result is neither associative nor commutative ("symmetric").  It is "semi-symmetric" in that aj.bk = (-1)j(k-j)bk.aj for pure multivectors aj,bk with j£k.
    Note that scalars (0-blades) a,b satisfy aÙb = ab ; a¿b = a.b = 0 so we can think of scalars as "self-orthogonal".
    We obtain the identities


    For any two vectors, a.b = a¿b is equal to the conventional vector "dot" product.
a.b for Â3
a
1  e1  e2  e3   e23 e31 e12  e123
1 0000 000 0
e1 0100 0e3-e2 e23
e2 0010 -e30e1 e31
b e3 0001 e2-e10 e12
e23 00e3-e2 -100 -e1
e31 0-e30 e1 0-10 -e2
e12 0e2-e10 00-1 -e3
e123 0 e23 e31 e12 -e1-e2-e3 -1

    We will use ¿ in preference to . whenever possible here. a¿b = a.b " 1-vector a if b<0>=0 so in many equations ¿ and . are interchangeable. However, only . is dual to Ù in the sense that a.(bi)   =   (aÙb)i    ;     ie. aÙ(bi)   =   (a.b)i ; or equivalently a.(b*) = (aÙb)* ; aÙ(b*) = (a.b)* ;
    a.b = (aÙ(bi-1))i    ;     aÙb = (a.(bi-1))i    for