cross product

Cross products


In general, the term ‘cross product’ is used for any operation denoted by the symbol ‘×\times’, such as cartesian product, direct product, Tychonoff product, or (subsuming all of these) product in a category.

However, there is another completely different context, used in the elementary analysis of vector spaces, and that is what we discuss here. Originally isolated from the multiplication operation in quaternions as a binary operation on 3Im()\mathbb{R}^3 \simeq Im(\mathbb{H}), the cross product now has generalisations to other arities, other dimensions, and other ground fields.



The classical cross product on the Cartesian space 3\mathbb{R}^3 is the bilinear function

()×(): 3× 3 3 (-) \times (-)\colon \mathbb{R}^3 \times \mathbb{R}^3 \to \mathbb{R}^3

given by

(a,b,c)×(d,e,f)=(becf,cdaf,aebd). (a,b,c) \times (d,e,f) = (b e - c f, c d - a f, a e - b d) .

This operation is invariant under orthogonal transformations and there is nothing special here about the real numbers, so given any 33-dimensional oriented inner product space VV over any field, we have a bilinear cross product

()×():V×VV (-) \times (-)\colon V \times V \to V

given, upon choosing any oriented orthonormal basis for VV, by the formula above.


We have already, trivially, generalized the cross product to other ground fields. One way to generalise it to other dimensions is to identify characteristic features as a bilinear operation and see what operations in other dimensions have these.

In this vein, a binary cross product on any inner product space VV is a bilinear function

()×():V×VV (-) \times (-)\colon V \times V \to V

such that for all x,yVx, y\in V we have

  1. Alternation: x×x=0x \times x = 0.

  2. Orthgonality: x×yx \times y is orthogonal to both xx and yy; that is, x(x×y)=(x×y)y=0x \cdot (x \times y) = (x \times y) \cdot y = 0.

  3. Area: x×y=xy{\|x \times y\|} = {\|x\|} {\|y\|} if x,yx, y are orthogonal.

From these, we can prove a more general formula for x×y{\|x \times y\|}:

x×y 2=x 2y 2(xy) 2, {\|x \times y\|}^2 = {\|x\|}^2 {\|y\|}^2 - (x \cdot y)^2 ,

or equivalently

x×y=xy|sin(x,y)|. {\|x \times y\|} = {\|x\|} {\|y\|} {|\sin\angle(x,y)|} .

(Using the polarization identity to express xyx \cdot y in terms of x\|x\|, y\|y\|, and either x+y\|x + y\| or xy\|x - y\|, this is the double of Hero’s Formula for the area of a triangle.)

Conversely, using this more general area formula, we can prove both the restricted area formula and alternation, so that only orthogonality is needed as a separate axiom.

We then have over the real numbers:

  • In dimension 00 or 11, there is one binary cross product: x×y0x \times y \coloneqq 0.
  • In dimension 33, there are two binary cross products, one for each orientation, matching the classical cross product.
  • In dimension 77, there are uncountably many binary cross products. Even fixing a basis and requiring compatibility with this, there are still hundreds of cross products.
  • In any other finite dimension, there are no binary cross products at all.

These cross products exist over any base field, but as far as I know there may be additional cross products over some. (Of course, the claim that there are uncountably many cross products in 77 dimensions should be generalised and made more precise; the space of these inner products is some algebraic variety.)

Binary cross products are closely related to normed division algebras (NDAs). Given a normed division algebra AA, the imaginary hyperplane Im(A)Im(A) inherits an inner product from AA and gains a cross product as

x×yIm(xy)=12[x,y]=xy+xy. x \times y \coloneqq Im(x y) = \frac{1}{2}[x,y] = x y + x \cdot y .

Conversely, given an inner product space VV with a binary cross product, the orthogonal direct sum KVK \oplus V becomes a NDA as

(a,x)(b,y)=(abxy,ay+bx+x×y), (a,x) (b,y) = (a b - x \cdot y, a y + b x + x \times y) ,

where KK is the ground field.

By Hurwitz's theorem?, the only finite-dimensional NDAs over \mathbb{R} are \mathbb{R} itself (the real numbers), \mathbb{C} (the complex numbers), \mathbb{H} (the quaternions), and 𝕆\mathbb{O} (the octonions). Thus the limited possibilities for binary cross products are determined by the limited possibilities for NDA structures.


Given an oriented inner product space VV of finite dimension nn, we can define the signed volume of an nn-tuple of vectors. (See also volume form.) This allows us to characterise a co-unary cross product of n1n - 1 vectors as a multilinear operation

:V n1V ⨉\colon V^{n - 1} \to V

such that

(v 1,,v n1)v n=vol(v 1,,v n) ⨉(v_1,\ldots,v_{n-1}) \cdot v_n = vol(v_1,\ldots,v_n)

always. There is exactly one such cross product on any such VV (so two if we start with an unoriented inner product space).

In 33 dimensions, this also recovers the classical cross product.


Generalizing all of the above, let a vector-valued cross product on any inner product space VV be a multilinear function

:V kV ⨉\colon V^k \to V

for some natural number kk (called the arity?) such that:

  1. Alternation: (v 1,,v k)=0⨉(v_1,\ldots,v_k) = 0 if v i=v jv_i = v_j for some iji \ne j.

  2. Orthgonality: (v 1,,v k)⨉(v_1,\ldots,v_k) is orthogonal to each v iv_i.

  3. Area: (v 1,,v k)= iv i{\|⨉(v_1,\ldots,v_k)\|} = \prod_i {\|v_i\|} if the v iv_i are mutually orthogonal.

We can again extend (3) to get the magnitude of the cross product of any kk vectors; its square is the determinant of the matrix whose (i,j)(i,j)th entry is v iv jv_i \cdot v_j (the Gram determinant?), and then (1) again follows.

Then for an inner product space VV over \mathbb{R} of finite dimension nn, we have:

  • If k=0k = 0, then there is no cross product.
  • If k=1k = 1, then there is one cross product (always 00) in dimension 00, two cross products in dimension 22 (one for each orientation), and no others, and uncountably many in each even dimension n>2n \gt 2 (one for each way of writing n\mathbb{R}^n as as n/2n/2-fold internal direct sum of 22-dimensional subspaces, each of which is given an orientation, I think).
  • If k=2k = 2, then the possibilities are as listed above for binary cross products.
  • If k=3k = 3, then there is one cross product (always 00) for n2n \leq 2, two cross products (one for each orientation) when n=4n = 4, some cross products when n=8n = 8 that I don't understand (but which are presumably related to the octonions), and no others.
  • If 3<k<n13 \lt k \lt n - 1, then there are no cross products.
  • If k=n1k = n - 1, then there are two cross products, one for each orientation, as described above for (n1)(n-1)-ary cross products.
  • If k=nk = n, then there are no cross products.
  • If k>nk \gt n, then there is one cross product, whose value is always 00.


Fixing a field KK, let Vect be Vect KVect_K, the symmetric monoidal category of vector spaces over KK (with the usual tensor product), and let TT be any symmetric monoidal functor from VectVect to itself. Note that any inner product g:VVKg\colon V \otimes V \to K extends to an inner product T(g):T(V)T(V)KT(g)\colon T(V) \otimes T(V) \to K (ignoring questions of degeneracy); similarly, any element xx of VV, thought of as a linear map x:KVx\colon K \to V, gives rise to an element T(x)T(x) of T(V)T(V). The vector-valued cross products above use the identity functor for TT, but other possible choices for TT are VVVV \mapsto V \otimes V, VΛ 2VV \mapsto \Lambda^2 V, and the constant functor VKV \mapsto K. We could also take VectVect to be a full subcategory of Vect KVect_K closed under the tensor product, such as FinVect KFin Vect_K; this may allow more possibilities for TT in exchange for fewer possibilities for VV.

Given an inner-product space VV and a symmetric monoidal functor TT, a TT-valued cross product on VV is a multilinear function

:V kT(V) &#10761;\colon V^k \to T(V)

for some natural arity kk such that:

  1. Alternation: (v 1,,v k)=0&#10761;(v_1,\ldots,v_k) = 0 if v i=v jv_i = v_j for some iji \ne j.

  2. Orthgonality: (v 1,,v k)&#10761;(v_1,\ldots,v_k) is orthogonal (in T(V)T(V)) to each T(v i)T(v_i).

  3. Area: (v 1,,v k)= iv i{\|&#10761;(v_1,\ldots,v_k)\|} = \prod_i {\|v_i\|} if the v iv_i are mutually orthogonal (in VV).

Again it follows that in any case (v 1,,v k){\|&#10761;(v_1,\ldots,v_k)\|} is a square root of the Gram determinant, and again this implies both (1) and (3).

I do not know a full list of these, but one important example is the scalar-valued binary cross product in 22 dimensions:

(a,b)×(c,d)=adbc. (a, b) \times (c, d) = a d - b c .

Actually, this scalar-valued cross product x×yx \times y is simply the dot product x×yx \cdot \times{y}, where ×y\times{y} is the unary vector-valued cross product in 22 dimensions. (In a counterclockwise-oriented plane, it rotates a vector clockwise through a right angle.)

More generally, in any number n2n \geq 2 of dimensions, there is a multivector-valued binary cross product whose values are (n2)(n-2)-multivectors?; this includes the scalar-valued cross product when n=2n = 2 and the classical cross product when n=3n = 3, but gets more complicated for larger values of nn. Or generalizing the scalar-valued binary cross product in a different way, the volume form on an nn-dimensional inner-product space is a scalar-valued nn-ary cross product. More generally still, combining the dot product with any vector-valued cross product produces a scalar-valued cross product of 11 higher arity.


Exterior products

The cross product is also called ‘outer product’, and both of these terms are sometimes also used for the exterior product. In its most basic form, the exterior product of two vectors u,vu,v is a bivector uvu \wedge v. But note that this is not a bivector-valued cross product by the definition above, since it lacks orthogonality (and indeed has nothing to do with the inner product).

In 33 dimensions, given an inner product and an orientation, we can use the Hodge dual to turn this into a vector, and this is the classical cross product once more. In 22 dimensions, using the same structure, we can turn the bivector into a scalar; this recovers the scalar-valued binary cross product above. In general, this produces the binary (n2)(n-2)-vector-valued cross product.

Using only the inner product but not the orientation, we get (respectively) a pseudovector? (sometimes called an axial vector) or a pseudoscalar?; this perspective is common in geometric algebra. In general in dimension nn, a bivector becomes an (n2)(n-2)-pseudo-vector, but this is not usually an simplification.

In classical applications of the cross product, often not all of the structure is needed, and the exterior product is really the fundamental concept.


If MM is a Riemannian manifold, then the tangent space at each point is an inner product space, so it may be possible to smoothly assign a kk-ary cross product to these spaces. If this is done, then we can take the curl of a (k1)(k-1)-vector field? as follows:

  • Use the metric to turn the (k1)(k-1)-vector field into a (k1)(k-1)-form.
  • Take the exterior differential to get a kk-form.
  • Use the metric again to get a kk-vector field.
  • Apply the cross product to get a vector field (or more generally a tensor field for a tensor-valued cross product).

This vector field is the curl of the original (k1)(k-1)-vector field. This justifies the notation ×X\Del \times X for the curl.

(It's important that the cross product is alternating and multilinear, so that it makes sense to apply it to a kk-vector rather than to kk individual vectors.)

When k=2k = 2 and n=3n = 3, there is one smooth choice of cross product for each orientation of MM, and we recover the classical notion of curl.

When k=1k = 1 and n=2n = 2, we may also consider the scalar-valued curl, using the scalar-valued binary cross product described above. The scalar-valued curl of a vector field XX is the same as the divergence of the rotated vector field ×X\times{X} (using the unary vector-valued cross product in 22 dimensions); that is, ×X=×X\Del \times X = \Del \cdot \times{X}.


  • The English Wikipedia article Seven-dimensional cross product actually covers all non-zero vector-valued cross products in finite dimensions over the real numbers.

Last revised on March 28, 2018 at 17:13:04. See the history of this page for a list of all contributions to it.