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 any 1-vector a and multivector b .
    In particular aÙ(b.c) = (a.(bÙ(ci-1)))i , ie. (aÙ(b.c))* = a.(bÙ(c*)) .

    We cannot replace . by ¿ in these fundamental duality equatons.

    In Â3 we have a×b = (aÙb)i-1 ; a×(b×c) = (aÙ((bÙc)i-1))i-1 = (a.c)b - (a.b)c ; and aÙbÙc = (a.(b×c))i where × denotes the traditional Â3 vector product.

The "fatdot" inner product
    A variation of the sem-commutative inner product defined by   ak·bm º ( akbm)<|k-m|>     k,m ³ 0.
    This is sometimes known as the modified Hestenes or dot product but we will call it the fatdot product here to avoid confusion with the traditional (Hestenes) inner product .
    The multiplication table for · is the same as that for . except with regard to scalars. The "scalar" row and column are filled as for Ù , ie. according to 1·a  = a·1 = a    .
    We can think of · as "abrogating" the "scalar handling" from Ù, reducing it to the "thin" outter product ^. Thus · and ^ provide an alternate "decomposition" of the geometric product to . and Ù which may be fruitful in some contexts but will not be exploited here.

The forced Euclidean contractive inner product
    The forced Euclidean contractive inner product ¿+ "overrides" the signatures of the vectors on which it operates. In a Euclidean space ÂN , ¿+ = ¿ .   In Âp,q , ¿+ is defined with regard to an orthonormal basis {ei} . We take 1¿+a º a and  ei¿+ej º |ei¿ej| and extend ¿+ bilinearly.
    The tabulation of ¿+ with regard to the extended (multivector) basis for Âp,q is thus the tabulation for ¿ for Âp+q.

    Although frame dependant, ¿+ is a useful product computationally, since one can sometimes simply "lift" a problem (such as computing meets and joins) in a nonEuclidean space into Euclidean space and solve it there.
    We define the frame-dependant forced Euclidean geometric product by extending a¨+b º a¿+b + aÙb over Âp,q linearly and asscoiatively so that the tabulation of ¨+ for a given basis for Âp,q is the tabulation for ¨ for Âp+q.

    We will later consider higher dimensional embeddings of UN obtained by adding "extension" dimensions e+ and e- to a basis and in such cases will often wish to retain the negative signature of the extender while forcing UN Euclidean. We represent the unextended forced Euclidean contractive product by ¿(+) and the unextended forced Euclidean geometeric product by ¨(+) .

Commutator product
    The antisymmetric commutator or product is defined by a×b º ½(ab-ba). It is our first non-partial-geometric product, potentially containing blades not present in ab. [  aka. , without the ½ factor, as the Lie product ]
    × is nonassociative, and often represents the appropriate generalisation of the _Real3 vector product ×.
    We have

    If a and b have a^=a and b^=b or a^-a and b^=-b for reversing conjugation ^ then (a×b)^ = -a×b . Thus the commutator product of two same grade blades has grade <2;6;10;...>.

    We have 23N frame-dependant commutation coefficients Cij...kl... lm... º eij.. * (ekl..×elm...) which can be regarded as measuring the nonorthogonality of the frame.

    With (a×) denoting the operator v ® a×v, we have (a×)(b×)v = ½(a×)(bv-vb) = ¼(abv +vba - avb - bva) .
    Whence ((a×)×(b×))v = ¼((a×b)v + v(b×a)) =  ½(a×b)×v .
a×b for Â3
a
1  e1  e2  e3   e23 e31 e12  e123
1 0000 000 0
e1 00-e12e31 0e3-e2 0
e2 0e120-e23 -e30e1 0
b e3 0-e31e230 e2-e10 0
e23 00e3-e2 0 e12-e31 0
e31 0-e30 e1 -e120 e23 0
e12 0e2-e10  e31-e230 0
e123 0000 000 0

    We extend this definiton of × to give commutator "products" of operators and functions. If ¦(a) and g(a) are multivector-valued functions of multivectors we define (¦×g)(a) º ½(¦(g(a)) - g(¦(a)) º ½(¦g(a) - g¦(a)) .

    We also define ¦×(a,b) º ¦(a)צ(b) .

    We define the k-fold commutator product by
    a×kb º a×(a×(....(a×(a×b))..)) = (-1)k ((...(b×a)×a)×...)a     where there are k a's and ×'s in the sequence.
    a×0b = b ;     a×1b = ½(ab-ba) ;     a×2b = ¼(a2b-2aba+ba2) ;     ... ;     a×kb = 2-kåi=0k  (-1)k kCi ak-ibai .

AntiCommutator product
    The symmetric anticommutator product is defined by a~b º ½(ab+ba).

    The geometric product decomposes naturally as ab = a×b + a~b . Provided a2 commutes with b and b2 commutes with a, then a and b both commute with a~b and anticommute with a×b. Further a×b commutes with a~b.
    We have


    Thus for scalar squared a and b,  (a×b)2 and (a~b)2 differ only in the scalar part.

    The anticommutator product of two same grade blades has grade <4;8;12;...>.

Scalar product
    The commutative (symmetric) scalar product is defined by a*b º (ab)<0> = (ab)¿1 .
    It satisfies ak *bk = ak¿bk .

    Taking the scalar product with 1 corresponds to taking the scalar part a*1 = a<0> = a¿1 .
    We have the powerful cyclic scalar rule
    (abc)<0> = (cab)<0>     for all multivectors a,b,c

    From a programmers' perspective the scalar product can be regarded both as a multivector-valued product returning a 0-grade (ie. scalar valued) multivector, and as a real-valued function of a multivector. For code efficiency it is frequently preferable to impliment it returning a real rather than a multivector type.

Scalar-Pseudoscalar product
    The commutative scalar-pseudoscalar product is defined by a*b º (ab)<0,N> = (ab)¿(1+i) .
    For N odd we will also refer to * as the central product since it is central-valued and we have the vastly powerful cyclic scalar-pseudoscalar rule (abc)<0;N> = (cab)<0;N> .
    For even N, the "central product" coincides with * rather than *.

Inversive product
    a*b º (a¿b) / (|a||b|)    .
    Thus a*b = cos(qÐ(a , b))     where the magnitude |a| is as defined below and qÐ(a,b) denotes "angle subtended by" 1-vectors a and b.

Delta products
    The greater delta product D (aka. disjoint) is a nonbilinear restrictive product returning the highest grade nonvanishing component of the geometric product, or zero if the geometric product is zero. This can be computed, albeit somewhat inefficiently, by calculating the geometric product keeping track of, or subsequently seeking, the highest grade attained by the blades in the product, and then restricting the product to only this grade. It is most commonly applied to blades and spans the "difference" between them, so for example ((e1+e2)Ùe34) D e235 = -e1245.   It is profoundly useful in constructing meets and joins.

    Of course, calculating a delta product can present us with dilemas when small coordiante values are encountered. If a product ab has a large scalar part and some comparatively tiny 2-blade coordinates, is the highest nonvanishing" grade zero or two? Are the small 2-vector coordinates a genuine geometrical artifact, or just "failed zeroes" arising from finite precision computations? What magnitides may we discard? Our choice will substantively effect the grade and magnitude of aDb and our computations risk becoming more art than science. Nonetheless, the delta product is profoundly useful since in many cases in can be computed unambiguously and is then fundamental in constructing  meets,  joints, and disjoints as described later.

    We also have the lesser delta product returning the nonzero component of minimal grade adb = (ab)Min .

Conjugative Products
    For every multivector conjugation ^ there are two associated restricted geometric products. One restricting to the "^-real" blades (b^ = b) , and one to the "^-imaginary" blades with b^=-b.

Pure Product Rule
    akbl = (akbl)<|k-l|> + (akbl)<|k-l|+2> + .. + (akbl)<k+l>   =   åm=0½(k+l-|k-l|)    (akbl)<|k-l|+2m>
hence the geometric product of two pure multivectors is either odd or even (as defined under Involution below) according as integer k-l is odd or even.
[ Proof :  True for k=1 and then by induction on k for single k-blade ak. Result follows by distributivity.  .]

The Intersective Product
    The intersective product is a not a restricted geometric product and is frame dependant. It picks out the "shared axies" eg. e3Çe123=e3. In programming terms, while the geometeric product is based on the exclusive or (XOR) of the bitwise ennumeration indices, the intersective product is based on their logical AND. We bring in the sign changes due to commutations ( e2Çe12 = -e2) but not the signatures.

    We will later encounter the frame-independant meet operation aÇb and while we do have e[.j.]Ç[.k.]) = e[.j.]Ç[.k.]) = ±e[.j AND k.] we will see that Ç is not distributive accorss + for same grade blades. (e1+e2)Çe1 = 0 while (e1+e2)Çe1 = e1 .

Precedence Conventions
    In much of the literature, precendence conventions are adopted for multivector products with outter products taking precedence over inner products which in turn take precedence over geometric products so that, for example, a.bcÙd.e denotes (a.b)((cÙd).e) . We will not rely on such conventions, favouring explicit brackets with regard to product symbol scope throughout this work, in acordance with programmer morality.

Sierpinski (<1K) Multivector Operations
    We will define a number of right-operators §, , ^, 2 that act on multivectors to return multivectors. For all of these, we adopt the precedence convention that they apply leftwards prior to all products. Thus xy§ denotes x(y§) rather than (xy)§ ; xy2z denotes x(y2)z ; and so forth.

    We introduce and adopt the "Bellian notation" a^(b) º (a)b(a^) º aba^    . If a^^=a we can represent (a^)ba by a^^(b).
    To minimise notational ambiguities, if we have a "point-dependant" multivector  ap we will sometimes put the positional suffix to the right of the subscripted operator symbol as, for example, a§p(b) º (ap)§(b) º apbap§ .

Lifts
    For a given e- in Âp,q with q>0 we can define a e--lift Lifte-: Âp,q ® Âp+1,q-1 taking ae- + b1e1+.. in Âp,q to ae-' + b1e1'+... in Âp+1,q-1 where e-', e1',e2', is a basis for Âp+1,q-1 with ei'¿ej' = ei¿ej but e-'2 = -e-2. We think of moving to the "same" multivector in a variant alegbra in which e- has positive signature. When q=1 (or when any other negative signatured basis vectors are the extendors of a higher dimensional embedding) we refer to a Euclidean Lift. Obviously we have Lifte--1 :  Âp+1,q-1 ®  Âp,q moving back again and we can construct e--dependant operations on Âp,q multivectors by lifting them into Âp+1,q-1, applying an operation F: Âp+1,q-1 ® Âp+1,q-1 , and then lifting back to Âp,q. Formally, we compute Lifte--1(F( Lifte-(a))) . Informally, we simply treat e- as having positive signature throughout our computations.

Conjugations
    A conjugation flips the signs of the coefficients of specific blades of a multivector. For any conjugation ^ we have a^^=a     " a which we can write as ^2=1.
    We say a conjugation ^ is a reversing conjugation (aka. an anti-automorphism) if (ab)^ = (b^)(a^) .
    We say a conjugation ^ is a nonreversing conjugation (aka. an automorphism) if (ab)^ = (a^)(b^) .
    We say a conjugation is semireversing if it is neither reversing nor nonreversing.
    A reversing or nonreversing conjugation is completely specifed by its action on scalars and 1-vectors and obeys (ak)^ = (a^)k for integer k and thus satisfies the "exponent hopping" rule (ea)^  = ea^ or a^ = a^ " a where exponentiation is as defined below.
    All conjugations of interest here preserve 0-blades (scalars), save the negation conjugation.
    Conjugations are often best implemented by the direct sign flipping of appropriate components in the given basis rather than a "formal" product evalution.
    We will see that there are four fundamental conjugations, one of which is frame-dependant, from which sixteen composite conjugations may be constructed. These provide 112 distinct  bilinear multivector products in addition to ¿, Ù and so forth such as a§b or a#b . If we also comsider products such as a§Ùb§ for products ¿, ë, Ù, *, and × as well as geometric product we obtain 6×112 bilinear multivector products!

Identity
    The identity conjugation has no effect, leaving all blades unaltered. We can denote it by operator 1 or as conjugations 1  or, better,  = .
    1(a) º a1 º a= º a     " a .
    We could represent aba by a1(b) since a1=a but this is notationally dangerous since we often use 1 as a suffix so aba º a=(b) is preferable.

Negation
    The negation conjugation negates every blade. It is the only conjugation that negates scalars. We denote the negation of a by -a rather than by a- . Negation is neither reversing nor nonreversing, with (-a)(-b)=ab.

Reverse Conjugation
    We define a to be a k-versor if it is the geometric product of k nonzero 1-vectors a=a1a2...ak. If k is even we say a is an even versor.
    If a1,a2,..ak are mutally orthogonal then a1a2..ak = a1Ùa2Ù..ak and so, with regard to vectors known to be orthogonal, versors are equivalent to blades.

    We call a§ = ak...a2a1 the reverse conjugation of versor a and to accomodate general multivectors we define the reverse of k-blade bk=b1Ùb2Ù...bk by
    bk§ º (-1)½ (k-1)kbk =bkÙ...Ùb2Ùb1
and can extend § to general a as the sum of the reversals of its component blades. § thus "reverses" both versors and blades.
    Since all k-blades reverse with the same sign change (regardless of signatures), we have
    a§ = åk=0N a<k>§ = åk=0N (-1)½ (k-1)ka<k>
making reversals very simple to compute. We avoid, in particular, the need to factorise.

    The sign sequence (-1)½ (k-1)k     k³0        = (+,+,-,-, +,+,-,-, +,+,-,- .....) is fundamental in multivector analysis. For N<6, only 2-vectors and 3-vectors change sign under reversal. For N=1,4,5,8,9,12,13,...  we have i§=i.
    We write a<+§> for the components of a unchanged by §, and a<-§> for the those components which change sign under §. We then have
    a§ = a<+§> - a<-§>

    In a Euclidean multivector space ÂN, the reversed multivector a§ corresponds to the transpose AT of the matrix representation of a.

    Clearly (ab)§ = b§a§ so § is a reversing conjugation. For any reversing conjugation ^ we have (a§)^ = (a^)§ which we can consider as ^ "commuting" with § and write as ^×§=0 .

    In the biquaternian Â3 model, reverse is known as complex conjugation. If b=a0+b0i +(a1+b1i)e1 +(a2+b2i)e2 +(a3+b3i)e3 we have b§ = (a0-b0i) +(a1-b1i)e1 +(a2-b2i)e2 +(a3-b3i)e3 .

    b(b§) =     (a0+a1e1+a2e2+a3e3)2 + (b0+b1e1+b2e2+b3e3)2 = (a02+a12+a22+a32+ + b02+b12+b22+b32) + e12(a0a1+b0b1) + e2(..) + e3(..)

Rotors
    A rotor is an even multivector that satisfies  aa§ = |a|2 ¹ 0 (a unit rotor if |a|=1 ) . If a rotor is also a 2k-versor we call it a k-rotor.

Involution Conjugation
    Somewhat akin to § is the main involution conjugation defined by
     a# º åk=0N (-1)ka<k> or, equivalently, a# º a<+> - a<-> .  
    We have (a#)# = a.
    We say a multivector a is even if a# = a = a<+>, odd if a# = -a = -a<->, and mixed otherwise.
    For l-blade bl ,     aÙbl = ½(abl + bl#a)     ;   a¿bl = ½(abl - bl#a).
    (ab)# = (a#)(b#) so # is a nonreversing conjugation.

Clifford Conjugation

    Clifford conjugation ©   =   §# is the combination of reverse and main involution a© º (a§)# = (a#)§ so that
    a<k>© = (-1)½(k-1)k + ka<k> = (-1)½(k+1)k + ka<k>
    It negates grades 1,2,5,6,9,10,13....   .
    We will seldom use the © symbol, favouring the more explicit §#.

    In the biquaternian Â3 representation
    (a0+b0i) +(a1+b1i)e1 +(a2+b2i)e2 +(a3+b3i)e3   =   a0 + a1e1+a2e2+a3e3 + b1e23+b2e31+b3e12 + b0e123 the Clifford conjuation is
    ((a0+b0i) +(a1+b1i)e1 +(a2+b2i)e2 +(a3+b3i)e3)§#   =   (a0+b0i) -(a1+b1i)e1 -(a2+b2i)e2 -(a3+b3i)e3 and is known as vector conjugation.
    Since siD=- si while 1D=1 , Â3 Clifford conjugation corresponds to the conventional matrix adjoint D in the 2×2 complex matrix representation. Thus b(b§#) = (a0+b0i)2 -(a1+b1i)2 -(a2+b2i)2 - (a3+b3i)2 is the conventional (complex number) determinant of the 2×2 complex matrix representation of b.

    We will here refer to the restrictive products a©+b º (ab)<1,2,5,6,9,10,..> and a©-b º (ab)<0,3,4,7,8,...> as the real Clifford, and imaginary Clifford product.

Mitian Conjugation

    This nonreversing conjugation is specific to a given orthonormal frame. All our multivector operations thus far have been coordinate-invarient but, in non-Euclidean cases, this one is not. Suppose we have an orthonormal frame { ei} for Âp,q,0  with  ei for p < i £ N having negative signature. We define (and here name) the nonreversing mitian conjugation of b by
    b§ º e(p+1)..N§#(b) º e(p+1)..N b eN..(p+1) so that, in particular,   1§ =1 ; ei§ = (-1)qei     i£p     ;      (-1)q-1ei     i>p , negating only the positive signature basis 1-vectors for odd q; and only the negative signature basis 1-vectors for even q.
    § of a basis blade thus represents the (anti)commution of that blade with the particular negative-space spanning pseudoscalar e(p+1)..N.
    Unlike other conjugations which flip all ak blades the same way, a§ ¹ ± a for general 1-vector a.
    The mitian conjgation is the identity conjugation in a Eucliean space. In a nonEucliean space it is of principle interest in constructing the more commonly seen Hermitian conjugation beloved of physicists.
    From a programming perspective, negation, involution, reversion, and mitian conjugation are the four fundamental conjugations from which all other spacially invarient reversing or nonreversing conjugations may be constructed.    

Hermitian Conjugation

    Like mitian conjugation, the reversing Hermitian conjugation (aka. conjugation) is frame-dependant.
    b º b§§#   =   b§#§   =   b#§§   =   e(p+1)..N§#(b§#) º e(p+1)..N b§# eN..(p+1)     so that, in particular,
    1 =1 ; ei = (-1)q+1ei     i£p     ;     (-1)qei     i>p
    is thus a reversing conjugation that negates the basis 1-vectors having negative signature when q is odd, providing the inverse frame defined below with ei = ei = ei-1. A general vector v = åi=1N viei then has v = åi=1N viei and hence (a)¿b = a¿(b) = a¿+b .
    aa ³ 0 is then the forced Euclidean length of a (zero only for a=0).
    In a Euclidean space, a = §# so Euclidean Hermitian cojugation is Clifford conjugation.

    Nullvector e-+e1 where e1¿e-=0 has (e-+e1)(e-+e1)=2 + e1Ùe- for Hermitian conjugation with respect to e-. Setting unit minussquare 1-vector e-' = (e-±ae2)(1-a2) for aÎ(0,1) we have e- + e1 = (1-a2)½e-' -/+ ae2 + e1 and (e-+e1)'¿(e-+e1) still equals 2 where ' is Hermitian conjugation with respect to e-'.
    However, setting minussquare   e-' = (e-±ae1)(1-a2) for aÎ(0,1) we have e- + e1 = (1-a2)½e-' + (1-/+a)e1 and (e-+e1)'(e-+e1)   =    2(1-/+a) + (1-a2)(1-/+a2)e1Ùe-'   =    2(1-/+a) + (1-a2)½(1-/+a2)e1Ùe- where ' is Hermitian conjugation with respect to e-'.

    This shows that by choosing frames appropriately we can make the positive Hermitian magnitude of a given null vector as close to zero as we like but cannot acheive more than the forced Euclidean magnitude.
      Likewise the unit 1-vector v=2e1+e- has frame invariant magnitude   |v| = |v¿v|½ = 3½   but its e--relative modulus |v|+ =Ö(4+1)=5½ is frame specific . With regard to an alternate frame {e+'=3v , e-'=(e+e-)e+'} v is expressed as 3½e+' and attains minimal modulus 3½.
    Thus the Hermitian modulus |aa|½ is frame dependant even for null a.

    In the matrix representations for Â1,1 and Â3,1 previously described,   Hermitian conjugation corresponds to matrix transpose .
    In the C4×4 representation for Â4,1, it is provided by the complex conjugated transpose AT^ .

    We say a multivector is Hermitian if a = a with regard to a particular frame of interest. In a Minkowski space ÂN-1,1 this coresponds to e4¿a =0 where e4 is the negative signatured frame vector.
    We say a multivector is unitary if a = a-1 in a given particular frame of interest. Given a central (all-commuting) i with i2=-1 and i=-i,  any unitary multivector can be expressed as (iH) º eiH where H is Hermitian.

Modulatory Conjugation
    We define the reversing modulatory conjugation a+ of a Âp,q mutivector to be for odd q and §§   =   # for even q so that it always negates the negative signatured basis 1-vectors. In a Euclidean space, +   =   § is frame-independant reversion. Our motivation for + is  that ak+ak = 1 for any unit k-blade (ak2=± 1) whose 1-vector components satisfy a§ = ± a;  and (ak+ak)<0> > 0 for all nonzero ak , even when ak2=0 .
[ Proof : Suppose ak has i component 1-vectors of negative signature and k-i of positive signature. Then for odd q
    akak   =   e(p+1)..N ak§# eN..(p+1) ak   =   e(p+1)..N (-1)kak§ak§  eN..(p+1)
      =   e(p+1)..N (-1)k+(k-i)ak§ak eN..(p+1)   =   e(p+1)..N (-1)k+(k-i)+i eN..(p+1)   =   1 ;
    while  even q we have
    ak§§ak   =   e(p+1)..N ak§ eN..(p+1) ak   =   e(p+1)..N (-1)iak§ak eN..(p+1)   =   e(p+1)..N (-1)2i eN..(p+1)   =   1 .  .]

    Thus (a+a)<0>   =   åk=0N  ak+ak   =   åk=0N  |ak§ak|     provides a frame-dependant positive-definite real-valued measure known as the squared modulus of the multivector.

Extension Conjugations
    The extension conjugations arise when we embedd UN in a higher dimensional space by extending a given basis by postulating k further 1-vectors orthogonal to the UN basis, as wil be described later. Extension conjugation [-] is the nonreversing conjugation that negates only the "new" basis 1-vectors, [+] is the nonreversing conjugatuion that negates only the new basis vectors of negative signature.
    By combining the extension conjuation with involution # we create the unextended involution (#) that negates blade b if ¯i(b) is of odd grade where ¯ denotes projection into the UN

Third bit Conjugation
    Involution changes the sign of blades of odd grade. Reverse changes the sign of blades whose grade has the second bit (bit 1) set. Semireversing third bit conjugation negates blades of grade having the third bit set, ie. blades of grade 4,5,6,7, 12,13,14,15, 20,21,... . Clearly we have fourth and fifth and higher bit conjugations for suficiently large N.

Dualed Conjuations
    Any conjugation ^ induces a dualled conjuation a^* º (ai-1)^i. Unlike undualled conjuations, the effect of ^* on a k blade depends on N as well as k, but not, note,  on the signature i2.

Conjugation tabulations
Effect of conjgations and other operations on illustrative blades (e42=-1)
Symbol    Name1e1e12e123e4e14e124e1234e12345e123456e1234567k-blade x
§reverse                    ++--+--++--(-1)½k(k-1)x
#involution                 +-+--+-+-+-(-1)kx
§#Clifford            +--+--++--+(-1)½k(k+1)x
§mitian                     +-+-+-+-+-+-e4xe4
Hermitian                  ++---++--++-e4x§#e4
*dual (Â3)-e123-e23e31.......-xe123
*dual (Â3,1)-e1234-e234-e34e4-e234-e23-e31...-xe1234
*dual (Â4,1)-e12345-e2345-e345e45-e2345-e235-e35e51..-xe12345
-1inverse                    ++---++--++x-2 x
2square                    +1+1-1-1-1+1+1-1-1+1+1x2


Possible Implimentation
    All spacially invariant reversing or nonreversing conjugations (conjugations that don't distinguish positive signature basis elements) can be constructed as a combination from -, §, #, and § so we can specify any such conjgation with a 4-bit nybble flag. Conjugation based variations of the geometric product such as a§#b can be ennumerated in a byte (with some redundancy since eg. (-a)(-b) = ab).
    If we wish to also extended embedding conjugations [-] and [+] these becomes 6- and 12-bit flags .

    If we ennumerate the 32 extended basis blades for e1234 then for each of the four primary conjugations we can construct a 32-bit bitmask with 1 in bit i indicating that the blade of index i flips sign under the conjugation. For the 1,e1,e2,e12,e3,e13,e23,e123,e4,e14,... basis ordering with e4 as the only negative signatured basis 1-vector these values are 0xFFFFFFFF for negation, 0x177E7EE8 for reverse, 0x96696996 for involution, and 0x69699696 for mitian. We can construct the flags for composite conjgations by xoring (exclusive-orring) the flags of the contribuory primaries. Hermitian is accordingly 0xE87E81E8 and Clifford 0x8117177E.
    With this ordering, basis blade e[.i.] flips sign under # whenn (i  &  1) ¹ 0 and under § whenn (i  &  2) ¹ 0

Directation
    Directation takes 1-vector a to a if a¿e- < 0 ; to -a if a¿e- > 0 ; or to 0 if a¿e- = 0 , for a given e- with e-2 < 0. It is not a conjuation since (a+b)[] ¹ a[] + b[] in general and it is defined only for 1-vectors . However, [] is frame invarieant in asmuch as any alternate e-' with e-¿e-' < 0 will give the some directation.  

Scalar Measures and Normalising
    There are a surprising number of alternate meaningful "size values" for multivectors.

    Associated with any conjugation ^ we have a scalar measure a^*a = (a^a)<0> of a general multivector a and if this is nonzero we can define ^-normalisation
    a^ º a |(a^a)<0>|     so that a^^*a^ = ± 1 .

Unitisation
      If a2<0>¹0 we define the unitised multivector a= º a |a2<0>| so that ((a=)2)<0> = ± 1.
    A multivector a is said to be unit if (a2)<0> = ± 1.

Magnitude
    We define the real positive scalar magnitude or length of k-vector a<k> by
    |a<k>|   =   |a<k>§¿a<k>|½   =   |a<k>¿a<k>|½   =   |(a<k>2)<0>|½   .
    We here follow Hestenes and Sobczyk and extend to general multivector a as
    |a| º Ö(åk=0N |a<k>|2) .
    Some authors favour |a| º åk=0N |a<k>| which is a fundamentally different measure when applied to mixed grade multivectors.
    The magnitude of a scalar is thus the absolute (unsigned) value of the scalar and the modulus of a Euclidean 1-vector is its length Ö|a2| = Ö|a¿a | as for conventional vector methods.

    In a Euclidean space, only 0 has zero magnitude. In a non Euclidean space a multivector has zero magnitude iff a<i>¿a<i> = 0     i=1,2,..N , ie. a<i> is either 0 or a null i-vector .
    For Euclidean space ÂN, a<k> a<k>§ = | a<k>¿a<k> | and we have
    | a |2 = a*a§ = a§*a = åk=1N (a<k>a<k>§)<0> since a<i>*a<j>§ = 0 for i¹j
    To accomodate negative signatures we have the weaker expression | a |2 = åk=1N |(a<k>a<k>§)<0> | .
    Hence in Euclidean space |aÙb|2 = a2b2 - (a¿b)2 = -(aÙb)2
    For N=3, |aÙb| = |a×b| and |aÙbÙc| = | a.(b×c)| .

    |a+be12|2 = ((a+be12)(a+be12§))¿1 = ((a+be12)(a-be12))¿1 = a2 + b2 so modulus in Â2 + is equivalent to traditional "modulus" of a complex number.
    If a or b is null then |aÙb|2 = (aÙb)2 = (a¿b)2

Conjugated Normalisation
    If (a^a) exists for a particlar conjuation ^ , then we have ^-normalisation a ~^ º (a^s)a satisfying (a ~^)^(a ~^) = 1 . If a particular i has i^i = -1 then provided ^ is reversing or i commutes with a we can form ^-antinormalisation a ~-^ º -ia ~^)   satisfying (a ~-^)^(a ~-^) = -1 . We include the negation to make antinormalisation correspond to dual when i=i.

    If ^ is reversing, (a^_ma(a))^ = a^a so a^a contains only blades preserved by ^. Thus if i^=-i the a^a has no i component.

Normalisation     If (a§a)<0> ¹0 we define the normalised multivector a~ º a§ º a |(a§a)<0>| so that |a§|=1 and a~§*a = ± 1.
    A multivector a is normalised if |a|=1 .
    For non Euclidean spaces, normalisation and unitisation of multivectors are distinct concepts that coincide for pure k-blades.
    This definition neglects the pseudocalar component of a§a and would be typically used in an algebra with i^=-i.     If (a§a)<0> ¹0 we define the normalised multivector a~ º a§ º a |(a§a)<0>| so that |a§|=1 and a~§*a = ± 1.
    A multivector a is normalised if |a|=1 .
    For non Euclidean spaces, normalisation and unitisation of multivectors are distinct concepts that coincide for pure k-blades.
    This definition

Modulus
    We here define the postive real scalar modulus of a multivector as a "forced Euclidean" magnitude. We can only define the modulus with respect to a given orthonormal frame. The modulus is defined by
    |ak|+ º (ak¿+ak)½ º (ak+ak)<0>2
with |a|+ = ( åk=0N |a<k>|+2 )½ .
    The modulus is thus computed by adding the squares of each coordinate |a|+ = Ö åijk..(aijk..)2 when expressed with respect to the favoured extended frame.

    In a Euclidean space, the modulus is equivalent to magnitude and so frame independant. Modulus acts "across grades" in the same way as does the magnitude so often coincides with the traditional "complex modulus"
     |x+iy|+º ((x+iy)(x-iy))½=(x2+y2)½ .
    Geometrically speaking, if we have a multivector of the form a + bbk for some nonnull k-blade bk with bk2<0 then |a + bbk|+ = a2 + b2|bk2| = (a+bbk)(a+bbk)^ where ^ is any conjugation satisfying bk^=-bk.

    No multivector has zero modulus except 0, even in a non-Euclidean space.

Selfscale

    If a2 = la for central (ie. universally commuting) l (typically a scalar or a "complex" scalar-pseudoscalar pair) we say a is a l-selfscaling multivector. We refer to l = |a|s as the selfscale of a and note that if real, it may be negative. Any central multivector is its own selfscale and in particular any scalar a is a selfscaler of selfscale a.
    If a has selfscale l then either a=l or a is non-invertible.
    If a and b are (anti)commuting selfscaling then |ab|s = (-) |a|s|b|s .
    If a<0>¹ 0 then |a|s = a2<0> a<0>-1 and more generally |a|s = (eij..l¿(a2)) (eij..l¿(a))-1 for any blade eij..l present in a.
    All null (a2=0) multivectors are selfscaling with selfscale 0. Selfscaling multivectors of selfscale (-)1 (a2=(-)a) are known as (anti)idempotents.
[ Proof :  a = (a2)a-1  = (la)a-1 Þ a=l so a¹l Þ  !  $ a-1  .]  

    We can extend the definition of selfscale to invertible multivectors.

Scalar-Normalisation
      If a<0>¹0 we define the scalar-normalised multivector a~ º a(a2<0>)-1 so that (a~)<0> = 1.

Maximal-Coordinate-Normalisation
    An easy basis-specific way of "normalising" a general multivector a is to rescale it by a positive multiplier so that its maximal-absolute coordinate a[¥] becomes (close to) ±1. This provides a safe and rapid means of rescaling a multivector to ensure that it is not so large or small as to lead to numerical or stability problems without relying on a more computationally expensive measure that may vanish for particular a.
    It is natural to denote the absolute value of the maximal absolute coordinate |a[¥]| by |a|¥ and refer to it as the basis-specific infinity norm .

Trace
    We here define the frame-invarient scalar real trace of N-D multivector a as 2Na<0> corresponding to the conventional matrix trace (sum of lead diagonal elements) of the 2N×2N matrix representation of a . The complex trace is 2N-1 times the trace of a complex matrix representation. Multiplication by the dimension of the matrix representation concerned ensures the multivector trace of 1 equals the matrix trace of 1.
    Traces thus depend on the dimension of the geometric space the result is considered to "reside in", making the trace of a multivector a somewhat artificial construct based on the more fundamental "scalar part" and "scalar-pseudoscalar part" operators <0> and <0;N>.

Determinant
    The determinant of a multivector is the traditional matrix determinant of a particular 2k×2k matrix representation of interest.
    Det(ab) = Det(a) Det(b) follows from the corresponding matrix result.
    Det(a)= Det(a1)=a2k so Det(-1)= Det(1)=1 and so Det(lb)=±l2k for any unit blade b.
    A multivector a is said to be unimodular if Det(a)=1. A unimodular versor has aa§=a§a=1 .
     Such square matrix represetations can have  or C or Q elements when k<N and we accordingly then have  or C or Q valued determinants. A scalar valued determinant is always provided by the 2N×2N real matrix representation of a multivector a and it is this determinant that we will usually denote denote Det(a).

    If ¦(x)º Ax(A^) has A^A scalar so thet ¦ is a grade-preserving linear transform then we define scalar Det(¦) º (¦(i))* so   Det(¦)2N = (A^A)N

    The complex matrix identity Det(A) = eTrace(ln(A)) has corresponding geometric form Det(a) = (2N-1ln(a))<0;N> given odd N and a minussquare pseudoscalar.

    One way to compute the invese of a multivector is to solve ax=1 as 2N simulataneous linear equations in 2N unknowns, which is possibile iff the determinant of a is non zero.
    An immediate consequence of this, using the mathematical result that the determinant of any matrix having two identical rows is zero, is that mixed multivectors of the form 1+ei are noninvertible. Furthermore (from standard matrix results of the determinant of a product being the product of the determinants) we can deduce that if a is noninvertible, so too are ab and ba for any multivector b.
    If a2=la then either a=l or a is noninvertible, so Det(a)=0 when selfscale |a|s is defined.

Oppositioning
    For every restrictive geometric product ¨ we have a frame-dependant   oppositional difference a¨¦b = åij.. åkl.. ¦(aij..,bkl..) eij..¨ekl.. where ¦ : Â2 ®  is usually a symmetric function.
    Essentially we evalute the restricted geometric product as normal but instead of multiplying the blade weightings we use an alternate symmetric function ¦ : Â2®Â . Though looking somewhat like a product (and programmable by generalising a multivector -product primative) ¨¦ is not usually bilinear.

    A particularly useful oppositional difference is provided by ¨=* ; ¦(a,b) = |a-b| if ab<0 , and 0 else . This yields a measure of how much "sign changing" occurs in the coordinates when moving from a to b, useful when searching for minima or maxima of multivector valued functions and when comparing spot gradients in adaptive refinement integrational techniques.

Inverses and Integer Powers
    We now consider some important multivector-valued functions of multivectors.

Inverse
    We define the inverse or reciprocal of a Î ÂN by a-1a = aa-1 = 1 , if such exists. We say a multivector is noninvertible (aka. singular) if no inverse exists.
    We define the extended inverse of a  Î ÂN to be a-1 if such exists and a otherwise.
    A nonzero 0-vector a has 0-vector inverse a-1 = 1/a. Zero has extended inverse zero.
    A nonnull 1-vector a has 1-vector inverse a-1 = a/a2 . A null vector usually has a distinct 1-vector inverse, eg. (e++e-)-1 = 2(e+-e-).
    For k-versor ak=a1a2...ak ,     ak(ak§) = (ak§)ak = a12a22...ak2 is a 0-vector so we have ak-1 = ak§ / a12a22...ak2 provided a12a22...ak2   ¹ 0.
    But ak§ = (-1)½ k(k-1)ak , so we have relatively rapid computation of versor inverses via ak-1 = (-1)½ k(k-1) (a12a22...ak2)-1 ak
    In particular, the inverse of versor a + b(eiÙej) = ei(aei-1 + bej) is (aei-1 + bej)ei /e12(aei-1 + bej)2 =  (a - b(eiÙej)) / (a2 + b2) for Euclidean contraction.
    Inverse is somewhat like a reversing conjugation in that acting on a single (unit) blade it will at most flip its sign, and (ab)-1 = b-1a-1. However as (a+b)-1 ¹ a-1 + b-1 in general and a-1 may be undefined inverse is decidely not a conjugation.

    If a^a is easily invertible for a particular conjugation ^ then a-1 = (a^a)-1 a^  provides a comparatively efficient inverse computation.
    Further, if ^ is reversing or nonreversing then the existance of a-1 implies the existantance of (a^)-1 = (a-1)^ and hence that of (a^a)-1 = a-1(a^)-1 .
    Thus we can determine the invertibility of a by examination of a^a for any reversing or nonreversing conjgation ^ , and may also be able to find a-1 by consideration of a^a for semireversing ^.
    Similar arguments hold for aa^ with a-1 = a^ (aa^)-1

     For N=3 (any signatures), Clifford conjugation ^ = §# is suitable since a(a§#) =   (a(a§#))<0;N> is a scalar-pseudoscalar pair and so easily invertible when nonsingular. This method is known as the Lounesto Inverse.
    An even multivector a has a§#a = a§a of grade <0,4,8,12,...> so, since for N£5 any 4-vector is a 4-blade, we can easily invert nonsingular even multivectors when N£5.
    More generally a^a   =   a<^+>2 - a<^->2 + 2a<^->×a<^+> and we can remove central grades from the commutator product. Thus for ^ = #§ we have
    a#§a   =   a<0,3,4,7,8,..>2 - a<1,2,5,6,9...>2 + 2a<1,2,5,6,9..>×a<3,4,7,8,..>     with the commutator product term vanishing for N£3.
    For even a and N=5 we have a#§a   =   a§a   =   a<0,4>2 - a<2>2 + 2a<2>×a<4> .

    If a and b commute then (a+b)(a-b) = a2 - b2 so that (a+b)-1 = (a-b)(a2 - b2)-1 if such exists. If a and b anticommute we have (a+b)2 = a2 + b2 so that (a+b)-1 = (a+b)(a2 + b2)-1 if such exists.

    The problem of inverting a multivector can be recast into the problem of finding the matrix inverse of its matrix representation, but while theis may allow exploitation of existing code libraries, it is a brute force approach. Spotting whether a^a for a general exteneded coordinate representation a is itself invertible typically involves deciding whether tiny higher grade components can be safely neglected as "failed zeroes", so calculating inverses of multivectors is often not as numerically unambiguous as we would like.

Conjugated Inverses

    Move generally, for a given conjugation ^ each multivector a may have a ^-inverse a-^ defined by (a-^)^a=1.
    Since a left (geometric) inverse is also a right-inverse we also have a(a-^)=1.
    If ^ is reversing or nonreversing we have a^a-^ = a-^a^ = 1 .

    a^a-^=1 while if ^ is nonreversing a-^a^ = 1 .

Conjugated Roots
    We define the ^- conjugated root a^½ to solve (a^½ )^(a^½ ) = 1 . The geomtric square root ½ is the identity-conjugated root.  If i^ = -i, we can multiply a^½ by an arbitary phase factor (qi) .

Exponentials and Logarithms


Integer Powers
    The geometric square of multivector a is a2 º aa .
    We can define the kth power of a multivector for integer k in the obvious way by defining
    a0 = 1 ; ak = a(ak-1)       k > 0 .
    a-k = (ak)-1       k > 0     provided inverse (ak)-1 exists.
    We say a multivector is squarepure if its square is a pure scalar. We say it is nilpotent or null if a2=0. Pure scalars and 1-vectors are squarepure. General bivectors are squarepure only for N£3. Pure ÂN bivectors square to negative scalars for N£3 but for N>3 b22 can have 4-vector components.

    If ab=ba=0 then (a+b)k = ak + bk for k>0.

Exponential
    We define the exponential of multivector a as ea º åi=0¥  i!-1 ai .
    ea is thus the traditional scalar exponential function when acting on scalars.
    The notation ea is frequently somewhat awkward for our purposes, the superscripting is inconvenient and the letter "e" is extensively used to denote frame vectors and electron charges. We will here move freely between it and the alternate notation a , where symbol acts leftwards as abc º a(b)c º a(eb)c like a conjugation or power operator . Thus we have
    a º ea   º åi=0¥ (i!)-1 ai . [  Note that the symbol [ ] may not print correctly from some browsers ]  

    We denote a-↑ º (-a) = (a)-1 and observe that if a^=-a then a-↑ = a^ = a^ .

    Regardless of the magnitude of the coordinates of a, the i!-1 becomes small so rapidly with i that the infinite summation is convergent and in practice, typically  only a few dozen terms are necessary to compute a within a given error tolerance. Thus the "brute force" summation approach is always avaliable when computing exponentials, if only as a last resort, and a thus exists and is computable to within an arbitary accuracy. This may be compuationally expensive however, since for example K for large positive scalar K requires i > K for i! to dominate Ki. For large |K| ,  i!-1Ki can become uncomfortably large while i£K.  

    It is natural to decompose
    a =  cosh(a) +  sinh(a)     where
     cosh(a) º ½(a + (-a)) = åi=0¥ (2i)!-1 a2i and
     sinh(a) º ½(a - (-a)) = åi=0¥ (2i+1)!-1 a2i+1

    If b commutes with a then it also commutes with (la) for any l that commutes with a and b; while if b anticommutes with a but commutes with l we have b(la) = (-la)b = ((la))-1b.
    The "exponent hopping rule" (ea)^  = ea^     " a ie. (a)^ = (a^) " a for a reversing conjugation ^ can be written as ^ = ^ .
    For any puresquare multivector [  a2 = ±|a|2 ] we have
a = ea = cos(|a|) + a~ sin(|a|) if a2 < 0 ;
 cosh(|a|) + a~ sinh(|a|) if a2 > 0 ;
1+aif a2 = 0.

    If a and b commute then so do a and b and (a+b) = a b (with the coefficient of aibj given by (i+j)!-1 i+jCi = i!-1 j!-1 ) but this is not generally true (ie. ea+b ¹ eaeb in general ).

    If a and b anticommute we have:

    More generally we have a2 = a2 for central a giving (la)   =   ( 1 + a2½l2 + ... ) + (l + a2l33!-1 + ...)a   =    cosh(al) + a-1  sinh(al)a     where  cosh(x) º ½(x + (-x)) ;  sinh(x) º ½(x - (-x)) are the traditional complex hyperbolic functions if i2=-1.

    In particular, for unit multivector a , (fa) (ya) = ((f+y)a) = (f+y) a for any central y,f.

    We have a geometric form of De Moivre's formula ((a))k = (ak) for integer k [ Usually written (eiq)k = e(iqk) ]

    (d/df) (laf)   =   la(laf) .
    If a2=-1 then (d/df) (laf)   =   l(a(lf+p/2)) .
    Whenever i2 = -1 we have a multivector version of Euler's equation:     (ip) º eip = -1 .
    Also eipa=a<+>eip+ a<->e-ip .

    We have (la-1(b)) º (laba-1)   =   a(lb)a-1 º a-1((lb))     " b ,invertible a, and central l and the operator identity
    (la)-1   =   1 + (l2-1)a-1 .

    In ÂN for odd N, scalar and pseudoscalar additive combinations are central (commute with everything) and so "factor out" in exponentiations. Â3 multivector b<0,3> acts as a "complex" (aka. part "imaginary") scalar if we identify i with e123. We  will write it as b<0,3> to emphasise this complex scalar context. Similarly Â3 multivector b<1,2> acts as a "complex" (part "imaginary") 3D 1-vector (b1+b23i)e1 + (b2-b31i)e2 + (b3+b12i)e3 . which we denote by b<1,2> to emphasise this complex 3D 1-vector context. Since b<0,3> commutes with complex b<1,2>, exponential eb factors as
    eb = eb<0,3> eb<1,2> = eb<0,3>(  cosh(|b<1,2>|) + sinh(|b<1,2>|)b<1,2>~)     whenever complex scalar |b<1,2>|ºÖ( (a1+ib1)2+ (a2+ib2)2+ (a3+ib3)2) is nonzero. We also then have the useful biquaternian formula
    eb = ½(e(b<0,3>+|b<1,2>|)(1+b<1,2>~) + e(b<0,3>-|b<1,2>|)(1-b<1,2>~)) ; and when b<1,2>2=0 we have eb = eb<0,3>(1+b<1,2>) .

Baker-Campbell-Hausdorf formulae

    When a and b do not commute, evaluating (a+b) is more complicated.
    Recalling the k-fold commutator a×kb º a×(a×(....×(a×b))...)   = 2-kåi=0k  (-1)k kCi ak-ibai ,     we have a geometric version of the Baker-Campbell-Hausdorf formula
    (a)b = (åk=0¥ 2k(k!)-1 a×kb) a     [  The 2k factors arise from the ½ in our defintion of × ]
    If a×b commutes with both a and b then ab   =   (a+b) (a×b)   =   (a×b) (a+b)     giving the BCH exponent commuting rule     ba   =   ab (2b×a) .
    However, a×b is more likely to anticommute with a and b, as it does whenever a2 commutes with b and b2 commutes with a.

Exponentiating Products

    If a2 commutes with b and b2 commutes with a then a×b commutes with a~b and so since ab= a×b + a~b we have
     (ab)   =   (a×b) (a~b) .

Exponentiating Idempotents

    If b2 = lb for central l then (ab) = 1 + l-1((la)-1)b     and so when b2=±b we have (ab) = 1 ± ((±a)-1)b .
    Inparticular, setting b=½(1±u) with u2=1 so that b2=b, we have (a½(1±u))   =   1 + (a-1)½(1±u)

Exponentiating Annihilators

    If ab=ba=0 then (a+b) = ab = a + b - 1 .
    In particular, if u2=1 so that (1+u)(1-u)=0 and c,d and u commute with eachother we have
    (c½(1+u) + d½(1-u))   =   c½(1+u)  + d½(1+u)
[ Proof :   Exploiting (c½(1±u))   =   1 + (c-1)½(1±u) we have
    (c½(1+u)) + (d½(1-u)) - 1   =   1 + (c-1)½(1+u) + 1 + (d-1)½(1-u) - 1  .]
   

Exterior Exponential
    We also have the exterior exponential or outter exponential eÙa º åi=0¥ aÙi (i !)-1     where aÙi º aÙaÙ....Ùa , there being i terms in the outter product. For any pure (non-scalar) blade aÙi = 0 for i>1 and for mixed multivectors having zero scalar part,  eÙa is a strictly finite summation having at most N terms . For bivector a decomposing as a sum of j 2-blades a = a1+a2+..+aj we have eÙa = (1+a1)(1+a2)...(1+aj) which is invertible if ai ¹ 1 for i=1,2,..j.

Logarithm
    The geometric logarithm of a multivector b is a multivector ln(b) º b satisfying (b) = b , when such exists. It is undefined when such does not exist. Geometric logarithms are not uniquely defined unless we specify a minimisation of some kind to provide a principle logarithm, and even then an ambiguity may persist. For any multivector i with i2=-1 that commutes with b we have alternative logarithms b ±2kpi for any intger k, each of which will generate a different set of "fractional powers" of b. Thus we must always think of having a logarithm for b rather than the logarithm of b.

    If we have a logarithm of a multivector then we can easily compute arbitary powers of it (including its unique inverse and particular square roots) via aa = (a(a)) , since is intrinsically computable via its convergent summation. We have
    ln(ab) º (ab) = a + b     for any positive scalar a but (ab) = a + b holds in general only for commuting a and b . For negative a we require a unit minussquare i commuting with b with which to define (-b) = pi + b .
    (a+a)   =    cosh-1(a(a2+a2)-1)a~     if a2>0 . Since (a + 2kpb) = a " kÎZ provided b commutes with a and has b2=-1 .

    If u2=1 then (a½(1+u) + b½(1-u)) = a½(1+u) + b½(1-u) provides
    (a½(1+u) + b½(1-u))   =   a½(1+u) + b½(1-u)   =   ½((ab) + (ab-1)u) provided i commutes with u and has i2=-1.

    Thus u = ip½(1-u) and (ip½(1±u)) = -/+ u.
[ Proof :   u   =   (½(1+u)-½(1-u))   =   1½(1+u) + (-1)½(1-u) = ip½(1-u) . Also (ip½(1±u))   =   i(±i½pu) = i(±iu) = -/+ u.  .]

    More generally (l + mu)   =   (½(l+m)(1+u) + ½(l-m)(1-u))   =   ½((l2-m2) + ((l+m)(l-m)-1) u) .

    If a2 = a2 for central a then (la)   =    cosh(al) + a-1  sinh(al)a provides (±½pa-1a)   =   a-1 sinhp)a   =   ((a-1 sinhp)))a yielding two principle a logarithms ±½pa-1a - (a-1 sinhp)) .
    When a=i this is -/+½pia + (i sinhp)) .

Hyperbolic Functions
    Scalar hyperbolic functions  cosh and  sinh arise in geometric algebras through exponentiating plussquare blades in similar manner to trigonometric functions sin and cos arising from the exponentiation of minussquare blades.
     coshf º ½(f + (-f)) Î [1,¥) has mimimal value 1 at f=0 and is approximated by ½|f| for large |f| and by 1 + ½f2 + (4!)-1 f4 + O(f6) for small |f|
     cosh-1(m) = ln(m ± (m2-1)½)     providing positve and negative "inverses" of a 0-symmetric function for m³1.

     sinhf º ½(f - (-f)) Î (-¥,¥) is approximated by Sign(f)½|f| for large |f| and by f + (1/6)f3 + O(f5) for small |f| .
     sinh-1(m) = ln(m + (m2+1)½)     for -¥<m<¥ .

     cosh'(f) =  sinhf ;  sinh'(f) =  coshf ;
     sinh(q±f) =  sinhq coshf ±  coshq sinhf ;  cosh(q±f) =  coshq coshf ±  sinhq sinhf .

    We can generalise to multivector hyperbolic functions  cosh(a) º ½(a + (-a)) and  sinh(a) º ½(a - (-a)) which are both well definied and intrinsically computable via the summation definition of .

Central Powers
    If u2=1 and i commutes with u and has i2=-1 then we have k2 distinct kth roots of u given by (2pik-1i)½(1+u) +   (pjk-1i)½(1-u) for i,j Î {1,..,k} and more generally we have k2 kth roots of a½(1+u) + b½(1-u) provided by ak-1½(1+u) + bk-1½(1-u) for any "complex" a, b formed from 1 and i.
    Thus, for example, we have four "square roots" for e1 in Â3, specifically ±½(1+e1) ±e23½(1-e1) , and many more when N is large. In defining a "principle" kth root it is natural to favour i for i when the psuedoscalar is central and of negative signature, and to favour i=j=1 so if i commutes with u we define four "principle square roots" of u  
    u½   =   ±(½(1+u) ± i½(1-u))   =   ±½(1±i) + (1-/+i)u) , with inverses ±½(½(1+u) -/+ i½(1-u)).

    If a has a well defined principle logarithm a we can generalise fractional powers of a to
    aa = (a(a)) º ea ln(a) for any central a,  and indeed ac = (c(a)) for any c commuting with a.

Complex Numbers
    Complex numbers z = x + yi = r(qi) with  (x + yi) = x(yi) and (r(qi)) = r + qi are well understood. All are loggable but zero, however if we take the principle logaritm with qÎ(-p,p] there is a discontinuity in (z) when crossing y=0 for negative x.
    For qÎ(-pp) one can use   z_logncj = r + (q+2p)i but this merely moves the discontinuity to when crossing x=0 for negative y.
    It is consequently impossible to use the multivalued power zq=(q(z)) to define zq continuous in z over all zÎC.

    1 = 0 and i = ½pi provide i½ = (¼pi)= 2(1+i) and ii = (i(i)) = (-½p) .

Hyperbolic Numbers
    Before discussing computation of multivector logarithms, we must generalise "complex numbers" x+yi to allow for i2=1 and i2=0.
    If i2=1 we denote i by h and have hyperbolic numbers ,isomorphic to the Â1,1 + algebra generated by 1 and e-Ùe+. These are less well studied that complex numbers and rarely implimented in standard libraries.
    The hyperbolic number x+yh has inverse (x2-y2)-1(x-yh) provided x ¹ ±y but unlike the complex imaginary i, which has i = ½pi, the hyperbolic imaginary h has no pure hyperbolic logarithm. We require an i commuting with h with i2=-1 in order to form
    h = ip½(1-h) ;
    h½ = ½(1+h) + i½½(1-h) ; and
    h = ½(½(1+h) - i½(1-h)) .
    If pseudoscalar i has i2=-1 and commutes with h then i=i is possible, but we normally favour an i that (anti)commutes with blades spanned by h in like manner to h, so the dual i=hi-1 is preferable.
    Similarly -1 has no hyperbolic log. More generally, any hyperbolic number z in the (1)-quadrant { (x,y) : x³0 ; |x| > |y| } has a hyperbolic logarithm z ,  but -z (in the (-1)-quadrant) and ±hz (in the (h)- and (-h)-quadrants) do not.
     We must rely on (-z) = pi + z ; (hz) = ip½(1-h) + z ; and (-hz) = ip½(2-h) + z to provide logarithms over the entire "hyperbolic plane" except along the |x|=|y| "diagonals". Again i=hi-1 or i=hi are the natural choices if i2=-1. If N is even and h is odd a suitable i may not exist.

Nullic Numbers
    We form nullic numbers with a null imaginary n with n2=0.
    Exponentials and logs are trivial since (x + yn) = x(1+yn) provides (x + yn) = x + x-1yn for x>0 while (x+yn)-1 = x-2(x-yn) for x¹0.
    (x+yn)½ = x½(1 + ½x-1yn) for x>0 and i|x|½(1 + ½x-1yn) for x<0 .

    Since (x+yn)k = xk+kxk-1yn the exponentials and logs are easy with (x+yn) = x(1+yn) ; and (x+yn) = x + x-1yn provided x¹0.

Bi-imaginary numbers

    The introduction of an i commuting with h moves us into the imaginary hyperbolic algebra generated by {1,h,i} @ {1,e+Ùe-,e1Ùe+Ùe-} within Â1,2   @ Â0,1% and enables logs to be taken of all hyperbolic numbers apart from the nonivertibles on the x=±y quadrant boundaries. If i2=-1 we can decompose a = a + bb  where a is a hyperbolic number and b is a complex hyperbolic number involving commuting elements 1, h, i, and hi .    We can take i to be i, hi, or hi-1 according to choice. If we take i=i then (-1)½ has mixed grade <0;k;N>. If we take i= hi-1 then (-1)½ has grade <0;k,N-k>.
    Since 1, h, and i commute we have (a+b) = ab and (l+xh+yi+zhi)   =   l (xh) (yi) (zhi) provides a factored exponential but logarithm (l+xh+yi+zhi) = (l+xh+yi+zhi) = (a+bh) = (a(1+ba-1h)) = a + (1+ba-1h) is more problematic.

    Setting a =a1+a2i ; b = a3+a4i we have
    a = a1+a2h+a3i + a4hi =   a + bh = g½(1+h) + d½(1-h) where g=a+b=a1+a3+(a2+a4)i ; d = a-b = a1-a3+(a2-a4)i provides the most natural decomposition of a bi-imaginary number into two complex numbers weightings for annihilating idempotents ½(1±h). We then have
    a = g½(1+h) + d½(1-h)
    al = gl½(1+h) + dl½(1-h) and ab = ag½(1+h) + bd½(1-h) .

    We can also form bi-imaginaries with i and n. These lack an idempotised formulation and are best represented as a + bn for complex a,b Î Algebra(1,i)

Computing Exponentials and Logarithms
    We have seen that if u2=1 so that 1±u annihilate eachother, then provided c and d commute with u and eachother we have
    (c½(1+u) + d½(1-u))   =   c½(1+u)  + b½(1-u) . More generally, if we can express a multivector as a "weighted" sum of K idempotents that annihilate eachother then, provided all the weights commute with the idempotents and eachother, we can reduce an exponential or logarithm computation to the seperate exponentials or logs of the k weightings. We will here refer to such a decomposition into real-weighted mutually annihilating idempotents as an k-idempotised formulation and a complex-weighted sum of k mutually annihilating idempotents as a k-idempotised complex formulation.
    We can thus compute exponentions and logs of such forms without resorting to multivector summations. We have "relegated" all the "summationness" into the exponentiations and logs of complex or hyperbolic or nullic or bi-imaginary weightings. These exponents and logs may well themselves involve summations to evaluate (or approximate), but are of a simpler kind and, in the complex case, are well studied and well implimented in many math libraries.

    First observe that we can decompose a into <0;N> and remaining grades as a = a + b where a = a+a and b has zero <0;N> component. If b2 is central then, setting b =   (b2)½ (which may require an i) , we have 2-idempotised formulation a = a + bb~ = (a+b)½(1+b~) + (a-b)½(1-b~) with b~2 = 1.

    More generally, if we can decompose a as a = a1 + a2A + b where b2 = (b1+b2A)2 for real a1,a2, b1, b2 and some unit or null multivector A that commutes with a then we have a = a + bb~  where b~ = (b2)b has b~2=1 ; a is in algebra { 1, A }  ; b is in algebra { 1,A,i} .
    This fails when (b2) does not exist, which includes when b2=0, but for a nonzero invertible b2 we have
    a-1 = (a2-b2)-1 (a - bb~)     provided a2 ¹ b2 ; and a = (a+b) ½(1+b~) + (a-b) ½(1-b~)
    We will refer to a blade A "factored out" in this manner as a decentralisation blade for a. Blade A is "central" in that it commutes with all the blades of interest (the blades comprising a).

    If A2=-1 we have no need of an additional i and have a "decomplexification" in which the geometric essence of a is distilled into two "complex" [1,A] numbers (ie. an unnormalised qubit) and a unit or null multivector b. We can think of a multivector of this form as being a unit or null multivector b that has "aquired some A-clutter". It has not only been rescaled and added to a scalar multiple of bi; a scalar and a multiple of A have also been added.

      For non-null A we can replace minussquared A with -Ai if necessary to esnure A2=1 whereupon the 4-idempotised complex form
    a = (a+b)½(1+b~) + (a-b)½(1-b~) is available where the a±b factors are themeslevs expressed as complex-weighted combinations of ½(1±A). We can regard this as the natural form for multivectors in the commutative algebra [ 1,A,b,i ] = [ 1,½(1±A)½(1±b),i ] .

    If A2=1 we thus have the 4-idempotent complex decomposition
    a = (x1½(1+A)+x2½(1-A))½(1+b) + (x3½(1+A)+x4½(1-A))½(1-b)
representing a with four complex (ie. [1,i]) numbers x1,x2,x3,x4 ; unit blades A and i; and unit multivector b. We can then compute logs, exponentials and powers of a simply by computing the corresponding logs, exponentials, or powers of the four x1,x2,x3 and x4 complex weights. These will exist provided only that all four complex weights are nonzero.

    For null A we have the 1-idempotised nullic bi-imaginary form (a + b)½(1+b~) + (a - bb~ .

    We can form a logarithm for any nonzero complex number; and given a negative signature i commuting with h (or n) we can form a logarithm for any hyperbolic x+yh  provided |x|¹y (or nonzero x+yn).

    We must also address the case a = a + bb where b2=0 . It can then be easily verified that a = a(1+bb) and when a-1 exists we have a = a + a-1bb so that ac = ac(1+ca-1bb) for any c commuting with a. In particular a-1 = a-2(a - bb) .
[ Proof : al = (la)   =   (l(a + a-1b))   =   al(la-1b)   =   al(1+la-1b) and l=1 gives result  .]
    This approach fails when a-1 does not exist, such as when a2=0.

    If A is null we decompose as a = a + bA and exploit (a + bA) = a + a-1bA for a¹0.

    This approach generalises to supposing a = a0 + a1a1 + a2a2 + ... +akak where a1,a2,..ak are k commuting (rather than the stricter mutually annihilating) multivectors with aj2=1 and the aj are either real  or complex with an i commuting with the aj.
    a = (a0 + ak + a1a1 + .. +ak-1ak-1) ½(1+ak) + (a0 - ak + a1a1 + .. +ak-1ak-1) ) ½(1-ak)
      =   (a0 + ak + ak-1 + a1a1 + .. +ak-2ak-2)½(1+ak-1) (a0 + ak - ak-1 + a1a1 + .. +ak-2ak-2)½(1-ak-1)) ½(1+ak) + (a0 - ak + ak-1 + a1a1 + .. +ak-2ak-2)½(1+ak-1) (a0 - ak - ak-1 + a1a1 + .. +ak-2ak-2)½(1-ak-1)) ½(1-ak)
      =   åi=02k-1 bibi     where the bi are the 2k mutually annihilating idempotents 2-k(1±a1)(1±a2)...(1±ak) and the 2k complex bi = a0 ± a1 ± ... ± ak with the ± associated with aj and aj being determined by the jth binary bit of the ennumerator i.
    We then have a = åi=02k-1 bibi and a = åi=02k-1 bibi and have reduced the geometric logarithm to 2k seperate complex logarithms. The condition of logability and invertibility is that all 2k complex weights are nonzero .

    More generally still, we assume a given multivector exists in the algebra generated by k+l+1 commuting blades one of which (i) has negative unit square, k has positive unit square, with the remaining l null. We can represent such a multivector with 2k nullic (l+1)-imaginary numbers, each of which comprises 2l complex numbers, for the 2k idempotents ½(1±b1)½(1±b2)... ½(1±bk) where the bi are the k plussquare blades. This is representable with k+l+1 blades (including i) and 2k+1+1 real values divided into 2k seperately exponentiated and logged nullic (l+1)-imginaries of the form q = a + åi=1l bini åi.j=1l bi.jninj + .... for commuting null ni .

Example: (a1a2)

      Suppose, for example, that we require product logarithm (a1a2) where a1 and a2 are noncommuting k-blades. The delta product a1Da2 is a blade of even grade d £ 2k that commutes with a1a2. It is thus natural to set A = (a1Da2)~ and seperate a1a2 into a "complex" <0;d> component and a <2;4;..;d-2> component and see whether the latter has a <0;d> grade square. If it does, then (a1Da2)~ provides a decentralisation blade for a1a2.
    For a more general a not the product of two known blades, it is sometimes  worth seperating out the maximal grade and checking (by squaring it) whether it is a pure blade, and then checking for commutation with a.
    This is discussed more fully in Transforming k-blades.

Example : (l(w+e¥d))

    As a second example, consider the spinor (l(w+e¥d)) for 2-blade w with w2=-1 and nonunit 1-vector d both in UN and orthogonal null GHC extendor e¥ as defined in a later chapter. For ^w(d) ¹ 0, the obvious decentraliser is null 4-blade e¥(dÙb) and if ^w(d)2>0 we can use e¥0(dÙw) as an i. Thus
    (e12 + de¥3 + fe¥1)   =   e¥0e123(1 - de¥e123)(e¥0e3 - fe¥e23)   =   i(1-dA)B   =   (i+de¥)B   =   i(1-dA) ½(1+B) - i(1-dA) ½(1-B)
where i=e¥0e123 ; A = e¥e123 (or e¥) ; and B = e¥03 - fe¥e23 = e¥Ù(e0-fe2)Ùe3 all commmute and have squares -1,0, and +1 respectively. More generally, these are A = e¥Ù(dÙw)~  (or it's (N-2)-blade dual if prefered); B = w* + (e¥¯w(d))* for duality in i=e¥0e123.
    We deduce   
    (l(e12 + de¥3 + fe¥1))   =   cos(l) + sin(l)lde¥e123 + cos(l)lde¥3 + sin(l)(e12 + fe¥1)
    (l(e12 + de¥3 + fe¥1))   =   l - de¥e123 + ½p(e12 - fe¥1)
expressible as 1-idempotised forms with nullic bi-imaginary Algebra{e¥, e¥0e123} wieghts (±li)(1±lde¥) and ½l ± ½pi-de¥e123 respectively for idempotents ½(1±(e¥03-fe¥23))  where i=e¥0e123.
[ Proof :  
    (l(e12+de¥3+fe¥1))   =   (li(1-dA)) ½(1+b) +(-li(1-dA)) ½(1-b)   =   (li)(1-ldiA))½(1+b) + ((-li)(1+ldiA))½(1-b)
      =   cos(l) + sin(l)ldA - cos(l)ldiAB + sin(l)iB   =   cos(l) + sin(l)lde¥e123 - cos(l)ldie¥12 + sin(l)(e12 + fe¥1)
    (e12+de¥3+fe¥1)   =   (i(1-dA))½(1+B) +(-i(1-dA))½(1-B)   =   (i-i-1idA)½(1+B) +((-i)-i-1idA)½(1-B)
      =   (½pi-dA)½(1+B) +(-½pi-dA)½(1-B)   =   -dA + ½piB   =   -de¥e123 + ½pe¥0e123e¥0e3 + ½pe¥0e123e¥e23
    exploiting AB = e¥12 ; iAB = -e¥3 ; iA = e¥0e123e¥e123 = -e¥ ; iB = e¥0e123(e¥03 - fe¥e23) = e12 + fe¥1  .]

    To allow for timelike ^w(d) we move to Â4,1% and set i=e¥0e12345. A remains e¥Ù(dÙw)~ but B becomes 5-vector B = e¥0e345 - fe¥e2345 = w* + (e¥¯w(d))* (dualing in e¥0e12345) although this has i§=-i.

    To recover the spinor form (l(w+e¥d)) from an extended basis coordinate form a we can exploit
    a<0> = cos(l)
    e¥¿(e¥a) = cos(l) + ^e¥0(a<2>) = cos(l) + sin(l)w
    a<4> = sin(l)le¥ÙdÙw Þ (e¥w)¿(a<4>) = sin(l)l^w(d)
    e¥¿a = cos(l)l^w(d) + sin(l)¯w(d)
where e¥=-e0.

Example : (l(w+e¥d + ge¥0))

    e12+e¥(de3+fe1) + ge¥0   =   (g+Ai)B     where   unit A = e3 + dg-1e¥ (so Ai=e¥0e12+dg-1e¥e123) and B = e¥Ùb = e¥Ù(e0+b) commute, providing idempotised form (g+i)½(1+A)½(1+B) + (g-i)½(1-A)½(1+B) - (g+i)½(1+A)½(1-B) - (g-i)½(1-A)½(1-B) ; so long as we set
    b   =   f(1+g2)-1(ge1-e2) + dg-1e3     =   f(ge1-e2)~ + dg-1e3  .

    Hence (l(e12+e¥(de3+fe1) + ge¥0)   =   l + (1+g2) + (½p + tan-1(g-1)A - ½pB)i [  Expression not numerically confirmed ]
[ Proof :  l + (g+iA) + B   =   l + (1+g2) + tan-1(g-1)iA + i½p(1-B)  .]

    (l(e12+fe1+de3+ge¥0)) =  cosh(lg) cos(l) +  sinh(lg) sin(l)Ai +  sinh(lg) cos(l)B + ((lg) sin(l) + (-lg) cos(l))ABi

    With AB = e¥Ù(e0+b)Ùe3    ;     ABi = e¥Ùb' + e12 where b' = f(e1 + ge2)~ = ¯w(b)w .

    For e12+e¥(de4+fe1) + ge¥0 and i = e¥0e12345 we have 3-blade A = e345 + dg-1e¥e35 (so Ai= e¥0e12 + dg-1e¥e124) and 2-blade B = e¥Ùb where b=f(ge1 - e2)~ + dg-1e4. so that AB = e¥ÙbÙe345 and ABi remains the same.

    For the general l(w+e¥d+ge¥0) we have
    Ai = e¥0w + g-1e¥(wÙd) = (e¥0 + g-1e¥^w(d))w ;
    B = e¥Ù(e0+b) where b = (1+g2)-1(g+w)¯w(d) + g-1^w(d) ;
    ABi = (1 + e¥¯w(b))w .

Projections and Perpendiculars


Projection
We follow Dorst IPGA in   defining the projection of multivector a into nonnull k-blade b by
    ¯b a º ¯b(a) º (a¿b)b-1 = (a¿b)¿b-1 .
    The symbol ¯   used in this context should not be confused with used for logrithm.
    [    Hestenes & Sobczyk favour ¯..b(a) º (a.b).b-1     but this requires specific exemptions when acting on scalars and same-grade blades ]
    ¯b(a) = a     provides ¯1(a) = 1*a as an alternate left operator notation for the scalar component a<0> .
    ¯ak(ak) = (ak2)ak-1 = ak .
    ¯b rejects blades "containing" b so that, for example, ¯b(i) = b<N> and ¯ba = a<0> .
    ¯bc(a)=¯c(a) for nonzero b .
    Projection into a nonnull pseudoscalar has no effect ie.  ¯i = 1 .

    We will adopt the notation a Î b as a shorthand for ¯b(a) = a (ie. a "lies within" b) but will use it only when a<0>=0  .
    ¯b is grade preserving and an "outtermorphism" in that ¯b(cÙd) = ¯b(c) Ù ¯b(d) for pureblades c and d
[ Proof :  For c,d,b of pure grades r, s, and t respectively with r+s£t
    ¯b(cÙd)b = (cÙd)¿b = c.(d.b) = c¿(¯b(d)b) = c¿(¯b(d)¿b) = (cÙ¯b(d))¿b
    = (-1)rs(¯b(d)Ùc)¿b = (-1)rs(¯b(d)Ù¯b(c))¿b = (¯b(c)Ù¯b(d))¿b  .]

    ¯bÙc(a) = ¯b(a) + ¯c(a) for pureblades b and c with bÙc¹0.
    ¯b1Ù...br(a1Ù...ak) = ¯b1Ù..br(a1) Ù¯b1Ù..br(a2)...Ù¯b1Ù..br(ak)
    = (¯b1(a1)+...¯br(a1))Ù (¯b1(a2)+...¯br(a2))Ù (¯b1(ak)+...¯br(ak)) .

    ¯b(¯b(c)d) = ¯b(c) ¯b(d) which we will call the projected product rule.    [ HS 1-2.13e ]
[ Proof :  Trivial for scalar c. For 1-vector c=¯b(c) so that cÙb=0 we have
    ¯b(cd) = ¯b(c¿d) + ¯b(cÙd) = ((c¿d)¿b)b-1  + ¯b(c)Ù¯b(d) = (cÙ(d¿b))b-1  + cÙ¯b(d) = (cÙ(¯b(d)b))b-1  + cÙ¯b(d)
    = (cÙ(¯b(d)¿b)b-1  + cÙ¯b(d) = ((c¿¯b(d))¿b)b-1  + cÙ¯b(d) = ((c¿¯b(d))b)b-1  + cÙ¯b(d) = c¿¯b(d) + cÙ¯b(d) = c¯b(d) as required. Result follows for general c by induction on grade  .]

    ¯b(¯b(c).d) = ¯b(c).¯b(d) which we will call the projected dot product rule.

    ¯b(¯b(c)×d2) = ¯b(c)ׯb(d2) which we will call the projected bivector commutation rule.
[ Proof :  Let c=¯b(c) . ¯b(c×d2) = ¯b(cd2 - d2¿c - cÙd2) = c¯b(d2) - ¯b(d2)¿c -  cÙ¯b(d2) = cׯb(d2)  .]

Rejection

    The rejection or perpendicular of a into b is defined by means of the projection as ^b(a) º a - ¯b(a)     which we can write as ^b = 1 - ¯b .
    We then have the decomposition a = ^b(a) + ¯b(a)    where ^b(a).b = 0    and ¯b(a)Ùb = 0.
    For blades a,b and nonnull i we have ^b(a) = ¯(b*)(a) .

    ^b(c).b Þ  ^b(c).d=0 for any d within b, so we have ^b(c).¯b(d) = 0     " c,d which provides the symmetry ¯b(c).d = c.¯b(d) = ¯b(c).¯b(d) .

    For 1-vector a we have ^b(a) = (aÙb)b-1 and ^b(a) = ¯b*(a) but this is not true general genal a.

    In Âp,q we have a+ = ¯e1..p(a) - ^e1..p(a) = a - 2^e1..p(a) for 1-vector (and scalar) a so we can regard Modulatory conjugation as 1-2^e1..p acting on scalars and 1-vectors, extended as a reversing conjugation.
    We have ^b(a)b = aÙb  and b^b(a) = bÙa and so ^b(a) = (aÙb)b-1 = b-1(bÙa)     for invertible b .
[ Proof : ^b(a)b = ^b(a).b + ^(a,b)Ùb = ^b(a)Ùb = ^b(a)Ùb + ¯b(a)Ùb = aÙb and similarly for b^b(a) .  .]     

    Note that a2×(a2×b2) = - ^a2(b2)  for bivectors a2,b2.

     If k is odd then ¯bk(a) commutes with bk, but ^bk(a) may contain both commuting and anticommuting components. If k is even then ¯bk(a)<+> commutes with bk while ¯bk(a)<-> anticommutes, while ^bk(a) is variable.

    ¯b and ^b are idempotent (selfsquare) operators in that ¯b(¯b(a))  = ¯b(a)     " a,b which we can express as ¯b2 = ¯b ; ^b2 = ^b . Further ¯b^b = ^b¯b = 0 .

Projection via anticommution
    For any unit multivector b with b2=1 , the operator (½(1+b))=(a) º ½(1+b)a½(1+b) annihilates all blades which anticommute with b, while sending those which commute with b to ½(1+b)a .
    When k=N-1,  ^bk(aj) (anti)commutes oppositely to ¯bk(aj) with bk for odd N , and identitically to ¯bk(aj) for even N.
    Thus for odd N   , ¯bN-1(a)<+> and ^bN-1(a)<-> commute with bN-1 while ¯bN-1(a)<-> and ^bN-1(a)<+> anticommute with bN-1 which we can express as
    bN-1¯bN-1(a) = ¯bN-1(a#)bN-1    ;    
    bN-1^bN-1(a) = -^bN-1(a#)bN-1 .
    Hence for odd N we have ¯bN-1(a) = ½(a-bN-1abN-1-1) = ½(1-(bN-1)-1)(a)
    If b2 is a positive signature unit 2-blade then b2=(a)= ¯b2(a) when acting on 1-vector a.
    If b2=-1 we require (1+b)^ where ^ is a conjugation with b^ = -b .

    The subspace of multivectors that commute with b is closed under the geometric product and so forms a geometric subalgebra. (1+b)= projects general multivectors into this subalgebra.

Scaled Projections
    Also of interest is the scaled projection ¯°b(a) º |b| ¯b(a) = |b| (a¿b)b-1
which, unlike ¯b, is dependant on the magnitude of b but remains linear in a.  

Normalised Projections
    Also of interest is the normalised projection ¯~b(a) º |a| ¯b(a)~ = |a||b||a¿b|-1 (a¿b)b-1
which preserves magnitude and is generally nonlinear in a.

Orthogonal Frames
    Let (a1,a2,..,ak) be a nondegenerate nonorthonormal k-frame with all ai nonnull. Let ai = a1Ù....Ùai . An orthogonal frame (basis) for ak can be constructed as bi = ^(ai, ai-1) = ai-1-1(ai-1Ùai) = ai-1-1ai = ai-1§ai/(a12...ai-12) which satisfies b1b2..bk = b1Ùb2...Ùbk = ak |a1| 2|a2| 2...!ak-1| 2 .

Intersections and Unions
    When we come to represent geometric entities like k-planes and k-spheres with blades, the multivector meet and join operations will provide the desired geometric intersections and unions. They are thus of fundamental interest. Different authors vary in their precise defintions of meet and join but the differences are essentially matters of scale and sign. Let ak,bl be nondegenerate (possibly null) proper blades:

Join
     We will here define their join akÈbl as follows: If akÙbl ¹ 0 then ak È bl º (akÙbl)~     [ note the (unit square) normalisation ] ;
otherwise $ a nonzero vector c : akÙc = cÙbl = 0. Define akÈbl = ak'Èbl where ak = ak'Ùc = ak'c. Define bl' by bl=cÙbl' .
    We are essentially expressing akÈbl as ak'ÙCÙbl' where ak' has grade k'<k, bl' has grade l'<l, and C is a "common" blade of grade k+l-(k'+l') . We "factor out" the common C via succesive 1-vector extractions and are left with
akÈbl = ak'ÙCÙbl' = ak'Cbl' = ak'Ùbl = ak'bl = akÙbl' = akbl' .
    akÈbl is thus a unit pseudoscalar spanning the minimal-grade ("smallest") subspace spanning both ak and bl ; though there is an arbitarity of sign when akÙbl = 0 . The join can be informally viewed as a "geometric OR".
    This procedural definition suggests an implimentation in which "common" 1-vectors are succesively "sought then factored out" but such should be regarded as a last resort as we can often do better.
    The condition akÙc = cÙbl = 0 is independant of the signatures of a given orthonormal basis so we can compute the join as though in a Euclidean space provided we finally normalise with the true signatures.
    [    Dorst reverses the order with ak È bl º (blÙak) when nonvanishing, ]
    By defining (nonnull) joins to be unit (square to ±1) (unorthodox in the literature) we resolve the scale ambiguity but retain an ambiguity of sign . From a programming perspective, it is sensible to sign the join consistantly so that, for example akÈbl = blÈak even when akÙbk ¹ 0. This can be done by negating the computed join when necessary to ensure that the maximal-modulus coordinate (akÈbk)[¥] with regard to a given extended-basis is positive.

    When akÙbl is nonzero but null, we define  ak È bl º akÙbl without normalisation and suffer an ambiguity of scale.

Meet
    The meet of ak and bl spans the largest common subspace of ak and bl and corresponds to the blade C formed by the outter (or equivalently geometric) product of the c's "factored out" when forming the join. It can be viewed as a "geometric AND" and is independent of the basis signatures apart from scale.
    For nonnull join, we can define the meet by akÇbl º (ak(akÈbl)-1).bl   =   (ak¿(akÈbl)-1)¿bl .
    In the particular case akÈbl = i we have ak Ç bl = (ak*)¿bl [   j+k³N allowing ¿ instead of . ] .

    When akÙbl ¹ 0 (ie. when they they have no common subspace) we have (akÇbl)<0> = ±|akÙbl| . This is a wonderfully useful result: rather than vanishing, the meet of distinct spaces is a scalar measure of the minimal seperation between them.   The magnitude of the meet and join becoming particularly relevant . The scalar meet is an example of the the square of the meet providing a real scalar measure of the "minimal seperation" of two point sets.
[ Proof :   akÇbl   =   (ak(akÙbl)~-1)¿bl   =   ±(ak(blÙak)~-1)¿bl   =   ±|blÙak| (ak(blÙak)-1)¿bl   =   ±|blÙak| (ak(ak-1Ùbl-1))¿bl  .]

    We can alternatively define the meet of ak and bl with regard to a given pseudoscalar i containing akÈbl as
    akÇbk º (aki-1 ).bl   =   ak*.bl   =   ak*.(bl*i)   =   (ak*Ùbl*).i
whence the DeMorgan rule (akÇibl)* =  (ak*) Ù (bl*) .
    If the pseudoscalar i is "broader" than the join then ak* and bl* contain a common subblade and akÇibl  vanishes.
    Çi is thus a bilinear anti-symmetric multivector product "i-dual" to  Ù and some authors consequently favour a V-like in inverted Ù notational product symbol for it [  typographically unavailable here ] .
    A rapid first attempt at computing the meet of two blades ak and bk is provided by ( (ak*) Ù (bl*) )i . If this is nonzero then it is akÇbl  and we can deduce that akÈbl = i .

    The meet and join are thus independant of the scales of nonzero ak and bl and (with our particular definitions of È and Ç) we have
    akÈbl   =   (bl(akÇbl)-1)Ùak   =   ±(ak(blÇak)-1)Ùbl .
    (ak(akÈbl)-1)¿(bl(akÇbl)-1)   =   (bl(akÇbl)-1)¿(ak(akÈbl)-1) = 1.
    Similar but differing equations arise for variant definitions.
    [   Mann et al favour akÇbl º (bl(akÈbl)-1)¿ak ]

    (ak*)Ç(bl*)   =   (akDbl)* for duality in any blade i spanning a space containing ak and bl and in particular (a*)Ç(b*) = (aÙb)* for distinct 1-vectors a¹b.

    See Multivector Programming for the author's algorithm for simultaneously computing the meet and join of two blades.

Union
    The union of K multivectors a,b,...,f is the unordered set a È b È ... f   =   {a,b,...,f} . Thus, for example, we have vector summation e1 + e2 + (e2+e3) = e1+2e2+e3 ; 3-blade join e1 È e2 È (e2+e3) = e1Ùe2Ùe3 ; and nonorthogonal unordered 3-frame union e1 È e2 È (e2+e3) = {e1,e2,e2+e3}. For finite K, we can in principle specify a union with at most K2N coordinates as a 1-D array of multivectors. However, we are more interested in infinite unions such as pointsets of particular curves or surfaces.   

Disjoint

    The disjoint of ak and bl is ak'Ùbl' where akÈbl = ak' Ù (akÇbl) Ù bl' . Bouma et al demonstrate that for nunnull meet, the disjoint is spanned by the delta product akDbl º (akbl)<Max>     which acts like a "geometric XOR" . It is useful when computing the meet and join since it is directly evaluable (although care must be taken deciding whether very small high-grade coordinates are genuine nonzero values or errors arising from finite precision computational "noise")   and corresponds (bar sign) to the dual of the meet in the join with akDbl = (akÇbl)(akÈbl) .
    To see that the delta product is blade-valued note that akbl = (ak'C)(Cbl') = C2(ak'bl') and ak'Ùbl' ¹ 0 so akDbl = C2 ak'Ùbl'.
    If the meet is null, ie. if blades ak and bl have a common null 1-vector factor, then the delta product vanishes while the disjoint persists. By constructing our meet and join using forced Euclidean signatures via the forced Euclidean delta product, we can deftly avoid this problem.
    We will follow Fontinje et al and define the meet via the delta product as
    akÇbl º (akDbl)(akÈbl)-1   =   (akDbl)¿(akÈbl)-1 .
    This provides perhaps the most efficiently computable definition and is equivalent to the (ak(akÈbk)-1)¿bl definition.

    If we only require the scalar part of the meet, it may be efficiently computed as (akDbl)*(akÈbl)-1 .
    For unit join, the square of the meet is directly evaluable as (akÇbl)2 = ± (akDbl)2 where the sign arises from commuting (akDbl) across the pseudoscalar join and the signature of the join.

    Let d = <akDbl>Grd   =   <ak'>Grd+<bl'>Grd   =   k+l - 2<akÇbl>Grd be the grade of the disjoint. We have
    m = <akÇbl>Grd = ½(k+l-d) ;     and j = <akÈbl>Grd = <akDbk>Grd + <akÇbl>Grd   =   ½(k+l+d) , so the disjoint provides rapid computation of the grades of the meet and join.
    The scalar meet occurs when d=k+l , ie. when akDbl = akÙbl ¹ 0.

    If k=l, then d is even and akDbl commutes with 1-vectors from the meet and anticommutes with 1-vectors in the disjoint. Hence akDbl (anti)commutes with ak and bl according as ½d is odd or even.

    Bouma et al show that for 1-vector operands
    ¯akÇbl = ½( ¯ak - ¯akDbl + ¯(akDbl)bl-1 )
    ¯akÈbl = ½( ¯ak + ¯akDbl + ¯(akDbl)bl-1 )
    Note that k-blade (akDbl)bl-1 is not in general proportionate to ak. Consider for example a2=(e1-e3)e2 ; b1=e1 ; a2Db1 = a2Èb1 = e123 ; a2Çb1 = 1 ; (a2Db1)b1-1 = e23.

    We show below that for 1-vector operands
    ¯akÇbl =  ¯ak ^akDbl = ¯bl ^akDbl and ^akÈbl = ^ak ^akDbl = ^bl ^akDbl  .

Plunge
Dorst et al refer to (cj-1)Ù(bj-1)Ù(aj-1) where j=aÈbÈc as the plunge of blades a,b and c (note order reversal). The plunge of a set of blades is thus the outter product of their duals in their join and provides the highest-grade blade x perpendicular to all of them (ie. satisfying x¿a=c¿b=...= 0).
    A simpler equivalent (up to scale) definition of the plunge is the dual of the meet in the join.

Null Blades
    Defining the join to be unit fails when it is null as may arise in a nonEuclidean space, as does defining the meet via the inverted join. The delta product vanishes if the meet is null which is also problematic. However there is an elegant solution. Because the spaces spanned by the meet and join are independant of basis signatures, we can calculate them in Âp+q+r rather than Âp,q,r by forcing Euclidean basis signatures when calculating akDbl and constructing akÈbl, so avoiding difficulties arising from projecting into null blades. A case can then be made for "normalising" the join in Âp,q,r as though in Âp+q+r (ie. modulatory normalisation) even when nonnull.
    This is preferable in practice to using the extended inverse which is problematic and discontinuous for nearnull joins.
    In the case when akDbl = akÙbl¹0 , using the forced Euclidean inverse of the join yields a scalar meet having magnitude the forced Euclidean seperation.  

Next : Multivector Programming


Glossary   Contents   Author
Copyright (c) Ian C G Bell 1998
Web Source: www.iancgbell.clara.net/maths or www.bigfoot.com/~iancgbell/maths
Latest Edit: 18 May 2007. Counter