David Hestenes’ goal for geometric algebra is to subsume under one umbrella many different kinds of mathematics used by scientists and engineers (see the Hestenes web site, and especially his Oersted Medal Lecture). The key to this unification is to provide powerful geometrical representations for all kinds of mathematical topics, many of which are typically learned without a strong connection to a good geometrical representation. Consider the benefit ordinary 3D vectors provide compared to dealing with components individually. Vectors and vector notation not only simplify many mathematical operations but also provide a richer conceptual space for thinking about geometry. Geometric algebra has the same goals and stands in relation to ordinary vectors as vectors stand in relation to operating with components individually.

My goal for this article is to give a small taste of geometric algebra to give a sense of its structure and to illustrate how it can span diverse branches of mathematics that physicists currently study in isolation from each other.

The fundamental entity in geometric algebra is the “multivector” consisting in 3D of four elements: scalar, vector, bivector (a 2D surface with a directed normal), and trivector (a 3D solid). Geometric algebra can also be used in 2D, or in dimensions higher than 3D, but for purposes of a brief introduction we’ll stick with the 3D context. One writes a multivector as a sum: scalar + vector + bivector + trivector. This may look odd, since one is taught that “you can’t add a scalar and a vector,” but note that one often writes a vector in the form where three very different things are added together. From a computer programming point of view, one might think of a multivector as a heterogeneous list: [scalar, vector, bivector, trivector], with methods for operating on such lists.

Fundamental to geometric algebra is the “geometric product,” where *a* and *b* are multivectors. This product is defined in such a way that multiplication is associative, *abc = (ab)c = a(bc)*, but it is not necessarily commutative; *ba* is not necessarily equal to *ab*. If *a* and *b* are ordinary vectors, the geometric product is , where is a bivector that is (only in 3D) closely related to the ordinary vector cross product ( is pronounced “wedge”). For vectors *a* and *b* the geometric product *ba* will not be equal to *ab* if the wedge product is nonzero, since .

The dot product (the scalar part of *ab*) measures how parallel the two vectors are, while (the bivector part of *ab*) measures how perpendicular they are. Together these two measures provide all the information there is about the relationship between the two vectors and thereby captures important information that neither the dot product nor cross product alone provide. Another way of saying this is that the dot product is the symmetric part of *ab* and the wedge product is the antisymmetric part of *ab*.

One way to represent the wedge product of two vectors geometrically is to draw the two vectors tail to tail and make these two vectors the sides of a parallelogram. The area of the parallelogram is the magnitude of the bivector. Compare with the magnitude of the vector cross product and you’ll see that this is equal to the area of the parallelogram associated with the two vectors.

We’ll investigate some basic aspects of geometric algebra by starting with three ordinary vectors , , and that are unit vectors in the *x*, *y*, and *z* directions. The geometric product , because the wedge product of a vector with itself has no area, so the bivector part of is zero; similarly for the other two unit vectors.

The quantity is a unit bivector which can be represented as a 1 by 1 square in the *xy* plane (the dot product is zero because the two vectors are perpendicular to each other). Similarly is a unit bivector in the *yz* plane and is a unit bivector in the *zx* plane. The wedge product is antisymmetric, so ; similarly for the other unit vectors.

Next, consider the geometric product of these bivectors with the unit vectors, using the fact that the geometric product is associative and that :

We have similar results for other products of the bivectors and the vectors.

What is ? This is a “trivector,” a cube 1 by 1 by 1. Something surprising results if we multiply this unit trivector by itself:

This result justifies identifying the trivector with the imaginary number *i*. Now consider this:

The bivector lies in the *yz* plane. The standard vector cross product of and points in the *+x* direction, which is . The familiar cross product vector is the normal to the associated bivector (in 3D only), and evidently the bivector is *i* times the cross product vector. Similarly, you can show that and . It turns out that bivectors are more useful and better behaved than their “duals,” the cross products. For example, in the old vector world one must sometimes make subtle distinctions between “polar” vectors (the ordinary kind) and “axial” vectors which behave differently under reflection (examples are magnetic field vectors). In geometric algebra there is no such distinction.

When I first saw these relationships among the , , and , I was amazed. As a physics student I was introduced to the 2 by 2 “Pauli spin matrices” used to describe electron spin. The matrices, and their various product and commutation relationships, were taught as something special and particular to quantum mechanical spin systems. I was astonished to find that those 2 by 2 matrices behave exactly like the unit vectors in the geometric algebra context, as discussed above. This is an example of Hestenes’ argument that the mathematical education of physicists fails to bring together diverse branches of mathematics that can be unified in the geometric algebra context.

Another example of a need for unification is that as a physics student one encounters many different schemes for handling rotations. There is a beautiful representation of rotations in geometric algebra. Consider the geometric product *abb = a(bb) = a* if *b* is a unit vector. If we write this as *(ab)b = a*, and consider *ab* to be a rotation operator, you see that *ab* can be thought of as a rotor that rotates *b* into *a* (there is also scaling if one doesn’t use unit vectors).

For extensive treatments of geometric algebra, see for example the textbooks “Geometric Algebra for Physicists” and “Geometric Algebra for Computer Science.”