In brief: I'm looking for a clearly-worded definition1 of the geometric product of two arbitrary multivectors in $\mathbb{G}^n$.

I'm having a hard time getting my bearings in the world of "geometric algebra", even though I'm using as my guide an introductory undergraduate-level2 book (Linear and geometric algebra by Macdonald).

Among the general problems that I'm running into is that most definitions and theorems that I find (either in this book, or online) seem to apply to some multivectors (e.g. to $k$-vectors, or to blades), not all. Sometimes it is not clear to me whether a definition or result refers to all multivectors in $\mathbb{G}^n$ or only to a distinguished subset (e.g. blades), since these definitions/theorems are expressed in terms the word "vector". This leads to the pervading doubt as to whether this word "vector" is being meant as synonymous with "multivector"—i.e. an object in the so-called "vector space $\mathbb{G}^n\;$")—, or with "$1$-vector", or with "$k$-vector", or something else entirely.

(Hence the specification "clearly-worded" in my question above. A more accurate specification would have been "unambiguously-worded", but it would have been puzzling on first encounter.)

Case in point is the definition of the geometric product in $\mathbb{G}^n$. Macdonald gives a very partial definition of this product for "vectors" (and only in $\mathbb{G}^3$)3, but far as I can tell Macdonald never defines this product in general, even though he uses it freely throughout much of the book! I find this astonishing, to put it mildly. But, please correct me if I'm wrong.

1In his answer below Alan Macdonald writes "I do not think it possible to give a quick definition of the general geometric product." In light of this remark, I want to stress that succinctness is not among the requirements in my specifications what I'm looking for.

2The original version of this post incorrectly described this book as being written for "high-school students", but the author pointed out this error in his answer below. I apologize for the (now-amended) inaccuracy.

3 On p. 82, Macdonald gives a definition for the geometric product of two $1$-vectors in $\mathbb{G}^3$, and later explicitly states: "We have defined the geometric product of two vectors, but not for example, the geometric product of a vector and a bivector. This will be taken up in the next chapter, where we will learn to take the geometric product of any two multivectors." As far as I can tell, however, the "next chapter", which is called simply $\mathbb{G}^n$, never fulfills this promise. Or at least, it never gives a definition for the geometric product of any two multivectors in $\mathbb{G}^n$.

  • 4
    $\begingroup$ As an aside, let me add that in my (admittedly very brief) acquaintance with "geometric algebra" I have gotten the impression not only that it's a field is plagued with an excess of unclear wording (as described in my post), but also that it is relegated to some sort of "alternative math" ghetto. I.e. the field is kept alive by a small but feisty fringe of diehards. I wonder if these two "first impressions", to the extent that they are correct, are related somehow. Does the sheer complexity of the geometric algebra formalism necessarily keep it outside of the "mainstream" of math education? $\endgroup$
    – kjo
    Commented Jul 16, 2013 at 13:08
  • 1
    $\begingroup$ I just went to fetch my copy of L&GA and it has a section (6.1, page 93) on the geometric product in $\mathbb G^n$ for arbitrary multivectors. Is there something particular with this section that you find unclear? $\endgroup$
    – Muphrid
    Commented Jul 16, 2013 at 15:31
  • 2
    $\begingroup$ @kjo For sure, the approach geometric algebra is not "mainstream," (yet?) but it's definitely valid. Another thing that bodes well for it is that people are apparently applying it in computers. One thing to keep in mind is the extreme conservatism of modern education. They basically always stick to "the old way" because it is less controversial to do so. They just don't want to have to go through the ordeal of defending a new method. (continued...) $\endgroup$
    – rschwieb
    Commented Jul 18, 2013 at 12:27
  • 3
    $\begingroup$ @kjo (continued...) I've been evaluating the literature on geometric algebra for about three years now. I don't think it suffers terminology problems (much) more than any conventional field. I did find a lot of versions written by nonmathematicians hard to follow, but that is an understandable difference in exposure to certain prose. I don't know if it's quite ready for highschoolers yet, but certainly it is a very interesting approach. At least it complements the mainstream approach very well. $\endgroup$
    – rschwieb
    Commented Jul 18, 2013 at 12:30
  • $\begingroup$ @kjo Earlier I said "valid" but the word I was searching for was "viable." $\endgroup$
    – rschwieb
    Commented Jul 18, 2013 at 12:35

11 Answers 11


There is a definition of the geometric product that applies to general multivectors in any Clifford algebra. It follows directly from the definition of the Clifford algebra. To define a Clifford algebra you need a vector space $V$ and a symmetric bilinear form $B(u,v)$ defined for any $u,v\in V$. The Clifford algebra is the quotient of the tensor algebra of $V$ with respect to the two-sided ideal generated by all elements of the form $u\otimes v+v\otimes u -2B(u,v)$ where $u,v\in V$. The geometric product is the product in the quotient algebra. It is standard and you can find the definition of that in any textbook on abstract algebra. Basically, the geometric product is the product in the tensor algebra of $V$ modulo the ideal.


To illustrate, consider $\mathbb R^2$ and the bilinear form defined by $B(e_1,e_1)=1$, $B(e_2,e_2)=1$, $B(e_1,e_2)=0$, where $e_1=(1,0)$ and $e_2=(0,1)$. The two-sided ideal generated by $u\otimes v+v\otimes u -2B(u,v)$ is infinite dimensional as the tensor algebra itself. It contain the following elements among others:

$e_1\otimes e_1-1,\quad e_2\otimes e_2-1,\quad \text{and}\quad e_1\otimes e_2+e_2\otimes e_1$.

This can be used to compute the following products:

$e_1e_1 = e_1\otimes e_1=e_1\otimes e_1 -(e_1\otimes e_1-1)=1$,

$e_2e_2 = e_2\otimes e_2=e_2\otimes e_2 -(e_2\otimes e_2-1)=1$,

$e_1e_2=e_1\otimes e_2= \tfrac{1}{2}(e_1\otimes e_2- e_2\otimes e_1)+\tfrac{1}{2}(e_1\otimes e_2+ e_2\otimes e_1)=\tfrac{1}{2}(e_1\otimes e_2- e_2\otimes e_1)$.

In short, $e_1^2=1$, $e_2^2=1$, and $e_1e_2=-e_2e_1$.

Even though the tensor algebra is infinite-dimensional, the quotient algebra is finite-dimensional. See what happens if you try to get to grade 3. For instance, consider this product

$e_1(e_1\wedge e_2)$ where $e_1\wedge e_2=\tfrac{1}{2}(e_1\otimes e_2- e_2\otimes e_1)$.

It is again a straightforward application of the tensor product modulo the ideal:

$e_1(e_1\wedge e_2)=\tfrac{1}{2}(e_1\otimes e_1\otimes e_2 - e_1 \otimes e_2\otimes e_1)$

but $e_1\otimes e_1\otimes e_2=(e_1\otimes e_1-1)\otimes e_2 +e_2=e_2$ and

$e_1\otimes e_2\otimes e_1=(e_1\otimes e_2+e_2\otimes e_1)\otimes e_1 -e_2\otimes e_1\otimes e_1=$

$=e_2\otimes e_1\otimes e_1=e_2+e_2\otimes(e_1\otimes e_1-1)=e_2$.

So, we get $e_1(e_1\wedge e_2)=\tfrac{1}{2}(e_2+e_2)=e_2$, that is we are back to grade 1. Since the quotient algebra is finite-dimensional, every element can be expressed in term of the basis, which consists of $1, e_1, e_2, e_1e_2$ in the example we are considering. So, every multivector $A$ can be expressed as follows:


If you have two such multivectors you can compute the product simply by using associativity, distributivity, and the properties we have derived above: $e_1^2=1, e_2^2=1, e_1e_2=-e_2e_1$.

You can easily repeat this exercise for other dimensions and for different bilinear forms.

To come back to the definition of the geometric product, here is how you can understand its significance. In geometry, you are dealing with certain geometric structures. For instance, you might want to find a line passing through two points, or you might want to find a point at the intersection of two lines. These kinds of problems can be dealt with efficiently by applying the exterior structure. You also might want to find, say, a line which passes through a given point and is perpendicular to another line. This kind of problem is related to the orthogonal structure. The tensor product is too general. By using the quotient algebra you are effectively eliminating any part of the tensor product which is not related to exterior or orthogonal structure. What is left has a clear geometric significance. In a way, the geometric product does a lot of work for you behind the curtains, so that you can concentrate on the relevant geometric structures. The expression $uv=u\cdot v+u\wedge v$ is not really the definition of the product. It is just a property that the geometric product of two vectors has.

Alan Macdonald does not use the definition of the geometric product I described above because he does not presume his readers are familiar with the tensor algebra, ideals, or quotients. Instead, he wants to concentrate on applications, geometric properties of the algebra, and on computation. If you are not satisfied with his approach, perhaps you need to read another book. This one

Clifford Algebras and Lie Theory, by Meinrenken

is recent and it uses the same definition I used. There are other equivalent ways to define Clifford algebras. If you are interested, check out these books as well

Quadratic Mappings and Clifford Algebras, by Helmstetter and Micali,

Clifford Algebras: An introduction, by Garling.

Perhaps, after trying to read these books you will appreciate Alan's book more.

Clifford algebra is a well-established part of standard mathematics. It is used in differential geometry and Clifford Analysis, not to mention various applications in physics. No one questions its validity. People who refer to it as Geometric algebra simply want to help promote it in engineering, applied mathematics, and physics. The focus is on applications rather than mathematical rigour. As Alan has pointed out, you don't need to know how the algebra is defined in general in order to use it. You can always compute the product in the basis. It gets tedious to do it by hand as the dimension of the underlying vector space increases, but it can be implemented on a computer quite easily.

  1. The book is not intended for high school students. According to the preface it is intended for "the introductory linear algebra course", a sophomore college course. The preface also recommends a calculus course for "mathematical maturity".

  2. Definition 5.9 defines the geometric product of two vectors. The first paragraph of Section 6.1 gives reasons for not giving a definition of the geometric product of arbitrary multivectors. (It also cites a paper which gives a definition.) Instead, Theorem 6.1 gives the fundamental rules for manipulating the geometric product of multivectors.

  3. The answer from Muphrid starts by assuming that for vectors $a, b, c,\, a(bc) = (ab)c$. Of course this is true. But it cannot be used to define the general geometric product. For

$(ab)c$ = (scalar + bivector)(vector)

and (bivector)(vector) has not been defined. The answer from ahala starts by assuming that the geometric product is linear without giving a reason. Of course this is true. But an unjustified assumption cannot be used to define the general geometric product.

I do not think it possible to give a quick definition of the general geometric product.

  • 2
    $\begingroup$ "I do not think it possible to give a quick definition of the general geometric product." I take your word for it, but I never asked for a "quick" definition. That said, this would be the only instance (in my admittedly narrow experience) in which such foundational specifications are not amenable to a succinct statement. (This is just to say that your statement is somewhat rattling to my provincial expectations...) Thank you for correcting my statement regarding the book's intended audience. I have reworded my post accordingly. I apologize for the error. $\endgroup$
    – kjo
    Commented Jul 19, 2013 at 20:50
  • 1
    $\begingroup$ And thank you also for your critique of the other answers. $\endgroup$
    – kjo
    Commented Jul 19, 2013 at 20:53
  • 2
    $\begingroup$ Welcome, Alan :) hope to see you around! $\endgroup$
    – rschwieb
    Commented Jul 19, 2013 at 22:45
  • 1
    $\begingroup$ Ignore my previous comment. You are begging the question: Of course, if you can take the product of any number of vectors, then you can take the product of, say, two. But you have not shown how to this. In my paper I first define the product AB of two multivectors. Then I can define (AB)C as the product of the multivectors AB and C. The paper is complicated. If I knew an easier way, I would use it. I know from thirty years teaching experience that ideas such as these are hard at first. I applaud you for trying to thinks these ideas through; most would simply ignore them and move on. $\endgroup$ Commented Jul 23, 2013 at 0:10
  • 8
    $\begingroup$ Let's take something more familiar: the real number system. They are defined in terms of Dedekind cuts or Cauchy sequences. The definitions are complicated. But you can use real numbers without understanding (or even knowing about) the definitions. What you need to know is their properties: commutativity, associativity, etc. It is the same with multivectors and the geometric product: you can use them if you know their properties from my Theorem 6.1, even though you don't know their definitions. $\endgroup$ Commented Jul 27, 2013 at 16:49

Here is an attempt at an informal, hand-waving definition. Let's start by defining the relevant terms:

A multivector is an element of a geometric algebra. It can be represented by a linear combination of blades.

Blades are the combined geometric products between scalars and vectors of an orthonormal basis in the associated vector space. The geometric product is defined such that the range of blade products is finite in a given (finite) geometric algebra. Products with $>n$ vectors can always be reduced to a product with $\leq n$ vectors, where $n$ is the dimension of the associated vector space. A blade's grade is the number of basis vectors that are multiplied together (after it is reduced). A blade of grade $k$ is called a $k$-blade. Permutations of the same product end up being scaled versions of each other, so it is possible to define a set of blades as a basis for the vector space of multivectors by choosing one of each permutation set. The standard basis of $\mathbb{R}^3$ $\{e_1,\, e_2,\, e_3\}$ leads to this standard basis of blades for $\mathbb{G}^3$: $\{1,\, e_1,\, e_2,\, e_3,\, e_1e_2,\, e_1e_3,\, e_2e_3,\, e_1e_2e_3\}$.

A $k$-vector is a linear combinations of $k$-blades. Sometimes, $2$-vectors are called bivectors, $3$-vectors are called trivectors, etc. Sometimes $1$-vectors are simply called vectors, since they have a one-to-one correspondence with the vectors in the associated vector space.

Here are some examples of each term, using the standard basis of $\mathbb{R}^3$ as the defining vectors. The second examples are not in reduced form.

  • $0$-blade : $\:2$, $2(2)$
  • $1$-blade : $\:e_1$, $\,3e_3e_1e_1$
  • $2$-blade : $\:4e_1e_3$, $\,e_1e_3e_3e_2$

  • $0$-vector : $\:3$, $\,3 + 2$
  • $1$-vector : $\:4e_1 + 5e_2$, $\,6e_1 + 5e_3 - 2e_3$
  • $2$-vector : $\:-13e_2e_3 + 3e_1e_3$, $\,12e_2e_3 + 3e_1e_3 - 3e_2e_3$
  • $3$-vector : $\:-2e_1e_2e_3$, $\,3e_1e_2e_3 + 5e_1e_2e_3$

  • Multivector : $\:3 + 4e_1 + 4e_3 - 13e_2e_3 + 3e_1e_3 - 2e_1e_2e_3$, $\,8 + 2e_1 + 4e_1e_2 - 2e_1$

The geometric product is distributive over addition. So, to perform a geometric product between multivectors we can just represent them in the same basis of blades and distribute the terms: $$ \begin{align} u &= u_1 + u_2e_1 + u_3e_2 + ... + u_5e_1e_2 + ... \\ v &= v_1 + v_2e_1 + v_3e_2 + ... + v_5e_1e_2 + ... \end{align} $$ $$ \begin{align} uv &= u(v_1 + v_2e_1 + v_3e_2 + ... + v_5e_1e_2 + ...)\\ &= u(v_1) + u(v_2e_1) + u(v_3e_2) + ... + u(v_5e_1e_2) + ...\\ &= (u_1 + u_2e_1 + u_3e_2 + ... + u_5e_1e_2 + ...)(v_1) \\ &\quad + (u_1 + u_2e_1 + u_3e_2 + ... + u_5e_1e_2 + ...)(v_2e_1) \\ &\quad + (u_1 + u_2e_1 + u_3e_2 + ... + u_5e_1e_2 + ...)(v_3e_2) \\ &\quad + ... \\ &\quad + (u_1 + u_2e_1 + u_3e_2 + ... + u_5e_1e_2 + ...)(v_5e_1e_2)\\ &\quad + ... \\ &= (u_1)(v_1) + (u_2e_1)(v_1) + (u_3e_2)(v_1) + ... + (u_5e_1e_2)(v_1) + ...\\ &\quad+ (u_1)(v_2e_1) + (u_2e_1)(v_2e_1) + (u_3e_2)(v_2e_1) + ... + (u_5e_1e_2)(v_2e_1) + ...\\ &\quad + (u_1)(v_3e_2) + (u_2e_1)(v_3e_2) + (u_3e_2)(v_3e_2) + ... + (u_5e_1e_2)(v_3e_2) + ...\\ &\quad + ... \\ &\quad + (u_1)(v_5e_1e_2) + (u_2e_1)(v_5e_1e_2) + (u_3e_2)(v_5e_1e_2) + ... + (u_5e_1e_2)(v_5e_1e_2) + ...\\ &\quad + ... \\ \end{align} $$ We are left with a sum of products of blades. The geometric product is associative, so we don't actually need the parenthesis: $$ \begin{align} &= u_1v_1 + u_2e_1v_1 + u_3e_2v_1 + ... + u_5e_1e_2v_1 + ...\\ &\quad + u_1v_2e_1 + u_2e_1v_2e_1 + u_3e_2v_2e_1 + ... + u_5e_1e_2v_2e_1 + ...\\ &\quad + u_1v_3e_2 + u_2e_1v_3e_2 + u_3e_2v_3e_2 + ... + u_5e_1e_2v_3e_2 + ...\\ &\quad + ...\\ &\quad + u_1v_5e_1e_2 + u_2e_1v_5e_1e_2 + u_3e_2v_5e_1e_2 + ... + u_5e_1e_2v_5e_1e_2 + ...\\ &\quad + ...\\ \end{align} $$ These are just blades that haven't been reduced. To reduce them, we apply the identities that define the geometric product:

  • scalars commute with basis vectors: $ae_i = e_ia$
  • the product of a basis vector with itself is 1: $e_ie_i = 1$
  • basis vectors anticommute with other basis vectors: $e_ie_j = -e_je_i$

Continuing our computation. First we bring the scalars together: $$ \begin{align} &= u_1v_1 + u_2v_1e_1 + u_3v_1e_2 + ... + u_5v_1e_1e_2 + ...\\ &\quad + u_1v_2e_1 + u_2v_2e_1e_1 + u_3v_2e_2e_1 + ... + u_5v_2e_1e_2e_1 + ...\\ &\quad + u_1v_3e_2 + u_2v_3e_1e_2 + u_3v_3e_2e_2 + ... + u_5v_3e_1e_2e_2 + ...\\ &\quad + ...\\ &\quad + u_1v_5e_1e_2 + u_2v_5e_1e_1e_2 + u_3v_5e_2e_1e_2 + ... + u_5v_5e_1e_2e_1e_2 + ...\\ &\quad + ...\\ \end{align} $$ Then we reduce the vector products into our basis blades. We do this by swapping pairs of vectors (and negate the blade every time we do) to match the order of our basis blades. When we have a product between the same vector, we can reduce it to 1 and drop it from the blade: $$ \begin{align} &= u_1v_1 + u_2v_1e_1 + u_3v_1e_2 + ... + u_5v_1e_1e_2 + ...\\ &\quad + u_1v_2e_1 + u_2v_2 - u_3v_2e_1e_2 + ... - u_5v_2e_2 + ...\\ &\quad + u_1v_3e_2 + u_2v_3e_1e_2 + u_3v_3 + ... + u_5v_3e_1 + ...\\ &\quad + ...\\ &\quad + u_1v_5e_1e_2 + u_2v_5e_2 - u_3v_5e_1 + ... - u_5v_5 + ...\\ &\quad + ... \end{align} $$ Finally, after we combine like terms, we are left with a new linear combination of blades that represents our resulting multivector: $$\begin{align} &= (u_1v_1 + u_2v_2 + u_3v_3 + ... + u_5v_5 + ...)\\ &\quad + (u_2v_1 + u_1v_2 + u_5v_3 + ... - u_3v_5 + ...)e_1\\ &\quad + (u_3v_1 + u_1v_3 - u_5v_2 + ... + u_2v_5 + ...)e_2\\ &\quad + ...\\ &\quad + (u_5v_1 - u_3v_2 + u_2v_3 + ... + u_1v_5 + ...)e_1e_2\\ &\quad + ... \end{align} $$ In this way, we only really need to define the product between a set of basis vectors to define the entire geometric product. As Elias said, once you have these identities along with the distributive and associative propreties, the rest of it just sort of falls out. Other definitions in geometric algebra can get away with only defining operations on blades or $k$-vectors because they likewise distribute over addition and so trivially apply to multivectors via the same sort logic we just followed: distribute the operation then apply the definition.

However, some simplified results such as the fact that the geometric product between $1$-vectors equals the sum of the inner and outer product $$ \begin{equation} uv = u\cdot v + u\wedge v \end{equation} $$ do not extend up to multivectors by the same logic. Being unable to see the difference was one of the biggest challenges I had in learning about geometric algebra. I think not finding a reference with full definitions of each term and how they relate to each other contributed to my confusion. It's hard to know when a term is used for convenience or a restrictive reason until you can see the whole picture!

  • $\begingroup$ Thanks in particular for pointing out that $uv=u⋅v+u∧v$ does not hold in general for multivectors; that got me un-stuck, since I had misread Hestene's Space-Time Algebra book (formula 3.3) and thought that was the definition of geometric product for multivectors-- it's not, and mistakenly assuming it is leads to undesirable results. Your definition works much better :-) $\endgroup$
    – Don Hatch
    Commented Oct 15, 2021 at 19:44
  • 1
    $\begingroup$ I would suggest a minor rephrasing, in order to make your presentation seem less circular. That is, instead of saying "The geometric product is distributive over addition" and "the geometric product is associative", etc., in the middle of defining geometric product, I would say, instead, that what we are working with here are formal linear sums of the basis elements, modulo the identities that we would like to be true about the geometric product we are defining: that is, distributivity, associativity, etc. It became crystal clear to me as soon as I started thinking of it that way. $\endgroup$
    – Don Hatch
    Commented Oct 15, 2021 at 19:55
  • $\begingroup$ Is there a meaningful geometric interpretation of the geometric product of two blades? $\endgroup$
    – NicNic8
    Commented Nov 23, 2023 at 14:35
  • Start with the geometric product of vectors.

This uses the usual properties. For vectors $a, b, c$, $aa$ is a scalar, $a(bc) = (ab)c$, and $a(b+c) = ab + ac$. For a scalar $\alpha$, $(\alpha a)b = \alpha(ab)$.

  • A $k$-blade is a geometric product of $k$ anticommuting vectors.

Typically this is written in terms of wedge products, which is why this can be confusing, but you can always take a wedge product of several vectors and orthogonalize those vectors to turn those wedges into geometric products.

I use the word $k$-blade here, rather than $k$-vector. Usually, the two would be considered equivalent. But here I'm just sticking to "vector" meaning "1-blade".

  • Because blades are formed from some number of anticommuting vectors, the geometric product of blades is well-defined in terms of the product of vectors and associativity.

So if I have two blades $K = abc$ and $L = defgh$ where all $a,b,c$ are orthogonal and $d,e,f,g,h$ are orthogonal to each other, then $KL = (abc)(defgh)$ is a meaningful geometric product.

  • A multivector is a linear combination of blades, which aren't necessarily all of the same grade. Using linearity, the geometric product of multivectors merely involves geometric products of component blades.

Let $M = ijkl$ and $N= mn$. See that $(K+L)(M+N)$ is given by

$$\begin{align*}(K+L)(M+N) &= KM + LM + KN + LN \\ &= (abc)(ijkl) + (defgh)(ijkl) + (abc)(mn)+ (defgh)(mn)\end{align*}$$


Because of linearity, we only have to consider the definition of $A_rB_s$. And Because of the associativity, $A_rB_s =aA_{r-1}B_s = a(A_{r-1}B_s) $ for some $a$ and $A_{r-1}$, we only to consider the definition of $aA_r$.

below is not a brief word definition per se, but my current understanding of the construction of geometric products.

1). starting from the axiom $u^2$ is a real scalar, we have $u\cdot v$ defined as real.

2). From $u\cdot v$, we can define orthogonality such that if $u\cdot v = 0$, $uv = -vu=u\wedge v$.

3). from 2), we can build orthogonal basis $\{e_i\}$. The geometry products of $\{e_i\}$ are well defined according to 2) above. And then $\{e_i\}$ expands to canonical basis $\{1,e_i, e_ie_j,...\}$ with geometry products defined.

4).The general definition of $aA_r$ can be obtained from the linearity and from the geometry products of canonical basis.


I get the impression from the other answers that people have two different ideas of what constitutes a "definition" of the geometric product.

The Clifford algebra of $V$ is usually defined as the tensor algebra of $V$ modulo $v^2=\pm\left\lVert v\right\rVert^2$, or words to that effect. This completely defines the product. Given arbitrary expressions $A, B, C$ from the algebra, $AB=C$ iff you can transform $AB$ into $C$, or vice versa, using only manipulations permitted by the axioms. You can show that any expression can be reduced to a canonical form of $2^n$ terms (some perhaps zero), and that expressions are equal iff they have identical canonical forms.

Alternately, you can define "Clifford numbers" as elements of $F^{2^n}$ with an inclusion $V\hookrightarrow F^{2^n}$, define multiplication as a binary operation on this space, and prove that it satisfies the algebraic rules.

This is completely analogous to definitions of other number systems; e.g. you can define complex numbers as $\mathbb R[i]$ modulo $i^2=-1$, or as $\mathbb R^2$ with $(a,b)*(c,d) = (ac-bd,ad+bc)$. The latter is useful for software implementation and for proving that complex numbers actually exist, but the former is easier to remember and is closer to how people think about them in practice.

Macdonald's book takes the view that the product is an operation on Clifford numbers, and indeed it never seems to define it (instead citing a paper of his that is freely available online). Practically speaking it doesn't matter because the rules in Theorem 6.1 are enough to work out any product. But I'm not convinced it was a good idea pedagogically.

He wrote in his answer, "I do not think it possible to give a quick definition of the general geometric product." I disagree; I think it can be defined in a sentence. It's not so easy to prove that the definition is consistent and nontrivial, but it's still a definition.


I have exactly this problem, and have resorted to Python code to do this (for orthogonal basis vectors). The geometric product algorithm should be no more than a page or so of Python code for handling an arbitrary number of orthogonal basis vectors.

This code should be easily defined for reasonably large dimensions (ie: 64) because it takes advantage of bit ordering. There are $2^n$ entries for a good reason. The reason is that the bits set indicate the use of a basis vector.

 def gamul(d1,m1, d2,m2, r):
     maxd = max(d1,d2)
     if maxd < 0: return
     r[0b000] += m1[0b000] * m2[0b000]  #0b000 is scalar part
     if maxd < 1: return
     r[0b001] += m1[0b001] * m2[0b000]  #0b001 is e1
     r[0b001] += m2[0b001] * m1[0b000]  #0b010 is e2
     if maxd < 2: return
     r[0b000] += m1[0b001] * m2[0b001]
     r[0b000] += m1[0b010] * m2[0b010]
     r[0b010] += m1[0b010] * m2[0b000]
     r[0b010] += m2[0b010] * m1[0b000]
     r[0b011] += m1[0b001] * m2[0b010] #0b011 is e1^e2
     r[0b011] -= m1[0b010] * m2[0b001]

And this is an example of m4 as vector (4,6) times m5 as vector (-2,-1) written into m6:

m4[0b001] = 4        # 4*e1
m4[0b010] = 6        # 6*e2
print m4
m5[0b001] = -2
m5[0b010] = -1
print m5
gamul(2,m4, 2,m5, m6)
print m6  #array has values at entry 0b00 and 0b11, scalar+bivector

This is a brute force definition that is handling dimension 0,1,2. I could calculate 3,4,5 by brute force as well and call it a day. But I highly suspect that there is a pattern that calculates it all, does it very efficiently, and works fine even for unbounded dimensions (where d1,d2 only get passed in to limit how far the code will look for non-zero items).

The other beautiful part about this is that if I ask questions like, "is this multivector zero?" just means that all components are zero. "is this scalar" means that everything except entry 0 is zero. "is this a vector?" means that every entry not having exactly 1 bit set for its index is zero, etc. In general, the blade of an entry is the number of bits set on its index. For instance, 0b011 is a bivector, 0b111 is a trivector, 0b100 is vector e3, etc. This is why 0b000 is the scalar entry. There is probably no other reasonable ordering for this.

So, noting that every entry so far is multiplying a single entry from each m and either adding it or subtracting it is interesting. I am going to guess that the entire thing works like this. Furthermore, with this definition, the basis vectors are sorted by definition:

e1 ^ e2   #just add your value
e2 ^ e1   #sort with adjacent swaps, and number of swaps determines sign
e3 ^ e2 ^ e1

What makes the standard definition seem so vague is that typically, only vector times multivector is arbitrarily defined, and there is a lot of stringing together distributing over the components before getting down to something concrete.

A bivector is JUST a multivector in which it is asserted that all other elements are set to zero. The tricky thing about GA is that the output type depends on the input type and their values, etc. It's necessary to have a simple calculator for doing concrete calculations, without all the overhead of things like SymPy, let alone not knowing how to re-implement it in another environment (JavaScript, Go, etc).

Less than a page of Python that defines Geometric Product similar to Foundations of Geometric Algebra Computing, except using binary indexing and the xor operation to dramatically simplify the explanation. The xor (per vector, with each vector in a bit) is why the product of two vectors splits into a scalar and bivector part. 01 xor 10 is 11, 10 xor 10 is 00, 01 xor 01 is 0, etc. Dot and wedge product are not explicitly defined anywhere, yet they fall out of the definition as a side-effect (computationally, obvious without symbolic manipulation):



Mr Macdonald, thank you very much for the link correction. Your construction is very simple and it is in all similar to that proposed by Mr. John W.Bales in 2011 https://arxiv.org/abs/1107.1375v1

Now, regarding the question about a simple way for 'defining' the product of two multivectors consider the following:

1) any multivector 'a' of dimension n can be put in the form of an ordered pair (a0,a1) of multivectors of dimension n-1, such that a=a0+gamma(n)*a1. With the order of the bases gamma as proposed by Mr. Bales

2) any n-dimensional multivector 'a' can be transformed into a column vector by the recursión formula psi(a,n)=[psi(a0,n-1);psi(a1,n-1)]. The inverse transformation is also possible allways.

3) to any n-dimensional multivector 'a' one can associate the matrices:

omega1(a,n)=[[omega1(a0,n-1),gamma(n)^2*omega2(a1,n-1)];[omega2(a1,n-1),omega1(a0,n-1)]] omega2(a,n)=[[omega2(a0,n-1),-gamma(n)^2*omega1(a1,n-1)];[omega1(a1,n-1),-omega2(a0,n-1)]]

Then, the geometrical product of two general multivectors 'a' and 'b' can be calculated simply by the formula: ab=omega1(a,n)*psi(b,n) and transforming into an ordered pair by 2.

I hope you agree with these assertions. An interesting thing about this method is that all Cayley-Dickson numbers (as generalized by A.A.Albert in 1942 for any signature) can also be multiplied by a similar construction but with three matrices. If you are interested in seen this construction, please search my full name in the academia edu page. With respect.

  • $\begingroup$ @kjo Maybe you would like the algorithm proposed here to calculate the product of any two multivectors in any algebra (I mean: with any number of dimensions and any signature of the imaginary bases, including complex ei^2=-1, splits ei^2=1 or duals ei^2=0, and mixing of these) $\endgroup$ Commented Jun 4, 2020 at 17:13

I recommend consulting the writings of Dr. David Hestenes and especially "Clifford Algebra to Geometric Calculus".

Geometric Calculus R&D http://geocalc.clas.asu.edu

"The most comprehensive treatment of the mathematical theory is given in the book Clifford Algebra to Geometric Calculus [1984]. Except for the last chapter added in 1979, the manuscript was ready for publication by 1976 but did not appear in print until 1984, owing to an unfortunate series of publishing mishaps. Papers with extensions and improvements in the calculus are collected in Universal Geometric Calculus[Editor: there was a hyperlink to the Universal Geometric Calculus webpage of the website here]. With general arguments and many examples, the case is made there and elsewhere that geometric algebra is a more efficient general computational tool than matrix algebra. It is therefore a candidate to supplant (or subsume) matrix algebra in computer software and software designs for scientific computation." http://geocalc.clas.asu.edu/html/Evolution.html


An informal definition may be made in terms of the basis vectors $e_1, e_2, \dots e_n$: It is the product you get by requiring that it fulfils a couple of usual rules for products, notably bilinearity, distributivity and associativity (but not commutativity), as well as the following rule: $$ e_i e_j = \begin{cases} 1 & i = j \\ -e_j e_i & i \neq j. \end{cases} $$ This definition may not be entirely rigourous, but it is very simple, and in practice these are the rules you would use for calculating the geometric product of arbitrary multivectors, written as sums of basis blades.


A basic goal of the geometric product is that given the product and one of the terms used to create it the other term can be recovered. The exclusive or of logic and the symmetric difference of set theory both have this property. The geometric product is analogous but differs because it is over a vector space.

To begin consider only basis blades. These represent subspaces. A scalar represents the subspace that is the origin. A vector represents a one-dimensional subspace, an infinite line. A bivector represents a two-dimensional subspace, an infinite plane. A trivector represents a three-dimensional subspace. And so forth up to as many dimensions as you please.

First an imprecise version of the geometric product.

  • Let $s_1$ and $s_2$ each be a subspace corresponding to a basis element.
  • Let S be the smallest space that contains both subspaces.
  • Let s be the intersection of the two subspaces.
  • The geometric product of the two subspaces is the largest subspace of S that excludes s. We might write $s_1*s_2$=S-s.

Next in the more exact jargon of vector algebra

  • Let $s_1$ and $s_2$ each be a subspace corresponding to a basis element.
  • Let S be the span of $s_1$ and $s_2$. S = span($s_1$,$s_2$)
  • Let s be the largest subspace that is a subspace of both $s_1$ and $s_2$.
  • $s_1*s_2$ is the dual of s in S.

An example is $e_{12}$*$e_{23}$ = $e_{13}$.

  • S is $e_{123}$
  • s is $e_2$
  • $s_1*s_2$ is the dual of $e_2$ in $e_{123}$, which is $e_{13}$.

Subspaces have no sign so this approach won't give you the signs of the terms. To get the correct sign it is necessary to do the algebra. For example $e_{2}*e_{12}$=$-e_{1}$.

Multivectors are represented as sums of weighted basis elements. Now that we know the geometric product for basis elements we just multiply everything out to get the geometric product of arbitrary multivectors. The scalar in the product is the scalar product. The sum of all the other terms is the commutator product.

Recall at the very beginning 'twas written "A basic goal of the geometric product is that given the product and one of the terms used to create it the other term can be recovered." This goal is not always achieved. In order to do this said term must have an inverse. Many multivectors don't have inverses. An example is $e_{12}$+$e_{34}$. It may appear to be a bivector but it is not. It isn't a blade. It doesn't represent a subspace. One may still algebraically produce a geometric product from any two multivectors but it doesn't always have an apparent geometric meaning. This is why there is an emphasis on blades: they can represent subspaces and are clearly geometric objects.

It often isn't obvious whether a multivector is a blade. If the product of the multivector and its dual is the space then the multivector is a blade.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .