Quaternion rotation biradial

In mathematics, a quaternion biradial[1](Art.93) is the quotient (or product \mathbf{b}/\mathbf{a}, \mathbf{b}\mathbf{a}, \mathbf{a}\mathbf{b}, \mathbf{a}/\mathbf{b}) of two pure quaternion vectors \mathbf{a} and \mathbf{b}, sometimes called rays.

Biradial b/a.
Biradial b/a

Consider the quaternion biradial b=\mathbf{b}/\mathbf{a} (read “b by a”). The biradial b is an operator that turns \mathbf{a} into \mathbf{b} as an operator on \mathbf{a}: \mathbf{b}=b\mathbf{a}=\mathbf{b}\mathbf{a}^{-1} \mathbf{a}=\mathbf{b}. The biradial turning operation is a composition of a rotation and a scaling that rotates \mathbf{a} into the line of \mathbf{b}, followed with scaling by | \mathbf{b} | / | \mathbf{a} |. If | \mathbf{a} | = | \mathbf{b} | then | b | =1 and b acts as only a rotation operator (a.k.a., a versor, rotor, or 2D spinor) in the \mathbf{a}\mathbf{b}-plane through the angle \theta from \mathbf{a} to \mathbf{b}.

Quaternion spatial rotations explained using Hamilton’s biradial concept

Quaternion identities

For simplicity in the following explanations, let | \mathbf{a} | = | \mathbf{b} | =1 so that \mathbf{a} and \mathbf{b} are unit vectors. Frequent use will be made of the following identities.

Definition of quaternion units and products:

\begin{array}{rcl}
  \mathbf{i}^{2} =\mathbf{j}^{2} =\mathbf{k}^{2} & = &
  \mathbf{i}\mathbf{j}\mathbf{k}=-1\\
  q & = & q_{w} +q_{x} \mathbf{i}+q_{y} \mathbf{j}+q_{z} \mathbf{k}=q_{w}
  +\mathbf{q}_{} = \mathrm{S} q+ \mathrm{V} q\\
  p & = & p_{w} +p_{x} \mathbf{i}+p_{y} \mathbf{j}+p_{z} \mathbf{k}=p_{w}
  +\mathbf{p}_{} = \mathrm{S} p+ \mathrm{V} p\\
  p q & = & ( p_{w} q_{w} -\mathbf{p} \cdot \mathbf{q} ) + ( p_{w}
  \mathbf{q}+q_{w} \mathbf{p}+\mathbf{p} \times \mathbf{q} ) .\end{array}

Unit vectors:

\begin{array}{rcl}
  \mathbf{u} & = & u_{x} \mathbf{i}+u_{y} \mathbf{j}+u_{z} \mathbf{k}=
  \sin( \phi ) \left[ \cos( \theta ) \mathbf{i}+
  \sin( \theta ) \mathbf{j} \right] + \cos( \phi )
  \mathbf{k}\\
  \mathbf{a}^{2} =\mathbf{b}^{2} =\mathbf{u}^{2} & = & u^{2}_{x}
  \mathbf{i}^{2} +u^{2}_{y} \mathbf{j}^{2} +u^{2}_{z} \mathbf{k}^{2} +\\
  &  & u_{x} u_{y} ( \mathbf{i}\mathbf{j}+\mathbf{j}\mathbf{i} ) +u_{x} u_{z}
  ( \mathbf{i}\mathbf{k}+\mathbf{k}\mathbf{i} ) +u_{y} u_{z} (
  \mathbf{j}\mathbf{k}+\mathbf{k}\mathbf{j} )\\
  & = & -u_{x}^{2} -u_{y}^{2} -u_{z}^{2} =- | \mathbf{u} |^{2} =-1.\end{array}

Conjugate, tensor, and versor operations:

\begin{array}{rcl}
  \mathrm{K} q & = & \mathrm{K} \left( \mathrm{S} q+ \mathrm{V} q \right) =
  \mathrm{S} q- \mathrm{V} q=q_{w} -\mathbf{q}\\
  \mathrm{T} q & = & | q | = \sqrt{q  \mathrm{K} q} = \sqrt{q^{2}_{w}
  -\mathbf{q}^{2}} = \sqrt{q^{2}_{w} +q^{2}_{x} +q^{2}_{y} +q^{2}_{z}} \geq
  0\\
  \mathrm{U} q & = & \frac{q}{| q |} = \frac{q}{\mathrm{T} q} =q \left(
  \mathrm{T} q \right)^{-1} =q  \mathrm{T} (  q^{-1} ) =q  \mathrm{T} q^{-1}\\
  q & = & \mathrm{T} q  \mathrm{U} q\\
  \mathrm{K} q & = & q^{-1} \mathrm{T} q^{2} = \frac{\mathrm{T} q}{\mathrm{U}
  q} = \mathrm{T} q \left( \mathrm{U} q \right)^{-1} .\end{array}

Inverses of a quaternion and a vector:

\begin{array}{rcl}
  q^{-1} & = & \frac{\mathrm{K} q}{q  \mathrm{K} q} = \frac{\mathrm{K}
  q}{\mathrm{T} q^{2}} = \frac{\mathrm{KU} q}{\mathrm{T} q}\\
  \left( \mathrm{U} q \right)^{-1} & = & \frac{\mathrm{KUU} q}{\mathrm{TU} q}
  = \frac{\mathrm{KU} q}{1} = \mathrm{KU} q= \mathrm{SU} q- \mathrm{VU} q\\
  \mathrm{K} q & = & \mathrm{T} q \mathrm{KU} q= \mathrm{KT} q \mathrm{U} q\\
  \mathbf{a}^{-1} & = & \frac{\mathrm{K} \mathbf{a}}{\mathbf{a} \mathrm{K}
  \mathbf{a}} = \frac{-\mathbf{a}}{| \mathbf{a} |^{2}} =-\mathbf{a}\\
  \mathbf{a}^{-1} \mathbf{a} & = & 1.\end{array}

Vector products:

\begin{array}{rcl}
  \mathbf{a}\mathbf{b} & = & -\mathbf{a} \cdot \mathbf{b}+\mathbf{a} \times
  \mathbf{b}= \frac{1}{2} ( \mathbf{a}\mathbf{b}+\mathbf{b}\mathbf{a} ) +
  \frac{1}{2} ( \mathbf{a}\mathbf{b}-\mathbf{b}\mathbf{a} )\\
  \mathbf{a} \cdot \mathbf{b} & = & - \frac{1}{2} (
  \mathbf{a}\mathbf{b}+\mathbf{b}\mathbf{a} ) = | \mathbf{a} | | \mathbf{b} | 
  \mathrm{cos} ( \theta ) = \mathrm{cos} ( \theta )\\
  & = & a_{x} b_{x} +a_{y} b_{y} +a_{z} b_{z}\\
  \mathbf{a} \times \mathbf{b} & = & \frac{1}{2} (
  \mathbf{a}\mathbf{b}-\mathbf{b}\mathbf{a} ) = | \mathbf{a} | | \mathbf{b} | 
  \sin( \theta ) \mathbf{n}= \sin( \theta ) \mathbf{n}\\
  & = & \left|\begin{array}{ccc}
    \mathbf{i} & \mathbf{j} & \mathbf{k}\\
    a_{x} & a_{y} & a_{z}\\
    b_{x} & b_{y} & b_{z}
  \end{array}\right|\\
  -\mathbf{a} \times \mathbf{b} & = & \mathbf{b} \times \mathbf{a}\\
  \mathbf{a}\mathbf{b}+\mathbf{b}\mathbf{a} & = & -2 ( \mathbf{a} \cdot
  \mathbf{b} ) =2 \mathrm{S} ( \mathbf{a}\mathbf{b} )\\
  \mathbf{a}\mathbf{b}-\mathbf{b}\mathbf{a} & = & 2 ( \mathbf{a} \times
  \mathbf{b} ) =2 \mathrm{V} ( \mathbf{a}\mathbf{b} )\\
  \mathrm{cos} ( - \theta ) & = & \mathrm{cos} ( \theta )\\
  \sin( - \theta ) & = & -\sin ( \theta )\\
  \mathrm{K} ( \mathbf{a}\mathbf{b} ) & = & -\mathbf{a} \cdot
  \mathbf{b}-\mathbf{a} \times \mathbf{b}=-\mathbf{b} \cdot
  \mathbf{a}+\mathbf{b} \times \mathbf{a}=\mathbf{b}\mathbf{a}\\
  \mathrm{K} ( \mathbf{b}/\mathbf{a} ) & = & \mathrm{K} (
  -\mathbf{b}\mathbf{a} ) =-\mathbf{a}\mathbf{b}=\mathbf{a}/\mathbf{b}\end{array}

The operations \mathrm{S} q, \mathrm{V} q, \mathrm{K} q, \mathrm{T} q, \mathrm{U} q are the scalar part, vector part, conjugate, tensor, and versor of quaternion q in Hamilton’s notation and terminology.

Since scalars commute with all elements in the quaternion algebra, so do scalars such as \mathrm{T} q, \mathbf{a}^{2}, \mathbf{b}^{2}, and \mathbf{a}^{-1} \mathbf{a}.

For perpendicular vectors \mathbf{u}\mathbf{v}=\mathbf{u} \times \mathbf{v}, and \mathbf{v}\mathbf{u}=-\mathbf{u}\mathbf{v}. Therefore, \mathbf{i}\mathbf{j}=-\mathbf{j}\mathbf{i}, \mathbf{i}\mathbf{k}=-\mathbf{k}\mathbf{i}, and \mathbf{j}\mathbf{k}=-\mathbf{k}\mathbf{j}.

For any scalar t and value i where i^{2} =-1, the Taylor series for e^{x} gives the Euler formula

\begin{array}{rcl}
  \sum^{n= \infty}_{n=0} \frac{( t i )^{n}}{n!} =e^{t i} & = & \mathrm{cos} (
  t ) + \sin( t ) i.\end{array}

The biradial b/a

The biradial b can be written

\begin{array}{rcl}
  b & = & \mathbf{b}\mathbf{a}^{-1} = ( \mathbf{b}^{||} +\mathbf{b}^{\bot} )
  \mathbf{a}^{-1} =- ( \mathbf{b}^{||} +\mathbf{b}^{\bot} ) \mathbf{a}\\
  & = & - \left( | \mathbf{b}^{||} | \mathbf{a}+ | \mathbf{b}^{\bot} |
  \frac{\mathbf{b}^{\bot}}{| \mathbf{b}^{\bot} |} \right) \mathbf{a}=
  \mathrm{cos} ( \theta ) + \sin( \theta ) \mathbf{a}
  \frac{\mathbf{b}^{\bot}}{| \mathbf{b}^{\bot} |}\\
  & = & \mathrm{cos} ( \theta ) + \sin( \theta )
  \mathbf{n}=e^{\theta \mathbf{n}}\\
  & = & \mathbf{a} \cdot \mathbf{b}+\mathbf{a} \times
  \mathbf{b}=-\mathbf{b}\mathbf{a}\end{array}

where \mathbf{b}^{||} is the component of \mathbf{b} parallel to \mathbf{a}, \mathbf{b}^{\bot} is the component of \mathbf{b} perpendicular to \mathbf{a}, \theta is the angle from \mathbf{a} to \mathbf{b}, and \mathbf{n}=\mathbf{a} \times \frac{\mathbf{b}^{\bot}}{| \mathbf{b}^{\bot} |} is the unit vector normal to the \mathbf{a}\mathbf{b}-plane.

Quadrantal versors and handedness

When \theta = \pi /2 then b=\mathbf{n}, showing that \mathbf{n} is the quadrantal versor of the \mathbf{a}\mathbf{b}-plane perpendicular to \mathbf{n}. We can also write

\begin{array}{rcl}
  \mathbf{n} & = & e^{\frac{\pi}{2} \mathbf{n}}\\
  b & = & \mathbf{n}^{\frac{2 \theta}{\pi}} =\mathbf{n}^{t}\end{array}

where t is the number of quadrants (multiples of \pi /2 radians) of rotation round \mathbf{n} as the axis of rotation following a right-hand rule on a right-handed axes model or following a left-hand rule on a left-handed axes model. If \mathbf{b} is at a positive angle in the plane from \mathbf{a}, this means that on right-handed axes, b\mathbf{a} rotates \mathbf{a} by right-hand rule counter-clockwise from \mathbf{a} into \mathbf{b}, while on left-handed axes b\mathbf{a} rotates \mathbf{a} by left-hand rule clockwise from \mathbf{a} into \mathbf{b}. Angles are positive counter-clockwise on right-handed axes, and are positive clockwise on left-handed axes. The choice of right-handed or left-handed axes is a modeling choice outside the algebra that affects the geometric interpretation of the algebra but not the algebra itself.

The relation between the unit vectors \mathbf{i}^{2} =\mathbf{j}^{2} =\mathbf{k}^{2} =\mathbf{i}\mathbf{j}\mathbf{k}=-1 as defined by Hamilton, also defines \mathbf{i},\mathbf{j},\mathbf{k} as the quadrantal versors or biradials

\begin{align}
  \mathbf{i} & = \mathbf{k}/\mathbf{j}=e^{\frac{\pi}{2} \mathbf{i}}\\
  \mathbf{j} & = \mathbf{i}/\mathbf{k}=e^{\frac{\pi}{2} \mathbf{j}}\\
  \mathbf{k} & = \mathbf{j}/\mathbf{i}=e^{\frac{\pi}{2} \mathbf{k}}\end{align}

following a right-hand (counter-clockwise) rule on right-handed axes or a left-hand (clockwise) rule on left-handed axes, where \mathbf{i}^{t} ,\mathbf{j}^{t} ,\mathbf{k}^{t} each rotate by t \frac{\pi}{2} radians in their perpendicular plane according to the matching handedness rule and axes model being used.

Quaternions and the left-hand rule on left-handed axes

In a sense, a left-hand rule and axes are a better fit to Hamilton’s defined relation since then a versor used as left-side multiplier to operate on a right-side multiplicand performs left-hand clockwise rotation for positive angles, and the same versor used as a right-side multiplier to operate on a left-side multiplicand performs right-hand counter-clockwise rotation by the same angle (the reverse rotation). For example, imagine working on left-handed axes and interpret the geometry represented by the following quadrantal versor rotations

\begin{align}
  e^{\frac{\pi}{2} \mathbf{k}} ( x\mathbf{i}+y\mathbf{j} ) =\mathbf{k} (
  x\mathbf{i}+y\mathbf{j} ) & = x\mathbf{j} ( -\mathbf{i} )
  \mathbf{i}+y\mathbf{j} ( -\mathbf{i} ) \mathbf{j}=x\mathbf{j}-y\mathbf{i}\\
  ( x\mathbf{j}-y\mathbf{i} ) e^{\frac{\pi}{2} \mathbf{k}} = (
  x\mathbf{j}-y\mathbf{i} ) \mathbf{k} & = x\mathbf{j}\mathbf{j} (
  -\mathbf{i} ) -y\mathbf{i}\mathbf{j} ( -\mathbf{i} )
  =x\mathbf{i}+y\mathbf{j}\\
  ( x\mathbf{j}-y\mathbf{i} ) e^{- \frac{\pi}{2} \mathbf{k}} = (
  x\mathbf{j}-y\mathbf{i} ) \mathbf{k}^{-1} & =( x\mathbf{j}-y\mathbf{i} )
  ( -\mathbf{k} ) =-x\mathbf{i}-y\mathbf{j}=e^{\pi \mathbf{k}} (
  x\mathbf{i}+y\mathbf{j} )\\
  e^{\frac{\pi}{2} \mathbf{k}} ( x\mathbf{i}+y\mathbf{j} ) e^{- \frac{\pi}{2}
  \mathbf{k}} & = e^{2 \frac{\pi}{2} \mathbf{k}} ( x\mathbf{i}+y\mathbf{j} )
  =- ( x\mathbf{i}+y\mathbf{j} )\end{align}

which show that operating with \mathbf{k} on the left-side performs left-hand clockwise rotation, operating with \mathbf{k} on the right-side performs a right-hand counter-clockwise (reverse) rotation, and operating with \mathbf{k}^{-1} on the right-side performs another clockwise rotation.

On left-handed axes, there is arguably more consistency of handedness as if the quaternion relation \mathbf{i}^{2} =\mathbf{j}^{2} =\mathbf{k}^{2} =\mathbf{i}\mathbf{j}\mathbf{k}=-1 was defined for a left-handed system of axes. It is also possible for the relation to have been defined \mathbf{i}^{2} =\mathbf{j}^{2} =\mathbf{k}^{2} =\mathbf{k}\mathbf{j}\mathbf{i}=-1, inverting the quaternion space and making right-handed axes arguably match the geometric interpretation of the algebra better. In Hamilton’s book Lectures on Quaternions[1] he often uses left-handed[1](Art.228) axes with left-hand rule clockwise rotations, and it seems that was often the preferred orientation used by the inventor of quaternions.

Rotation formulas

These results so far will be shown to generalize for any quadrantal versor \mathbf{u} rotating a vector \mathbf{v} by 2 \theta =2t quadrants or by 2 \theta =2t \frac{\pi}{2} =t \pi radians in the plane perpendicular to \mathbf{u} as

\begin{align}
  \mathbf{v}_{2t} & = \mathbf{u}^{t} \mathbf{v}\mathbf{u}^{-t} =e^{\frac{t
  \pi}{2} \mathbf{u}} \mathbf{v}e^{- \frac{t \pi}{2} \mathbf{u}}\\
  \mathbf{v}_{2 \theta} & = \mathbf{u}^{\frac{2 \theta}{\pi}}
  \mathbf{v}\mathbf{u}^{- \frac{2 \theta}{\pi}} =e^{\theta \mathbf{u}}
  \mathbf{v}e^{- \theta \mathbf{u}}\end{align}

where for t=1 quadrant the result is the reflection of \mathbf{v} in \mathbf{u}, or \mathbf{v} conically rotated \pi round \mathbf{u}, or is \mathbf{v} conjugated by \mathbf{u}. Note that we need to convert angles in quadrants to radians since the ordinary trigonometric functions \sin ( \theta ), \cos( \theta ) are defined for \theta in radians.

The scalar power of a vector

Any versor can be constructed or expressed using its rotational angle t in quadrants and its unit vector or quadrantal versor rotational axis \mathbf{u} as \mathbf{u}^{t}. This expression seems to be seldomly used but is important to understand since it gives a clear geometric meaning to taking the scalar power of a vector. For a general vector \mathbf{v}= | \mathbf{v} | \mathbf{u}_{v}, its scalar power of t can be expressed as \mathbf{v}^{t} = | \mathbf{v} |^{t} \mathbf{u}^{t}_{v} and still represents a versor \left( \mathrm{U} \mathbf{v} \right)^{t} =\mathbf{u}^{t}_{v} that rotates round \mathbf{u}_{v} by t quadrants or t \frac{\pi}{2} radians, and also a scaling or tensor (in Hamilton’s terminology and notation) \mathrm{T} \mathbf{v}= | \mathbf{v} | that is applied t times.

Rotation of vector components parallel and perpendicular to a rotation axis

When \mathbf{v} is a vector in the plane perpendicular to \mathbf{u}, then \mathbf{u} and \mathbf{v} are perpendicular and obey the anti-commutative multiplication property \mathbf{v}\mathbf{u}=\mathbf{v} \times \mathbf{u}=-\mathbf{u} \times \mathbf{v}=-\mathbf{u}\mathbf{v}, leading to

\begin{array}{rcl}
  \mathbf{v}_{2t} & = & \mathbf{u}^{t} \mathbf{v}\mathbf{u}^{-t}
  =\mathbf{u}^{t}   \mathrm{K} ( \mathbf{u}^{-t} )  \mathbf{v}\\
  & = & \mathbf{u}^{t} \mathbf{u}^{t}  \mathbf{v}=\mathbf{u}^{2t}
  \mathbf{v}\\
  & = & e^{\frac{t \pi}{2} \mathbf{u}} e^{\frac{t \pi}{2} \mathbf{u}}
  \mathbf{v}=e^{t \pi \mathbf{u}} \mathbf{v}=e^{2 \theta \mathbf{u}}
  \mathbf{v}\end{array}

which demonstrates that the conjugate versor \mathbf{u}^{-t} applied as right-side operator on \mathbf{v} rotates the same (in the plane perpendicular to the versor axis \mathbf{u}) as the versor \mathbf{u}^{t} itself applied as left-side operator on \mathbf{v}, and vice versa. The reverse rotation can be written

\begin{array}{rcl}
  \mathbf{v} & = & \mathrm{K} ( \mathbf{u}^{t} ) \mathbf{v}_{2t} \mathrm{K} (
  \mathbf{u}^{-t} ) =\mathbf{u}^{-t} \mathbf{v}_{2t} \mathbf{u}^{t}\\
  & = & \mathbf{u}^{-t} ( \mathbf{u}^{t} \mathbf{v}\mathbf{u}^{-t} )
  \mathbf{u}^{t}\end{array}

which is also seen as two successive rotations with the second outer rotation undoing or reversing the first inner rotation.

When \mathbf{v} is a vector parallel to \mathbf{u}, then their multiplication \mathbf{v}\mathbf{u}=\mathbf{v} \cdot \mathbf{u}=\mathbf{u}\mathbf{v} is commutative, leading to

\begin{array}{rcl}
  \mathbf{v}_{2 \theta} & = & e^{\theta \mathbf{u}} \mathbf{v}e^{- \theta
  \mathbf{u}} =e^{\theta \mathbf{u}} e^{- \theta \mathbf{u}}
  \mathbf{v}=\mathbf{v}\end{array}

where \mathbf{v} is unaffected by the rotation.

In general, a vector \mathbf{v} will be neither completely parallel nor perpendicular to another vector \mathbf{u}. Similar to how \mathbf{b} was written above in the expressions for \mathbf{b}/\mathbf{a}, a vector \mathbf{v} can be written \mathbf{v}=\mathbf{v}^{||\mathbf{u}} +\mathbf{v}^{\bot \mathbf{u}} since it is always possible for any vector \mathbf{v} to be written as a sum of components parallel and perpendicular to any other vector \mathbf{u}. The parallel part

\begin{array}{rcl}
  \mathbf{v}^{||\mathbf{u}} & = & \mathcal{P}_{\mathbf{u}} ( \mathbf{v} ) =- (
  \mathbf{v} \cdot \mathbf{u} ) /\mathbf{u}=\mathbf{v}-\mathbf{v}^{\bot
  \mathbf{u}}\\
  & = & ( \mathbf{v} \cdot \mathbf{u} ) \frac{\mathbf{u}}{| \mathbf{u} |^{2}}
  = \frac{( \mathbf{u} \cdot \mathbf{v} )}{( \mathbf{u} \cdot \mathbf{u} )}
  \mathbf{u}\end{array}

is the projection of \mathbf{v} on \mathbf{u}. The perpendicular part

\begin{array}{rcl}
  \mathbf{v}^{\bot \mathbf{u}} & = & \mathcal{P}^{\bot}_{\mathbf{u}} (
  \mathbf{v} ) = ( \mathbf{v} \times \mathbf{u} )
  /\mathbf{u}=\mathbf{v}-\mathbf{v}^{||\mathbf{u}}\\
  & = & ( \mathbf{v} \times \mathbf{u} ) \times \frac{-\mathbf{u}}{|
  \mathbf{u} |^{2}} = \frac{\mathbf{u}}{| \mathbf{u} |^{2}} \times (
  \mathbf{v} \times \mathbf{u} )\\
  & = & \frac{\mathbf{u}}{| \mathbf{u} |^{2}} ( \mathbf{v} \times \mathbf{u}
  ) = \frac{( \mathbf{u} \times \mathbf{v} )}{( \mathbf{u} \cdot \mathbf{u} )}
  \times \mathbf{u}\end{array}

is the rejection of \mathbf{v} by \mathbf{u}. We can also write the orthogonalization of \mathbf{v} by \mathbf{u} as

\begin{array}{rcl}
  \mathbf{v}=\mathbf{v}\mathbf{u}/\mathbf{u} & = & ( -\mathbf{v} \cdot
  \mathbf{u}+\mathbf{v} \times \mathbf{u} )
  /\mathbf{u}=\mathcal{P}_{\mathbf{u}} ( \mathbf{v} )
  +\mathcal{P}^{\bot}_{\mathbf{u}} ( \mathbf{v} ) .\end{array}

Combining some results from above we get

\begin{array}{rcl}
  \mathbf{v}_{2 \theta} & = & e^{\theta \mathbf{u}} \mathbf{v}e^{- \theta
  \mathbf{u}} =e^{\theta \mathbf{u}} ( \mathbf{v}^{||\mathbf{u}}
  +\mathbf{v}^{\bot \mathbf{u}} ) e^{- \theta \mathbf{u}}\\
  & = & e^{\theta \mathbf{u}} \mathbf{v}^{||\mathbf{u}} e^{- \theta
  \mathbf{u}} +e^{\theta \mathbf{u}} \mathbf{v}^{\bot \mathbf{u}} e^{- \theta
  \mathbf{u}}\\
  & = & e^{\theta \mathbf{u}} e^{- \theta \mathbf{u}}
  \mathbf{v}^{||\mathbf{u}} +e^{\theta \mathbf{u}} e^{\theta \mathbf{u}}
  \mathbf{v}^{\bot \mathbf{u}}\\
  & = & \mathbf{v}^{||\mathbf{u}} +e^{2 \theta \mathbf{u}} \mathbf{v}^{\bot
  \mathbf{u}}\end{array}

which represents the component \mathbf{v}^{||\mathbf{u}} unaffected by a null (or any) rotation round \mathbf{u}, while the component \mathbf{v}^{\bot \mathbf{u}} undergoes a planar rotation by 2 \theta in the plane perpendicular to \mathbf{u}. The sum of these vectors is the rotated version \mathbf{v}_{2 \theta} of \mathbf{v}. This is an important formula for the type of rotation known as conical rotation by 2 \theta round the line of \mathbf{u} relative to the origin. The cone apex is the origin, the cone base is in the plane perpendicular to and intersecting \mathbf{v}^{||\mathbf{u}} at distance | \mathbf{v}^{||\mathbf{u}} | from the origin, and the sides of the cone are swept by the line of \mathbf{v} as it is rotated round axis \mathbf{u} for a complete 2 \pi rotation.

A versor \mathbf{u}^{t} and its conjugate \mathbf{u}^{-t} have the same angle but inverse axes

\begin{array}{rcl}
  \angle ( \mathbf{u}^{t} ) = \angle ( \mathbf{u}^{-t} ) & = & t \pi /2=
  \theta\\
  \mathrm{Ax} ( \mathbf{u}^{t} ) =- \mathrm{Ax} ( \mathbf{u}^{-t} ) & = &
  \mathbf{u}\end{array}

or they have the same axis but reverse angles

\begin{array}{rcl}
  \angle ( \mathbf{u}^{t} ) =- \angle ( \mathbf{u}^{-t} ) & = & t \pi /2=
  \theta\\
  \mathrm{Ax} ( \mathbf{u} ) = \mathrm{Ax} ( \mathbf{u}^{-t} ) & = &
  \mathbf{u}\end{array}

however, there is often a preference to take positive angles and inverse axes. The conjugate or inverse versor \mathbf{u}^{-t} is sometimes also called the reversor of \mathbf{u}^{t}.

We’ve looked at the biradial \mathbf{b}/\mathbf{a} already, so let’s now look at the other products.

The product ba

The product \mathbf{b}\mathbf{a} gives

\begin{array}{rcl}
  \mathbf{b}\mathbf{a} & = & \mathbf{b}\mathbf{a}^{-1} \mathbf{a}^{2}
  =\mathbf{a}^{2} \mathbf{b}\mathbf{a}^{-1} =-\mathbf{b}\mathbf{a}^{-1}\\
  & = & e^{\pi \mathbf{n}} e^{\theta \mathbf{n}} =e^{( \pi + \theta )
  \mathbf{n}}\\
  & = & e^{( \pi + \theta -2 \pi ) \mathbf{n}} =e^{( \theta - \pi )
  \mathbf{n}} =e^{( \pi - \theta ) ( -\mathbf{n} )}\\
  & = & - \left[ \mathrm{cos} ( \theta ) + \sin ( \theta ) \mathbf{n}
  \right] =-\mathbf{b} \cdot \mathbf{a}+\mathbf{b} \times \mathbf{a}=
  \mathrm{K} ( \mathbf{a}\mathbf{b} )\end{array}

showing that, compared to the quotient \mathbf{b}/\mathbf{a}, the product \mathbf{b}\mathbf{a} rotates by an additional angle \pi or an angle \pi + \theta round the same axis \mathbf{n}, or rotates by the supplement angle \pi - \theta in the opposite direction round the inverse axis -\mathbf{n}. Notice how multiplying by -1 is the same as rotating by an additional \pm \pi round the same axis.

The biradial a/b

The biradial \mathbf{a}/\mathbf{b} gives

\begin{array}{rcl}
  \mathbf{a}\mathbf{b}^{-1} & = & -\mathbf{a}\mathbf{b}=-\mathbf{a} (
  \mathbf{b}^{||} +\mathbf{b}^{\bot} )\\
  & = & -\mathbf{a} \left( | \mathbf{b}^{||} | \mathbf{a}+ |
  \mathbf{b}^{\bot} | \frac{\mathbf{b}^{\bot}}{| \mathbf{b}^{\bot} |} \right)
  = \mathrm{cos} ( \theta ) - \sin ( \theta ) \mathbf{a}
  \frac{\mathbf{b}^{\bot}}{| \mathbf{b}^{\bot} |}\\
  & = & \mathrm{cos} ( \theta ) - \sin ( \theta ) \mathbf{n}=e^{-
  \theta \mathbf{n}}\\
  & = & \mathbf{a} \cdot \mathbf{b}-\mathbf{a} \times
  \mathbf{b}=-\mathbf{a}\mathbf{b}= \mathrm{K} ( \mathbf{b}/\mathbf{a} )\end{array}

which is the inverse of \mathbf{b}/\mathbf{a}, as expected, that rotates by - \theta round the same axis \mathbf{n}.

The product ab

The product \mathbf{a}\mathbf{b} gives

\begin{array}{rcl}
  \mathbf{a}\mathbf{b} & = & \mathbf{a}\mathbf{b}^{-1} \mathbf{b}^{2}
  =-\mathbf{a}\mathbf{b}^{-1}\\
  & = & e^{\pi \mathbf{n}} e^{- \theta \mathbf{n}} =e^{( \pi - \theta )
  \mathbf{n}}\\
  & = & - \left[ \mathrm{cos} ( - \theta ) + \sin ( - \theta )
  \mathbf{n} \right] =- \mathrm{cos} ( \theta ) + \sin ( \theta )
  \mathbf{n}\\
  & = & -\mathbf{a} \cdot \mathbf{b}+\mathbf{a} \times \mathbf{b}= \mathrm{K}
  ( \mathbf{b}\mathbf{a} )\end{array}

showing that, compared to the quotient \mathbf{b}/\mathbf{a}, the product \mathbf{a}\mathbf{b} rotates by the supplement angle \pi - \theta round the same axis \mathbf{n}.

Pairs of conjugate versors

Notice that \angle ( \mathbf{b}/\mathbf{a} ) = \theta & \angle ( \mathbf{a}/\mathbf{b} ) =- \theta, and \angle ( \mathbf{a}\mathbf{b} ) = \pi - \theta & \angle ( \mathbf{b}\mathbf{a} ) = \theta - \pi are two pairs of conjugate versors. Conjugates have the same angle of rotation but round inverse axes, and therefore rotate in opposite directions. The conjugate of a versor is also its inverse, so they are both pairs of inverses.

Conjugate versors.
Conjugate versors: products and quotients of unit vectors.

The rotation formula (b/a)v(a/b)

For the \mathbf{a}\mathbf{b}-plane of the biradial \mathbf{b}/\mathbf{a}, the unit vectors \mathbf{a} and \mathbf{b} span the plane and are a basis for vectors in the plane so that any vector in the plane can be written in the form \alpha \mathbf{a}+ \beta \mathbf{b}. The unit vector \mathbf{n}=\mathbf{a} \times \frac{\mathbf{b}^{\bot}}{| \mathbf{b}^{\bot} |} spans the 3rd linearly independent spatial dimension. An arbitrary vector \mathbf{v} of the pure quaternion vector space can be written \mathbf{v}= ( \alpha \mathbf{a}+ \beta \mathbf{b} ) + \gamma \mathbf{n}=\mathbf{v}^{||} +\mathbf{v}^{\bot}, where \mathbf{v}^{||} is the component in the \mathbf{a}\mathbf{b}-plane and \mathbf{v}^{\bot} is the component perpendicular to the \mathbf{a}\mathbf{b}-plane.

The biradial \mathbf{b}/\mathbf{a} applied to an arbitrary vector \mathbf{v} gives

\begin{array}{rcl}
  \mathbf{b}\mathbf{a}^{-1} \mathbf{v} & = & e^{\theta \mathbf{n}} (
  \mathbf{v}^{||} +\mathbf{v}^{\bot} ) =e^{\theta \mathbf{n}} ( ( \alpha
  \mathbf{a}+ \beta \mathbf{b} ) + \gamma \mathbf{n} )\\
  & = & \alpha e^{\theta \mathbf{n}} \mathbf{a}+ \beta e^{\theta \mathbf{n}}
  \mathbf{b}+ \gamma e^{\theta \mathbf{n}} \mathbf{n}\\
  & = & \alpha \mathbf{b}+ \beta \mathbf{b}\mathbf{a}^{-1} \mathbf{b}+ \gamma
  e^{\theta \mathbf{n}} e^{\frac{\pi}{2} \mathbf{n}}\\
  & = & \alpha \mathbf{b}+ \beta \mathbf{b}\mathbf{a}^{-1}
  \mathbf{b}\mathbf{a}^{-1} \mathbf{a}+ \gamma e^{\left( \theta +
  \frac{\pi}{2} \right) \mathbf{n}}\\
  & = & \alpha \mathbf{b}+ \beta e^{\theta \mathbf{n}} e^{\theta \mathbf{n}}
  \mathbf{a}+ \gamma e^{\left( \theta + \frac{\pi}{2} \right) \mathbf{n}}\\
  & = & \alpha \mathbf{b}+ \beta e^{2 \theta \mathbf{n}} \mathbf{a}+ \gamma
  e^{\left( \theta + \frac{\pi}{2} \right) \mathbf{n}}\end{array}

where e^{\theta \mathbf{n}} \mathbf{v}^{||} = \alpha \mathbf{b}+ \beta e^{2 \theta \mathbf{n}} \mathbf{a} is the component of \mathbf{v} in the \mathbf{a}\mathbf{b}-plane and rotated by \theta in the plane. The other value \gamma e^{\left( \theta + \frac{\pi}{2} \right) \mathbf{n}} is another quaternion that rotates by \theta + \frac{\pi}{2} and scales by \gamma, and by itself it is not a useful part of the result; this quaternion value can be eliminated as follows

\begin{array}{rcl}
  \gamma e^{\left( \theta + \frac{\pi}{2} \right) \mathbf{n}} e^{- \theta
  \mathbf{n}} & = & \gamma e^{\frac{\pi}{2} \mathbf{n}} = \gamma \mathbf{n}\end{array}

where we recognize e^{- \theta \mathbf{n}} =\mathbf{a}/\mathbf{b}= ( \mathbf{b}/\mathbf{a} )^{-1}. This suggests trying the following

\begin{array}{rcl}
  ( \mathbf{b}/\mathbf{a} ) \mathbf{v} ( \mathbf{a}/\mathbf{b} ) & = & \left(
  \alpha \mathbf{b}+ \beta e^{2 \theta \mathbf{n}} \mathbf{a}+ \gamma
  e^{\left( \theta + \frac{\pi}{2} \right) \mathbf{n}} \right) e^{- \theta
  \mathbf{n}}\\
  & = & \alpha \mathbf{b}\mathbf{a}\mathbf{b}^{-1} + \beta e^{2 \theta
  \mathbf{n}} \mathbf{a}\mathbf{a}\mathbf{b}^{-1} + \gamma \mathbf{n}\\
  & = & \alpha \mathbf{b}\mathbf{a}^{-1} \mathbf{b}\mathbf{a}^{-1}
  \mathbf{a}+ \beta e^{2 \theta \mathbf{n}} \mathbf{b}+ \gamma \mathbf{n}\\
  & = & \alpha e^{2 \theta \mathbf{n}} \mathbf{a}+ \beta e^{2 \theta
  \mathbf{n}} \mathbf{b}+ \gamma \mathbf{n}\\
  & = & e^{2 \theta \mathbf{n}} ( \alpha \mathbf{a}+ \beta \mathbf{b} ) +
  \gamma \mathbf{n}\\
  & = & e^{2 \theta \mathbf{n}} \mathbf{v}^{||} +\mathbf{v}^{\bot}\end{array}

and finding that, in general, b\mathbf{c}b^{-1} rotates the component \mathbf{v}^{||} of \mathbf{v} in the plane of the biradial b by twice the angle \theta of the biradial, and it leaves the component \mathbf{v}^{\bot} of \mathbf{v} perpendicular to the plane unaffected. This type of rotation is called conical rotation due to how the line \mathbf{v} turns on a cone as it is rotated through an entire 2 \pi round \mathbf{n} as the axis of the cone.

The rays a,b of biradial b/a need not be unit vectors

Although \mathbf{a} and \mathbf{b} were treated as unit vectors for simplicity, the result

\begin{array}{rcl}
  b\mathbf{v}b^{-1} & = & \mathbf{b}\mathbf{a}^{-1}
  \mathbf{v}\mathbf{a}\mathbf{b}^{-1} = \frac{| \mathbf{b} | \mathbf{u}_{b}}{|
  \mathbf{a} | \mathbf{u}_{a}} \mathbf{v} \frac{| \mathbf{a} |
  \mathbf{u}_{a}}{| \mathbf{b} | \mathbf{u}_{b}} =
  \frac{\mathbf{u}_{b}}{\mathbf{u}_{a}} \mathbf{v}
  \frac{\mathbf{u}_{a}}{\mathbf{u}_{b}}\end{array}

shows that \mathbf{a} and \mathbf{b} need not be unit vectors. Since the lengths of \mathbf{a} and \mathbf{b} are inconsequential in the rotation, they are sometimes called rays of the biradial instead of vectors, as mentioned at the beginning.

The conical rotation by pi, reflection, or conjugation ba/b

In the work above, we encountered \mathbf{b}\mathbf{a}\mathbf{b}^{-1} =e^{2 \theta \mathbf{n}} \mathbf{a} as a planar rotation; this can also be viewed as a conical rotation by 2 \frac{\pi}{2} = \pi round \mathbf{b} as the cone axis, or viewed as a reflection of \mathbf{a} in \mathbf{b}

\begin{array}{rcl}
  \mathbf{b}\mathbf{a}\mathbf{b}^{-1} & = & e^{\frac{\pi}{2} \mathbf{b}}
  \mathbf{a}e^{- \frac{\pi}{2} \mathbf{b}} =e^{\frac{\pi}{2} \mathbf{b}} (
  \mathbf{a}^{||} +\mathbf{a}^{\bot} ) e^{- \frac{\pi}{2} \mathbf{b}}\\
  & = & e^{\frac{\pi}{2} \mathbf{b}} \left( t e^{\frac{\pi}{2} \mathbf{b}} +
  | \mathbf{a}^{\bot} | \frac{\mathbf{a}^{\bot}}{| \mathbf{a}^{\bot} |}
  \right) e^{- \frac{\pi}{2} \mathbf{b}} =t e^{\frac{\pi}{2} \mathbf{b}} - |
  \mathbf{a}^{\bot} | e^{\frac{\pi}{2} \mathbf{b}} e^{- \frac{\pi}{2}
  \mathbf{b}} \frac{\mathbf{a}^{\bot}}{| \mathbf{a}^{\bot} |}\\
  & = & t e^{\frac{\pi}{2} \mathbf{b}} + | \mathbf{a}^{\bot} | e^{\pi
  \mathbf{b}} \frac{\mathbf{a}^{\bot}}{| \mathbf{a}^{\bot} |} =\mathbf{a}^{||}
  -\mathbf{a}^{\bot}\\
  \mathbf{b}\mathbf{a}\mathbf{b}^{-1} & = & -\mathbf{b} ( \mathbf{a}^{||}
  +\mathbf{a}^{\bot} ) \mathbf{b}=-\mathbf{b} \left( t\mathbf{b}+ |
  \mathbf{a}^{\bot} | \frac{\mathbf{a}^{\bot}}{| \mathbf{a}^{\bot} |} \right)
  \mathbf{b}\\
  & = & \left( t+ | \mathbf{a}^{\bot} | \frac{\mathbf{a}^{\bot}}{|
  \mathbf{a}^{\bot} |} \mathbf{b} \right)
  \mathbf{b}=t\mathbf{b}-\mathbf{a}^{\bot} =\mathbf{a}^{||} -\mathbf{a}^{\bot}
  .\end{array}

This result \mathbf{b} ( \mathbf{a}^{||} +\mathbf{a}^{\bot} ) \mathbf{b}^{-1} =\mathbf{a}^{||} -\mathbf{a}^{\bot} is also called the conjugation of \mathbf{a} by \mathbf{b}.

For quadrantal versor (unit vector) \mathbf{u} perpendicular to vector \mathbf{v},

\begin{array}{rcl}
  \mathbf{u}\mathbf{v}\mathbf{u}^{-1} & = &
  -\mathbf{u}\mathbf{v}\mathbf{u}=\mathbf{u}\mathbf{u}\mathbf{v}=\mathbf{u}^{2}
  \mathbf{v}=e^{2 \frac{\pi}{2} \mathbf{u}} \mathbf{v}=-\mathbf{v}\end{array}

which is the conjugation of \mathbf{v} or \mathrm{K} \mathbf{v}, and it is also called the inversion of \mathbf{v}.

Rotations as successive reflections in vectors

The conical rotation b\mathbf{v}b^{-1} of \mathbf{v} by 2 \theta in the plane of the biradial b with angle \theta can also be seen as two successive reflections

\begin{array}{rcl}
  b\mathbf{v}b^{-1} & = & \mathbf{b}\mathbf{a}^{-1}
  \mathbf{v}\mathbf{a}\mathbf{b}^{-1} =\mathbf{b} (
  \mathbf{a}\mathbf{v}\mathbf{a}^{-1} ) \mathbf{b}^{-1} =\mathbf{v}''\\
  \mathbf{v}' & = & \mathbf{a}\mathbf{v}\mathbf{a}^{-1} =\mathbf{a} (
  \mathbf{v}^{||\mathbf{a}} +\mathbf{v}^{\bot \mathbf{a}} ) \mathbf{a}^{-1}
  =\mathbf{a}\mathbf{v}^{||\mathbf{a}} \mathbf{a}^{-1}
  +\mathbf{a}\mathbf{v}^{\bot \mathbf{a}} \mathbf{a}^{-1}\\
  & = & \mathbf{a} ( t\mathbf{a} ) \mathbf{a}^{-1} +e^{\pi \mathbf{a}_{}}
  \mathbf{v}^{\bot \mathbf{a}} =\mathbf{v}^{||\mathbf{a}} -\mathbf{v}^{\bot
  \mathbf{a}}\\
  \mathbf{v}'' & = & \mathbf{v}'^{||\mathbf{b}} -\mathbf{v}'^{\bot \mathbf{b}}\end{array}

where \mathbf{v}' is the first reflection of \mathbf{v} in \mathbf{a}, and \mathbf{v}'' is the second reflection of \mathbf{v}' in \mathbf{b}.

Equivalent versors

Every pair of unit vectors \mathbf{b}_{i} ,\mathbf{a}_{i} in the same plane and having the same angle from \mathbf{a}_{i} to \mathbf{b}_{i} form the same biradial b=\mathbf{b}_{i} /\mathbf{a}_{i} =e^{\theta \mathbf{n}} with same angle \theta = \mathrm{cos}^{-1} ( \mathbf{a} \cdot \mathbf{b} ) and same normal \mathbf{n}= \frac{\mathbf{a} \times \mathbf{b}}{\sin ( \theta )}.

The square root of a versor

Since b\mathbf{v}b^{-1} rotates \mathbf{v} by 2 \theta, if we want to rotate by just \theta then we need to take the square root of b as

\begin{array}{rcl}
  b^{\frac{1}{2}} & = & e^{\frac{\theta}{2} \mathbf{n}}\\
  b^{- \frac{1}{2}} & = & e^{- \frac{\theta}{2} \mathbf{n}}\end{array}

resulting in the formula for rotation by \theta in the plane normal to unit vector \mathbf{n}

\begin{array}{rcl}
  \mathbf{v}_{\theta} & = & e^{\frac{\theta}{2} \mathbf{n}} \mathbf{v}e^{-
  \frac{\theta}{2} \mathbf{n}}\\
  & = & \left[ \mathrm{cos} \left( \frac{\theta}{2} \right) + \sin
  \left( \frac{\theta}{2} \right) \mathbf{n} \right] \mathbf{v} \left[
  \mathrm{cos} \left( \frac{\theta}{2} \right) - \sin \left(
  \frac{\theta}{2} \right) \mathbf{n} \right] .\end{array}

In theorems it is proved that any quaternion rotation can be expressed as n successive reflections in n vectors that reduces to a single conical rotation round a single resultant versor axis \mathbf{u} by a certain angle \theta, which may be expressed as the versor operator R^{\theta}_{\mathbf{u}} \mathbf{v}=e^{\frac{\theta}{2} \mathbf{u}} ( \mathbf{v} ) e^{- \frac{\theta}{2} \mathbf{u}}.

To apply a rotation by \theta in n steps, use the ( 2n )th-root of b, and its conjugate, successively n times

\begin{array}{rcl}
  b^{\frac{1}{2n}} & = & e^{\frac{\theta}{2n} \mathbf{n}}\\
  \prod^{n} e^{\frac{\theta}{2n} \mathbf{n}} & = & e^{\frac{\theta}{2}
  \mathbf{n}} .\end{array}

If | \mathbf{a} | = | \mathbf{b} | =r, then the versor ( \mathbf{b}/\mathbf{a} )^{\frac{1}{2}} can also be written as

Rhombus bisector a+b.
Rhombus bisector a+b.
\begin{array}{rcl}
  \mathbf{c} & = & r \frac{\mathbf{a}+\mathbf{b}}{| \mathbf{a}+\mathbf{b} |}\\
  \mathbf{c}^{-1} & = & \frac{-\mathbf{c}}{r^{2}}\\
  \mathbf{b}/\mathbf{c} & = & \frac{-\mathbf{b}\mathbf{c}}{r^{2}} =r \frac{- (
  \mathbf{b}\mathbf{a}-r^{2} )}{r^{2} | \mathbf{a}+\mathbf{b} |}\\
  \mathbf{c}/\mathbf{a} & = & \frac{-\mathbf{c}\mathbf{a}}{r^{2}} =r \frac{- (
  \mathbf{b}\mathbf{a}-r^{2} )}{r^{2} | \mathbf{a}+\mathbf{b} |}\\
  \mathbf{b}/\mathbf{c} & = & \mathbf{c}/\mathbf{a}\\
  \mathbf{b}/\mathbf{a} & = & ( \mathbf{b}/\mathbf{c} ) (
  \mathbf{c}/\mathbf{a} ) = ( \mathbf{b}/\mathbf{c} )^{2} = (
  \mathbf{c}/\mathbf{a} )^{2}\\
  ( \mathbf{b}/\mathbf{a} )^{\frac{1}{2}} & = &
  \mathbf{b}/\mathbf{c}=\mathbf{c}/\mathbf{a}\end{array}

and the rotation of vector \mathbf{v} by \theta in the \mathbf{a}\mathbf{b}-plane, or round its normal \mathbf{n}, can be written as

\begin{array}{rcl}
  ( \mathbf{b}/\mathbf{a} )^{\frac{1}{2}} \mathbf{v} ( \mathbf{b}/\mathbf{a}
  )^{- \frac{1}{2}} & = & ( \mathbf{b}/\mathbf{c} ) \mathbf{v} (
  \mathbf{c}/\mathbf{b} ) = ( \mathbf{c}/\mathbf{a} ) \mathbf{v} (
  \mathbf{a}/\mathbf{c} )\\
  & = & ( \mathbf{b}/\mathbf{c} ) \mathbf{v} ( \mathbf{a}/\mathbf{c} ) = (
  \mathbf{c}/\mathbf{a} ) \mathbf{v} ( \mathbf{c}/\mathbf{b} )\end{array}

so that the rotation is seen as various reflections. For example, if \mathbf{v}=\mathbf{a}, then

\begin{array}{rcl}
  ( \mathbf{c}/\mathbf{a} ) \mathbf{a} ( \mathbf{a}/\mathbf{c} ) & = &
  \mathbf{c}\mathbf{a}\mathbf{c}^{-1}\\
  & = & ( \mathbf{a}+\mathbf{b} ) \mathbf{a} ( \mathbf{a}+\mathbf{b} )^{-1}\\
  & = & \mathbf{a}^{||\mathbf{c}} -\mathbf{a}^{\bot \mathbf{c}}\\
  & = & ( \mathbf{b}/\mathbf{c} ) \mathbf{a} ( \mathbf{a}/\mathbf{c} ) = (
  -r^{2} ) \mathbf{b}\mathbf{c}^{-2} =\mathbf{b}\end{array}

and this rotation is the reflection of \mathbf{a} in \mathbf{c}.

If | \mathbf{a} | = | \mathbf{b} |, then the sum \mathbf{a}+\mathbf{b} is the diagonal vector that bisects the rhombus parallelogram framed by \mathbf{a} and \mathbf{b} and is the reflector of \mathbf{a} into \mathbf{b} or \mathbf{b} into \mathbf{a}.

Rodrigues rotation formula and identity to quaternion rotation formula

Another formula for rotation can be derived without quaternions, using only vector analysis which includes vector addition and subtraction and the vector dot and cross products. The formula is known as the Rodrigues Rotation Formula

\begin{array}{rcl}
  \mathbf{v}_{\theta} & = & \mathrm{cos} ( \theta ) \mathbf{v}+ \sin (
  \theta ) ( \mathbf{n} \times \mathbf{v} ) + \left( 1- \mathrm{cos} ( \theta
  ) \right) ( \mathbf{v} \cdot \mathbf{n} ) \mathbf{n}\end{array}

which rotates any vector \mathbf{v} conically round the unit vector axis \mathbf{n} by the angle \theta radians counter-clockwise on right-handed axes or clockwise on left-handed axes according to the matching right-hand or left-hand rule.

This Rodrigues formula is a known result that can be derived without too much difficulty by modeling the problem in vector analysis and finding the solution for \mathbf{v}_{\theta}. This formula can also be found from the quaternion rotation formula derived already in terms of biradials

\begin{array}{rcl}
  \mathbf{v}_{2 \theta} & = & ( \mathbf{b}/\mathbf{a} ) ( \mathbf{v} ) (
  \mathbf{a}/\mathbf{b} ) =e^{\theta \mathbf{n}} ( \mathbf{v}^{||\mathbf{n}}
  +\mathbf{v}^{\bot \mathbf{n}} ) e^{- \theta \mathbf{n}}\\
  & = & e^{\theta \mathbf{n}} \mathbf{v}^{|| \mathbf{n}} e^{- \theta
  \mathbf{n}} +e^{\theta \mathbf{n}} \mathbf{v}^{\bot \mathbf{n}} e^{- \theta
  \mathbf{n}}\\
  & = & \mathbf{v}^{|| \mathbf{n}} +e^{2 \theta \mathbf{n}} \mathbf{v}^{\bot
  \mathbf{n}}\end{array}
\begin{array}{rcl}
  \mathbf{v}_{\theta} & = & \mathbf{v}^{|| \mathbf{n}} +e^{\theta \mathbf{n}}
  \mathbf{v}^{\bot \mathbf{n}}\\
  & = & \mathbf{v}^{|| \mathbf{n}} +e^{\theta \mathbf{n}} (
  \mathbf{v}-\mathbf{v}^{||\mathbf{n}} ) = ( 1-e^{\theta \mathbf{n}} )
  \mathbf{v}^{||\mathbf{n}} +e^{\theta \mathbf{n}} \mathbf{v}\\
  & = & ( 1-e^{\theta \mathbf{n}} ) ( \mathbf{v} \cdot \mathbf{n} )
  \mathbf{n}+e^{\theta \mathbf{n}} \mathbf{v}\\
  & = & ( 1-c-s\mathbf{n} ) ( \mathbf{v} \cdot \mathbf{n} ) \mathbf{n}+ (
  c+s\mathbf{n} ) \mathbf{v}\\
  & = & ( 1-c-s\mathbf{n} ) ( \mathbf{v} \cdot \mathbf{n} )
  \mathbf{n}+c\mathbf{v}-s ( \mathbf{n} \cdot \mathbf{v} ) +s ( \mathbf{n}
  \times \mathbf{v} )\\
  & = & c\mathbf{v}+s ( \mathbf{n} \times \mathbf{v} ) + ( 1-c ) ( \mathbf{v}
  \cdot \mathbf{n} ) \mathbf{n}\\
  & = & \mathrm{cos} ( \theta ) \mathbf{v}+ \sin ( \theta ) (
  \mathbf{n} \times \mathbf{v} ) + \left( 1- \mathrm{cos} ( \theta ) \right) (
  \mathbf{v} \cdot \mathbf{n} ) \mathbf{n}.\end{array}

The identity of the quaternion rotation formula to the Rodrigues rotation formula is

\begin{array}{rcl}
  \mathbf{v}_{\theta} & = & R^{\theta}_{\mathbf{n}} \mathbf{v}=e^{\frac{1}{2}
  \theta \mathbf{n}} ( \mathbf{v} ) e^{- \frac{1}{2} \theta \mathbf{n}}\\
  & = & \mathrm{cos} ( \theta ) \mathbf{v}+ \sin ( \theta ) (
  \mathbf{n} \times \mathbf{v} ) + \left( 1- \mathrm{cos} ( \theta ) \right) (
  \mathbf{v} \cdot \mathbf{n} ) \mathbf{n}\end{array}

where again the unit vector \mathbf{n} is the axis of conical rotation of vector \mathbf{v} by \theta according to the handedness described above.

Rotation round arbitrary lines and points

By proper choice of the rotation axis \mathbf{n} and the angle \theta, the conical rotation R^{\theta}_{\mathbf{n}} \mathbf{v} can rotate \mathbf{v} to any location on the sphere having center \mathbf{o}=0\mathbf{i}+0\mathbf{j}+0\mathbf{k} and radius r=T\mathbf{v}= | \mathbf{v} |. These conical rotations of \mathbf{v} occur in circles located on the surface of the sphere, which we can call the sphere of \mathbf{v}.

There are two types of these circles. A small circle has a radius r< | \mathbf{v} |, and a great circle has radius r= | \mathbf{v} |. If \mathbf{v} is perpendicular to \mathbf{n}, the circle of rotation on the sphere is a great circle, and otherwise a small circle. The interior plane of a circle is the base of a rotational cone, with tip or apex at the origin \mathbf{o}. As \mathbf{v} is rotated, the line of \mathbf{v} moves on the sides of the cone, and \mathbf{v} points to different points on the circle at the cone base.

The line t\mathbf{n} of the rotation axis \mathbf{n} intersects \mathbf{o} and intersects the centers of a group of parallel circles in space that section the sphere of \mathbf{v} by cuts perpendicular to \mathbf{n}. The line of \mathbf{n} also intersects the sphere of \mathbf{v} at the two points called the poles of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v} where the small circles vanish or degenerate into the poles. The great circle, on the sphere of \mathbf{v} cut perpendicular to \mathbf{n} through the center of the sphere of \mathbf{v} (always the origin of a rotation R^{\theta}_{\mathbf{n}} \mathbf{v}), contains the points called the polars of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}.

When \mathbf{v} is one of the two poles (a pole vector) of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}, then \mathbf{v} is parallel to \mathbf{n} and it rotates in the point (degenerated circle) of the pole and is unaffected by the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}. When \mathbf{v} is a polar (a polar vector) of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}, then \mathbf{v} is perpendicular to \mathbf{n} and is rotated in the great circle of the sphere of \mathbf{v} perpendicular to \mathbf{n}, polar to pole | \mathbf{v} | \mathbf{n}. Otherwise, the rotation of \mathbf{v} can be viewed in terms of its components parallel and perpendicular to the axis \mathbf{n} as a cylindrical rotation

\begin{array}{rcl}
  R^{\theta}_{\mathbf{n}} \mathbf{v} & = & R^{\theta}_{\mathbf{n}}
  \mathbf{v}^{||\mathbf{n}} +R^{\theta}_{\mathbf{n}} \mathbf{v}^{\bot
  \mathbf{n}}\end{array}

where \mathbf{v}^{\bot \mathbf{n}} is polar of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}^{\bot \mathbf{n}} (planar rotation) and \mathbf{v}^{||\mathbf{n}} is a pole of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}^{||\mathbf{n}} (null rotation). The component R^{\theta}_{\mathbf{n}} \mathbf{v}^{\bot \mathbf{n}} is rotated in the base of the cylinder in the plane perpendicular to \mathbf{n} intersecting the origin of the rotation, and the component R^{\theta}_{\mathbf{n}} \mathbf{v}^{||\mathbf{n}} =\mathbf{v}^{||\mathbf{n}} is the translation up the side of the cylinder to the small circle on the sphere of \mathbf{v}. The vector component \mathbf{v}^{||\mathbf{n}} is also called an eigenvector (“eigen” is German for “own”) of the rotation R^{\theta}_{\mathbf{n}} \mathbf{v}^{||\mathbf{n}}. The sum R^{\theta}_{\mathbf{n}} \mathbf{v}^{||\mathbf{n}} +R^{\theta}_{\mathbf{n}} \mathbf{v}^{\bot \mathbf{n}} is still \mathbf{v} rotated on a cone inside the cylinder and is a conical rotation of \mathbf{v} round \mathbf{n}.

The quadrantal versor, unit vector, \mathbf{n} could also be called an axial vector or a pole vector of a rotation on the sphere of \mathbf{n}, the unit sphere. All vectors \mathbf{x}^{\bot \mathbf{n}} perpendicular to the axial vector \mathbf{n} could be called planar-polar vectors relative to all vectors \mathbf{x}^{||\mathbf{n}} parallel to \mathbf{n} which could be called axial-pole vectors, where \mathbf{n} could also be called the unit axial-pole vector. Any circle round axis \mathbf{n}, in a plane perpendicular to \mathbf{n} and centered on the line of \mathbf{n}, could be called a polar circle of \mathbf{n}. The rotation R^{\theta}_{\mathbf{n}} \mathbf{x}^{\bot \mathbf{n}} of a planar-polar vector of the rotation is a planar rotation

\begin{array}{rcl}
  e^{\frac{1}{2} \theta \mathbf{n}} \mathbf{x}^{\bot \mathbf{n}} e^{-
  \frac{1}{2} \theta \mathbf{n}} & = & e^{\theta \mathbf{n}} \mathbf{x}^{\bot
  \mathbf{n}}\end{array}

and the rotation R^{\theta}_{\mathbf{n}} \mathbf{x}^{||\mathbf{n}} of an axial-pole vector (eigenvector) of the rotation is a null rotation

\begin{array}{rcl}
  e^{\frac{1}{2} \theta \mathbf{n}} \mathbf{x}^{||\mathbf{n}} e^{- \frac{1}{2}
  \theta \mathbf{n}} & = & e^{0\mathbf{n}} \mathbf{x}^{||\mathbf{n}} .\end{array}

The pole round which counter-clockwise rotation is seen by right-hand rule on right-handed axes (holding the pole vector in right-hand) can be called the north geometric pole of the rotation, and the inverse pole called the south geometric pole of the rotation where left-hand rule on left-handed axes would see clockwise rotation (holding the inverse pole vector in left-hand as if it were the positive direction of the axis). A pole, as a point on the sphere, or as a vector from the sphere center to the pole, are synonymous for the purpose considered here, but they can be made as distinct mathematical values in the more advanced Clifford geometric algebras of generalized projective geometry. With this terminology, the quadrantal versor \mathbf{n} is a unit axial-pole vector of the unit sphere of \mathbf{n} (the unit sphere) and is directed toward the point of the north geometric pole of the rotation on right-handed axes, or directed toward the south geometric pole on left-handed axes where positive rotations are then taken clockwise. This convention or orientation of north and south geometric poles matches the geometric poles and rotation of the Earth.

If the sphere of \mathbf{v} relative to an origin \mathbf{o} is considered the set

\begin{array}{rcl}
  \mathbf{S}_{\mathbf{v}-\mathbf{o}} & = & \left\{ \mathbf{x} :  |
  \mathbf{x}-\mathbf{o} | = | \mathbf{v}-\mathbf{o} | = \mathrm{T} (
  \mathbf{x}-\mathbf{o} ) = \mathrm{T} ( \mathbf{v}-\mathbf{o} ) \right\}\end{array}

of vectors \mathbf{x}, then R^{\theta}_{\mathbf{n}} ( \mathbf{S}_{\mathbf{v}-\mathbf{o}} -\mathbf{o} ) +\mathbf{o} can be considered the rotation of the entire sphere. This notation is meant to convey that subtraction by \mathbf{o}, followed by application of rotation R^{\theta}_{\mathbf{n}}, followed by addition of \mathbf{o} is to occur on each element \mathbf{x} of the set \mathbf{S}_{\mathbf{v}-\mathbf{o}} of vectors that are located on the surface of the sphere defined by \mathbf{v} and \mathbf{o} by the invariant radial distance | \mathbf{v}-\mathbf{o} | = | \mathbf{x}-\mathbf{o} | that any other point \mathbf{x} on the sphere surface must also have.

The rotations R^{\theta}_{\mathbf{n}} \mathbf{S}_{\mathbf{v}} are limited to rotating spheres of radius r= | \mathbf{v} |, with surface points \left\{ \mathbf{x} :  \mathrm{T} \mathbf{x}= \mathrm{T} \mathbf{v} \right\}, and that are concentric spheres centered on the origin \mathbf{o}= ( 0,0,0 ) =0 of space.

The rotation of spheres concentric on any arbitrary origin \mathbf{o}' =o_{x} \mathbf{i}+o_{y} \mathbf{j}+o_{z} \mathbf{k} is the rotation R^{\theta}_{\mathbf{n}} ( \mathbf{S}_{\mathbf{v}-\mathbf{o}'} -\mathbf{o}' ) +\mathbf{o}'. The spheres are centered at \mathbf{o}', and \mathbf{v} determines a particular radius r= | \mathbf{v}-\mathbf{o}' |.

The rotation of an entire sphere, as a set of vector elements \mathbf{x}, shows that translation (to and from) relative to the sphere origin is generally required for rotation of vectors round the surface of an arbitrary sphere located in space.

The usual concern is not rotating entire spheres, but is rotating a particular point \mathbf{v} perpendicularly round an arbitrary line that does not necessarily intersect the origin \mathbf{o}=0, or is to rotate \mathbf{v} round an arbitrary point \mathbf{c}.

An arbitrary line can be represented by \mathbf{a}=t\mathbf{n}+\mathbf{o}'. We want to rotate \mathbf{v} round this line as the rotational axis. The rotation will occur in a circle in space, and this circle is on the sphere centered at \mathbf{o}' with radius r= | \mathbf{v}-\mathbf{o}' |, and the rotational axis is parallel to the unit vector \mathbf{n}. The center of the circle is at \mathbf{c}=\mathcal{P}_{\mathbf{n}} ( \mathbf{v}-\mathbf{o}' ) +\mathbf{o}' = [ ( \mathbf{v}-\mathbf{o}' ) \cdot \mathbf{n} ] \mathbf{n}+\mathbf{o}'. The location of \mathbf{v} relative to the circle center is \mathbf{v}-\mathbf{c}.

The rotation of \mathbf{v} round the line \mathbf{a} is

\begin{array}{rcl}
  \mathbf{v}' & = & R^{\theta}_{\mathbf{n}} ( \mathbf{v}-\mathbf{o}' )
  +\mathbf{o}'\\
  & = & R^{\theta}_{\mathbf{n}} \mathbf{v}-R^{\theta}_{\mathbf{n}}
  \mathbf{o}' +\mathbf{o}' .\end{array}

If we viewed \mathbf{c} as an arbitrary point that we wished to rotate round, then we still needed to specify a rotational axis \mathbf{n} through \mathbf{c}, and the rotation is

\begin{array}{rcl}
  \mathbf{v}' & = & R^{\theta}_{\mathbf{n}} ( \mathbf{v}-\mathbf{c} )
  +\mathbf{c}\\
  & = & R^{\theta}_{\mathbf{n}} [ \mathbf{v}-\mathcal{P}_{\mathbf{n}} (
  \mathbf{v}-\mathbf{o}' ) -\mathbf{o}' ] +\mathbf{c}\\
  & = & R^{\theta}_{\mathbf{n}} \mathbf{v}-R^{\theta}_{\mathbf{n}}
  \mathcal{P}_{\mathbf{n}} ( \mathbf{v}-\mathbf{o}' ) -R^{\theta}_{\mathbf{n}}
  \mathbf{o}' +\mathbf{c}\\
  & = & R^{\theta}_{\mathbf{n}} \mathbf{v}-\mathcal{P}_{\mathbf{n}} (
  \mathbf{v}-\mathbf{o}' ) -R^{\theta}_{\mathbf{n}} \mathbf{o}' +\mathbf{c}\\
  & = & R^{\theta}_{\mathbf{n}} \mathbf{v}- ( \mathbf{c}-\mathbf{o}' )
  -R^{\theta}_{\mathbf{n}} \mathbf{o}' +\mathbf{c}\\
  & = & R^{\theta}_{\mathbf{n}} \mathbf{v}-R^{\theta}_{\mathbf{n}}
  \mathbf{o}' +\mathbf{o}' .\end{array}

Vector-arcs

A vector-arc \mathbf{c} can be represented by the vector chord \mathbf{c}=\mathbf{b}-\mathbf{a} in the circle where \mathbf{a} is rotated to \mathbf{b} by a quaternion biradial \mathbf{b}/\mathbf{a} through an arc r \theta of the circle that can be given by law of sines as

\begin{array}{rcl}
  \frac{| \mathbf{b}-\mathbf{a} |}{\sin (\theta)} & = &
  \frac{r}{\sin \left( \frac{\pi - \theta}{2} \right)}\\
  r \theta & = & \frac{| \mathbf{c} |  \sin \left( \frac{\pi -
  \theta}{2} \right)}{\sin(\theta)} \theta .\end{array}

The rotation can also be seen as the translation of \mathbf{a} by vector-arc \mathbf{c} across the chord \mathbf{b}-\mathbf{a}. The operation \mathbf{a} to \mathbf{b} can be written multiplicatively or additively

\begin{array}{rcl}
  \mathbf{b} & = & (\mathbf{b}/\mathbf{a}) \mathbf{a}\\
  \mathbf{b} & = & (\mathbf{b}-\mathbf{a}) +\mathbf{a}\end{array}

as quaternion multiplication or vector-arc addition.

The vector-arc \mathbf{c}=\mathbf{c}_0 can be added to another different vector \mathbf{v}=\mathbf{v}_0 as \mathbf{v}_1 =\mathbf{c}_0 +\mathbf{v}_0, where \mathbf{v}_1 is viewed as being \mathbf{v}_0 rotated in the same relative direction \mathbf{c}_0 and by the same arc r \theta on a sphere centered at a same relative position as to \mathbf{a} and \mathbf{b}. The vector-arcs, or chords, of the rotations \mathbf{v}_1 -\mathbf{v}_0 =\mathbf{b}-\mathbf{a} correspond. Some n successive rotations applied to \mathbf{a} produces n successive vector-arcs \mathbf{c}_k \{ k : 0 \ldots n \}. The vector-arcs \mathbf{c}_k can be added successively to vector \mathbf{v}_0 as \mathbf{v}_{k + 1} =\mathbf{c}_k +\mathbf{v}_k and each one of these vectors remains on a sphere or path corresponding to the sphere or path of \mathbf{a}.

Since the order, or sequence, of adding vector-arcs onto \mathbf{v} (adding successively) is important for replaying a sequence of vector-arc translations on a sphere or path, when a vector-arc \mathbf{c}_k is added to \mathbf{v}_k, the next vector-arc \mathbf{c}_{k + 1} added to \mathbf{v}_{k + 1} is a specific vector-arc representing the next rotation and \mathbf{c}_{k + 1} is called the provector-arc of the prior vector-arc \mathbf{c}_k. The sum of a vector-arc \mathbf{c}_k and its provector-arc \mathbf{c}_{k + 1} is their transvector-arc \mathbf{t}_k =\mathbf{c}_{k + 1} +\mathbf{c}_k representing an arcual sum[1](Art.218).

The addition of vector-arcs equals successive rotations in the same sphere only if the vector-arcs are successive corresponding chords in the same sphere. The successive chords form a gauche[1](Art.323) or skew polygon inscribed in the sphere. To remain on the same sphere, the addition of the vector-arcs to \mathbf{v} must be in rotations order, translating across a specific sequence of chords representing the rotation arcs and sides of a gauche polygon inscribed in the sphere. As chords are added to \mathbf{v} in rotations sequence, the resulting positions of vertices of the polygon in the sphere are found. The effect is to replay a specific sequence of translations starting at \mathbf{v}, with vector-arcs added head to tail as the polygon sides or chords in the sphere. Direct rotations among the found points of the inscribed polygon can be computed as other transvector-arcs.

A sequence of vector-arcs can be pre-generated and applied in sequence forward (adding the provector-arc) and backward (subtracting the prior provector-arc). The sequences of vector-arcs could be applied to multiple points using additions or their pre-additions (transvector-arcs), which may be much faster than multiplying each point using a quaternion operator.

Mean versor

The mean versor problem can be described as follows: If given n versors

\begin{array}{rcl}
  R_i & = & e^{\theta_i \mathbf{r}_i} = \mathrm{cos} (\theta_i) + \sin
  (\theta_i) \mathbf{r}_i\\
  i & = & 1, \ldots, n\end{array}

where each versor rotates by the angle \theta_i in the plane perpendicular to the unit vector \mathbf{r}_i, then the vector \mathbf{v} can be rotated into i different points using the half-angle (or full-angle) versors

\begin{array}{rcl}
  \mathbf{v}_i & = & R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i .\end{array}

For i = 3, the three vectors \mathbf{v}_i are the vertices of a spherical triangle T. The location of the spherical centroid \bar{\mathbf{v}} of T represents the true mean rotation of \mathbf{v} relative to the three vertices.

As a first approach to trying to find \bar{\mathbf{v}} and the mean versor \bar{\mathbf{v}} /\mathbf{v}, we can consider the average of the vectors \mathbf{v}_i, scaled to touch the sphere, as approximately \bar{\mathbf{v}}. With this approach, the spherical centroid \bar{\mathbf{v}} of T is approximately

\begin{array}{rcl}
  \bar{\mathbf{v}} & \approx & | \mathbf{v} | \frac{\frac{1}{n} \sum^n_{i = 1}
  \mathbf{v}_i}{\left| \frac{1}{n} \sum^n_{i = 1} \mathbf{v}_i \right|} = |
  \mathbf{v} | \frac{\sum^n_{i = 1} \mathbf{v}_i}{\left| \sum^n_{i = 1}
  \mathbf{v}_i \right|}\end{array}

on the condition that the vertices \mathbf{v}_i are clustered closely together such that the angle between any two vertices does not exceed \frac{\pi}{2} radians. For any \mathbf{v}, this condition is satisfied if

\begin{array}{rcl}
  | \theta_i | & \leq & \frac{\pi}{4}\end{array}

when using the half-angle versors, or if

\begin{array}{rcl}
  | \theta_i | & \leq & \frac{\pi}{8}\end{array}

when using the full-angle versors.

Under this condition, this formula for the spherical centroid of T has good accuracy. For angles exceeding these conditions, the error increases rapidly up to the error extremum or worse-possible error when two vertices reach \pi radians apart!

For i > 3, the vector \bar{\mathbf{v}} is generally not the centroid of a spherical polygon of the vertices \mathbf{v}_i, but \bar{\mathbf{v}} does approximate the true mean rotation of \mathbf{v}.

The approximate mean versor is

\begin{array}{rcl}
  R_m & = & \bar{\mathbf{v}} /\mathbf{v}= \bar{\mathbf{v}} \mathbf{v}^{- 1}\\
  R^{- 1}_m & = & \mathbf{v}/ \bar{\mathbf{v}} =\mathbf{v} \bar{\mathbf{v}}^{-
  1} .\end{array}

The approximate mean versor with half the angle is

\begin{array}{rcl}
  R^{\frac{1}{2}}_m & = & \left( | \mathbf{v} | \frac{\bar{\mathbf{v}}
  +\mathbf{v}}{| \bar{\mathbf{v}} +\mathbf{v} |} \right) /\mathbf{v}= \frac{-
  (\bar{\mathbf{v}} +\mathbf{v}) \mathbf{v}}{| \mathbf{v} | | \bar{\mathbf{v}}
  +\mathbf{v} |}\\
  R^{- \frac{1}{2}}_m & = & \mathbf{v}/ \left( | \mathbf{v} |
  \frac{\bar{\mathbf{v}} +\mathbf{v}}{| \bar{\mathbf{v}} +\mathbf{v} |}
  \right) = \frac{-\mathbf{v} (\bar{\mathbf{v}} +\mathbf{v})}{| \mathbf{v} | |
  \bar{\mathbf{v}} +\mathbf{v} |}\end{array}

The rotation of \mathbf{v} by the approximate mean versor R_m is

\begin{array}{rcl}
  \bar{\mathbf{v}} & = & R^{\frac{1}{2}}_m \mathbf{v}R^{- \frac{1}{2}}_m =
  \frac{- (\bar{\mathbf{v}} +\mathbf{v}) \mathbf{v}}{| \mathbf{v} | |
  \bar{\mathbf{v}} +\mathbf{v} |} \mathbf{v} \frac{-\mathbf{v}
  (\bar{\mathbf{v}} +\mathbf{v})}{| \mathbf{v} | | \bar{\mathbf{v}}
  +\mathbf{v} |}\\
  & = & \frac{(\bar{\mathbf{v}} +\mathbf{v}) \mathbf{v} (\bar{\mathbf{v}}
  +\mathbf{v})}{(\bar{\mathbf{v}} +\mathbf{v})^2} = (\bar{\mathbf{v}}
  +\mathbf{v}) \mathbf{v} (\bar{\mathbf{v}} +\mathbf{v})^{- 1} .\end{array}

Using the identities

\begin{array}{rcl}
  \mathbf{v}\mathbf{v} & = & \bar{\mathbf{v}} \bar{\mathbf{v}} = - |
  \mathbf{v} |^2\\
  \bar{\mathbf{v}} (\bar{\mathbf{v}} +\mathbf{v})^2 & = & \bar{\mathbf{v}}
  \bar{\mathbf{v}} \bar{\mathbf{v}} + \bar{\mathbf{v}} \bar{\mathbf{v}}
  \mathbf{v}+ \bar{\mathbf{v}} \mathbf{v} \bar{\mathbf{v}} + \bar{\mathbf{v}}
  \mathbf{v}\mathbf{v}\\
  \bar{\mathbf{v}} \mathbf{v} \bar{\mathbf{v}} & = & \bar{\mathbf{v}}
  (\bar{\mathbf{v}} +\mathbf{v})^2 - \bar{\mathbf{v}} \bar{\mathbf{v}}
  \bar{\mathbf{v}} - \bar{\mathbf{v}} \bar{\mathbf{v}} \mathbf{v}-
  \bar{\mathbf{v}} \mathbf{v}\mathbf{v}\\
  & = & \bar{\mathbf{v}} (\bar{\mathbf{v}} +\mathbf{v})^2 -
  2\mathbf{v}\mathbf{v} \bar{\mathbf{v}} -\mathbf{v}\mathbf{v}\mathbf{v}\end{array}

we can verify that

\begin{array}{rcl}
  \bar{\mathbf{v}} & = & \frac{\bar{\mathbf{v}} \mathbf{v} \bar{\mathbf{v}}
  +\mathbf{v}\mathbf{v} \bar{\mathbf{v}} + \bar{\mathbf{v}}
  \mathbf{v}\mathbf{v}+\mathbf{v}\mathbf{v}\mathbf{v}}{(\bar{\mathbf{v}}
  +\mathbf{v})^2} = \frac{\bar{\mathbf{v}} \mathbf{v} \bar{\mathbf{v}} +
  2\mathbf{v}\mathbf{v} \bar{\mathbf{v}}
  +\mathbf{v}\mathbf{v}\mathbf{v}}{(\bar{\mathbf{v}} +\mathbf{v})^2}\\
  & = & \frac{\bar{\mathbf{v}} (\bar{\mathbf{v}}
  +\mathbf{v})^2}{(\bar{\mathbf{v}} +\mathbf{v})^2} = \bar{\mathbf{v}} .\end{array}

By this first approach, this approximate mean versor R_m is dependent on a particular \mathbf{v} and adapts well to a wide range versors R_i. It is computationally expensive since it requires computing all the rotations and averaging them. A potential problem of this approach is the possibly unacceptable error when two different \mathbf{v}_i are very close to \pi radians apart, or are nearly inversions.

As a second approach to trying to find \bar{\mathbf{v}} and the mean versor \bar{\mathbf{v}} /\mathbf{v}, we can consider using the average vector-arc of the vector-arcs \theta_i \mathbf{r}_i represented by the versors R_i. By this approach, we try the geometric mean of the versors

\begin{array}{rcl}
  \hat{R} & = & \sqrt[n]{\prod_{i = 1}^n R_i}\\
  & = & e^{(\theta_1 \mathbf{r}_1 + \theta_2 \mathbf{r}_2 + \cdots + \theta_n
  \mathbf{r}_n) / n}\end{array}

as approximating the true mean versor. Each \theta_i \mathbf{r}_i can be interpreted as a vector-arc, and

\begin{array}{rcl}
  &  & (\theta_1 \mathbf{r}_1 + \theta_2 \mathbf{r}_2 + \cdots + \theta_n
  \mathbf{r}_n) / n\end{array}

as the average vector-arc.

By this method, the approximate mean rotation of \mathbf{v} is

\begin{array}{rcl}
  \bar{\mathbf{v}} & \approx & \hat{R}^{\frac{1}{2}} \mathbf{v} \hat{R}^{-
  \frac{1}{2}} .\end{array}

Good accuracy is achieved using the same condition | \theta_i | \leq \frac{\pi}{4} as in the first approach.

As a third approach to trying to find \bar{\mathbf{v}} and the mean versor \bar{\mathbf{v}} /\mathbf{v}, the solution is to find the versor \bar{R} that minimizes the distance d, where

\begin{array}{rcl}
  d_i & = & \left| R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i -
  \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}} \right|\\
  d & = & \sum_{i = 1}^n d_i .\end{array}

We can also choose to minimize the sum of squares

\begin{array}{rcl}
  d^2_i & = & \left| R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i -
  \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}} \right|^2\\
  & = & - \left( R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i -
  \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}} \right)^2\\
  \Delta & = & \sum^n_{i = 1} d^2_i .\end{array}

We can write d^2_i as

\begin{array}{rcl}
  d^2_i & = & - \left( R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i -
  \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}} \right)^2\end{array}
\begin{array}{rcl}
  & = & \left( \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}} -
  R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i \right) \left(
  R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i - \bar{R}^{\frac{1}{2}}
  \mathbf{v} \bar{R}^{- \frac{1}{2}} \right)\\
  & = & \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}}
  R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i - 2\mathbf{v}^2 +
  R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i \bar{R}^{\frac{1}{2}}
  \mathbf{v} \bar{R}^{- \frac{1}{2}} .\end{array}

Now we can write \Delta as

\begin{array}{rcl}
  \Delta & = & \end{array}
\begin{array}{rcl}
  & = & \sum_{i = 1}^n \left( \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{-
  \frac{1}{2}} R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i - 2\mathbf{v}^2
  + R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i \bar{R}^{\frac{1}{2}}
  \mathbf{v} \bar{R}^{- \frac{1}{2}} \right)\\
  & = & \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}} \left(
  \sum_{i = 1}^n R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i \right) - 2
  n\mathbf{v}^2 + \left( \sum_{i = 1}^n R^{\frac{1}{2}}_i \mathbf{v}R^{-
  \frac{1}{2}}_i \right) \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{-
  \frac{1}{2}} .\end{array}

If

\begin{array}{rcl}
  \sum_{i = 1}^n R^{\frac{1}{2}}_i \mathbf{v}R^{- \frac{1}{2}}_i & = & n
  \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{- \frac{1}{2}}\end{array}

then \Delta = 0 and is minimized. This can be expanded as

\begin{array}{rcl}
  \sum_{i = 1}^n R_i \mathbf{v}^{\bot \mathbf{r}_i} + \sum^n_{i = 1}
  \mathbf{v}^{||\mathbf{r}_i} & = & n (\bar{R} \mathbf{v}^{\bot \bar{R}}
  +\mathbf{v}^{|| \bar{R}})\end{array}

which shows more clearly that the closer \bar{R} is to each R_i, then the closer \Delta is to zero. This minimization is achieved by the arithmetic mean

\begin{array}{rcl}
  \bar{R} & = & \frac{1}{n} \sum_{i = 1}^n R_i .\end{array}

This result does not depend on a particular \mathbf{v}. Technically, a versor should always have unit magnitude, but generally | \bar{R} | \neq 1. The quaternion \bar{R} can be normalized to have unit magnitude if necessary, but when used in the following versor rotation operation, any magnitude of \bar{R} cancels anyway.

By this approach, the approximate mean rotation of \mathbf{v} is

\begin{array}{rcl}
  \bar{\mathbf{v}} & \approx & \bar{R}^{\frac{1}{2}} \mathbf{v} \bar{R}^{-
  \frac{1}{2}} .\end{array}

Once again, good accuracy is achieved using the same condition | \theta_i | \leq \frac{\pi}{4} as in the first and second approaches.

Each approach has a different behavior as angles are increased. For | \theta_i | \leq \frac{\pi}{4}, they give nearly identical results. Each approach may be worth comparing to the others for a particular problem.

Testing the approaches: One way to experiment interactively with these formulas is to use the program GAViewer and have it open and run the following file mean-versor.g:

/* mean-versor.g Mean Versor Demo */
// Use ctrl-rightmousebutton to drag vectors v r1 r2 r3
// around the sphere and see rotations change dynamically.
// Sliders for angles t1 t2 t3 also trigger dynamic changes.

// Lines ending with , ARE rendered
// Lines ending with ; ARE NOT rendered

// Reset the viewer.
reset();
set_window_title("Mean Versor Demo");

// Run a .geo format command.
// Certain things can only be done with geo commands.
// Set the text parsing/formatting mode for the text of labels.
cmd("tsmode equation");
// Equation mode formats text like Latex equation mode does.

// Draw basic x,y,z direction unit vectors.
x=e1,
y=e2,
z=e3,
label(x),
label(y),
label(z),

// Pseudoscalar I.
// Needed to compute duals; i.e,
// to convert vectors to pure quaternions in geometric algebra.
I = e1 e2 e3;
// Draw a unit ball or sphere.
B = 4/3 pi pow(0.80,2) e1 e2 e3;
B = color(B,1,1,1,0.25),

// Initial point v on unit radius sphere.
// This is the vector we are rotating.
v = (e1+e2+e3);
v = v / norm(v);
label(v),

// Make angles t1,t2,t3 in degrees here
// but converted to radians in formulas later.
ctrl_range(t1= 40,-180,180);
ctrl_range(t2=-25,-180,180);
ctrl_range(t3=-15,-180,180);
// Use half-angle versor rotation formulas below.

// Make versors R1 R2 R3 that rotate round axes r1 r2 r3
// that are initially close to e1 e2 e3 (but can be dragged).
r1 = (5 e1 +   e2 +   e3);
r2 = (  e1 + 5 e2 +   e3);
r3 = (  e1 +   e2 + 5 e3);
r1 = r1 / norm(r1),
r2 = r2 / norm(r2),
r3 = r3 / norm(r3),
label(r1),
label(r2),
label(r3),
R1 = exp( t1/2 pi/180 r1/I );
R2 = exp( t2/2 pi/180 r2/I );
R3 = exp( t3/2 pi/180 r3/I );

// Rotate v into v1 v2 v3 using R1 R2 R3.
v1 = R1 v / R1,
v2 = R2 v / R2,
v3 = R3 v / R3,
label(v1),
label(v2),
label(v3),

// Locate the mean rotation of v directly from the mean of v1 v2 v3.
// This is the accurate approximation of the centroid or mean rotation of v.
// This is dependent on a particular v and on the versors R1 R2 R3.
m = (v1+v2+v3)/norm(v1+v2+v3),
label(m),

// Locate the mean rotation of v using the geometric mean of R1 R2 R3
// which is thought of as using the mean vector-arc.
G = exp( ((t1/2 pi/180 r1)+(t2/2 pi/180 r2)+(t3/2 pi/180 r3))/(3I) );
g = G v / G,
label(g),

// Locate the mean rotation of v using the arithmetic mean of R1 R2 R3
// normalized to unit norm for a proper versor.
A = (R1+R2+R3)/norm(R1+R2+R3);
a = A v / A,
label(a),

// Begin dynamic element.
// Simply recalculate everything in here.
dynamic{d1:

// The basis should not be moved.
x=e1,
y=e2,
z=e3,
x= color(x,0,0,0,0.5),
y= color(y,0,0,0,0.5),
z= color(z,0,0,0,0.5),

// The sphere.
B = 4/3 pi pow(0.80,2) e1 e2 e3;
B = color(B,1,1,1,0.25),

// The vector we are rotating around a unit radius sphere.
v = v / norm(v),

// Make versors R1 R2 R3 that rotate round axes r1 r2 r3
// and that are initially set close to e1 e2 e3.
r1 = r1 / norm(r1),
r2 = r2 / norm(r2),
r3 = r3 / norm(r3),
r1 = color(r1,1,1,0,0.5),
r2 = color(r2,1,1,0,0.5),
r3 = color(r3,1,1,0,0.5),
R1 = exp( t1/2 pi/180 r1/I );
R2 = exp( t2/2 pi/180 r2/I );
R3 = exp( t3/2 pi/180 r3/I );

// Rotate v into v1 v2 v3 using R1 R2 R3.
v1 = R1 v / R1,
v2 = R2 v / R2,
v3 = R3 v / R3,
v1 = color(v1,0,0,1,0.5),
v2 = color(v2,0,0,1,0.5),
v3 = color(v3,0,0,1,0.5),

// Locate the mean rotation of v directly from the mean of v1 v2 v3.
m = norm(v) (v1+v2+v3)/norm(v1+v2+v3),
m = color(m,1,0,1,0.5),

// Locate the mean rotation of v using the geometric mean of R1 R2 R3.
G = exp( ((t1/2 pi/180 r1)+(t2/2 pi/180 r2)+(t3/2 pi/180 r3))/(3I) );
g = G v / G,
g = color(g,1,0,1,0.5),

// Locate the mean rotation of v using the arithmetic mean of R1 R2 R3.
// The magnitude of A does not matter here.
A = (R1+R2+R3);
a = A v / A,
a = color(a,1,0,1,0.5),
}

Matrix representations of quaternions and rotations

A quaternion can be written as a 4-tuple of scalar components or as a 4-element column vector, and it can also be written as a 4 \times 4 matrix by expanding the quaternion product

\begin{array}{rcl}
  p & = & p_{w} +p_{x} \mathbf{i}+p_{y} \mathbf{j}+p_{z} \mathbf{k}=p_{w}
  +\mathbf{p}= ( p_{w} ,p_{x} ,p_{y} ,p_{z} )\\
  q & = & q_{w} +q_{x} \mathbf{i}+q_{y} \mathbf{j}+q_{z} \mathbf{k}=q_{w}
  +\mathbf{q}= ( q_{w} ,q_{x} ,q_{y} ,q_{z} )\\
  p q & = & ( p_{w} +p_{x} \mathbf{i}+p_{y} \mathbf{j}+p_{z} \mathbf{k} ) (
  q_{w} +q_{x} \mathbf{i}+q_{y} \mathbf{j}+q_{z} \mathbf{k} )\\
  & = & p_{w} q_{w} +p_{w} q_{x} \mathbf{i}+p_{w} q_{y} \mathbf{j}+p_{w}
  q_{z} \mathbf{k}+\\
  &  & p_{x} q_{w} \mathbf{i}-p_{x} q_{x} +p_{x} q_{y} \mathbf{k}-p_{x} q_{z}
  \mathbf{j}+\\
  &  & p_{y} q_{w} \mathbf{j}-p_{y} q_{x} \mathbf{k}-p_{y} q_{y} +p_{y} q_{z}
  \mathbf{i}+\\
  &  & p_{z} q_{w} \mathbf{k}+p_{z} q_{x} \mathbf{j}-p_{z} q_{y}
  \mathbf{i}-p_{z} q_{z}\\
  & = & p_{w} q_{w} -\mathbf{p} \cdot \mathbf{q}+p_{w} \mathbf{q}+q_{w}
  \mathbf{p}+\mathbf{p} \times \mathbf{q}\end{array}
\begin{array}{rcl}
  \left[ \begin{array}{l}
    p q
  \end{array} \right] & = & \left(\begin{array}{c}
    p_{w} q_{w} -p_{x} q_{x} -p_{y} q_{y} -p_{z} q_{z}\\
    p_{x} q_{w} +p_{w} q_{x} -p_{z} q_{y} +p_{y} q_{z}\\
    p_{y} q_{w} +p_{z} q_{x} +p_{w} q_{y} -p_{x} q_{z}\\
    p_{z} q_{w} -p_{y} q_{x} +p_{x} q_{y} +p_{w} q_{z}
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    p
  \end{array} \right\} \left[ \begin{array}{l}
    q
  \end{array} \right] & = & \left(\begin{array}{cccc}
    p_{w} & -p_{x} & -p_{y} & -p_{z}\\
    p_{x} & p_{w} & -p_{z} & p_{y}\\
    p_{y} & p_{z} & p_{w} & -p_{x}\\
    p_{z} & -p_{y} & p_{x} & p_{w}
  \end{array}\right) \left(\begin{array}{c}
    q_{w}\\
    q_{x}\\
    q_{y}\\
    q_{z}
  \end{array}\right)\end{array}

and factoring the resulting column vector form \left[ \begin{array}{l}   p q \end{array} \right] into a matrix-vector product \left\{ \begin{array}{l}   p \end{array} \right\} \left[ \begin{array}{l}   q \end{array} \right].

Quaternions in the matrix form \left\{ \begin{array}{l}   p \end{array} \right\} can be added as \left\{ \begin{array}{l}   p \end{array} \right\} + \left\{ \begin{array}{l}   q \end{array} \right\} = \left\{ \begin{array}{l}   p+q \end{array} \right\}, and can be multiplied together using non-commutative matrix multiplication giving products of the form \left\{ \begin{array}{l}   p \end{array} \right\} \left\{ \begin{array}{l}   q \end{array} \right\} = \left\{ \begin{array}{l}   p q \end{array} \right\}. Quaternions in column vector form \left[ \begin{array}{l}   q \end{array} \right] can be added, and can be the multiplicand of a quaternion multiplier in matrix form \left\{ \begin{array}{l}   p \end{array} \right\}, giving products \left\{ \begin{array}{l}   p \end{array} \right\} \left[ \begin{array}{l}   q \end{array} \right] = \left[ \begin{array}{l}   p q \end{array} \right] in column vector form.

For two vectors, their product is

\begin{array}{rcl}
  \mathbf{p}\mathbf{q} & = & -\mathbf{p} \cdot \mathbf{q}+\mathbf{p} \times
  \mathbf{q}\\
  & = & \frac{1}{2} ( \mathbf{p}\mathbf{q}+\mathbf{q}\mathbf{p} ) +
  \frac{1}{2} ( \mathbf{p}\mathbf{q}-\mathbf{q}\mathbf{p} )\end{array}

and their matrix-vector product is

\begin{array}{rcl}
  \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \left[ \begin{array}{l}
    \mathbf{q}
  \end{array} \right] & = & \left(\begin{array}{cccc}
    0 & -p_{x} & -p_{y} & -p_{z}\\
    p_{x} & 0 & -p_{z} & p_{y}\\
    p_{y} & p_{z} & 0 & -p_{x}\\
    p_{z} & -p_{y} & p_{x} & 0
  \end{array}\right) \left(\begin{array}{c}
    0\\
    q_{x}\\
    q_{y}\\
    q_{z}
  \end{array}\right)\\
  & = & \left(\begin{array}{c}
    -p_{x} q_{x} -p_{y} q_{y} -p_{z} q_{z}\\
    -p_{z} q_{y} +p_{y} q_{z}\\
    p_{z} q_{x} -p_{x} q_{z}\\
    -p_{y} q_{x} +p_{x} q_{y}
  \end{array}\right) = \left(\begin{array}{c}
    - ( \mathbf{p} \cdot \mathbf{q} )\\
    \left[ \begin{array}{l}
      \mathbf{p} \times \mathbf{q}
    \end{array} \right]_{x}\\
    \left[ \begin{array}{l}
      \mathbf{p} \times \mathbf{q}
    \end{array} \right]_{y}\\
    \left[ \begin{array}{l}
      \mathbf{p} \times \mathbf{q}
    \end{array} \right]_{z}
  \end{array}\right)\end{array}
\begin{array}{rcl}
  \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\bullet} & = & \left(\begin{array}{cccc}
    0 & p_{x} & p_{y} & p_{z}\\
    -p_{x} & 0 & 0 & 0\\
    -p_{y} & 0 & 0 & 0\\
    -p_{z} & 0 & 0 & 0
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\times} & = & \left(\begin{array}{cccc}
    0 & 0 & 0 & 0\\
    0 & 0 & -p_{z} & p_{y}\\
    0 & p_{z} & 0 & -p_{x}\\
    0 & -p_{y} & p_{x} & 0
  \end{array}\right)\end{array}
\begin{array}{rcl}
  \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} & = & - \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\bullet} + \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\times}\\
  \left[ \begin{array}{l}
    \mathbf{p} \cdot \mathbf{q}
  \end{array} \right] & = & \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\bullet} \left[ \begin{array}{l}
    \mathbf{q}
  \end{array} \right]\\
  \left[ \begin{array}{l}
    \mathbf{p} \times \mathbf{q}
  \end{array} \right] & = & \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\times} \left[ \begin{array}{l}
    \mathbf{q}
  \end{array} \right]\\
  \left[ \begin{array}{l}
    \mathbf{p}\mathbf{q}
  \end{array} \right] & = & \left( - \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\bullet} + \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\}^{\times} \right) \left[ \begin{array}{l}
    \mathbf{q}
  \end{array} \right] =- \left[ \begin{array}{l}
    \mathbf{p} \cdot \mathbf{q}
  \end{array} \right] + \left[ \begin{array}{l}
    \mathbf{p} \times \mathbf{q}
  \end{array} \right]\end{array}

which gives matrices representing dot and cross product operators on column vectors.

The dot and cross products for two vectors in matrix forms are

\begin{array}{rcl}
  \mathbf{p} \cdot \mathbf{q} & = & - \frac{1}{2} (
  \mathbf{p}\mathbf{q}+\mathbf{q}\mathbf{p} )\\
  \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \cdot \left\{ \begin{array}{l}
    \mathbf{q}
  \end{array} \right\} & = & - \frac{1}{2} \left( \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{q}
  \end{array} \right\} + \left\{ \begin{array}{l}
    \mathbf{q}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \right)\\
  \mathbf{p} \times \mathbf{q} & = & \frac{1}{2} (
  \mathbf{p}\mathbf{q}-\mathbf{q}\mathbf{p} )\\
  \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \times \left\{ \begin{array}{l}
    \mathbf{q}
  \end{array} \right\} & = & \frac{1}{2} \left( \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{q}
  \end{array} \right\} - \left\{ \begin{array}{l}
    \mathbf{q}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{p}
  \end{array} \right\} \right)\end{array}

which take the symmetric and anti-symmetric parts of the vector product \mathbf{p}\mathbf{q}.

The matrix form \left\{ \begin{array}{l}   p \end{array} \right\} can be decomposed into a sum of matrices to identify the matrix representations of \mathbf{i},\mathbf{j},\mathbf{k} as

\begin{array}{rcl}
  \left\{ \begin{array}{l}
    p
  \end{array} \right\} & = & p_{w} \left\{ \begin{array}{l}
    1
  \end{array} \right\} +p_{x} \left\{ \begin{array}{l}
    \mathbf{i}
  \end{array} \right\} +p_{y} \left\{ \begin{array}{l}
    \mathbf{j}
  \end{array} \right\} +p_{z} \left\{ \begin{array}{l}
    \mathbf{k}
  \end{array} \right\}\\
  \left\{ \begin{array}{l}
    1
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    1 & 0 & 0 & 0\\
    0 & 1 & 0 & 0\\
    0 & 0 & 1 & 0\\
    0 & 0 & 0 & 1
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    \mathbf{i}
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    0 & -1 & 0 & 0\\
    1 & 0 & 0 & 0\\
    0 & 0 & 0 & -1\\
    0 & 0 & 1 & 0
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    \mathbf{j}
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    0 & 0 & -1 & 0\\
    0 & 0 & 0 & 1\\
    1 & 0 & 0 & 0\\
    0 & -1 & 0 & 0
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    \mathbf{k}
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    0 & 0 & 0 & -1\\
    0 & 0 & -1 & 0\\
    0 & 1 & 0 & 0\\
    1 & 0 & 0 & 0
  \end{array}\right) .\end{array}

A quaternion rotation, by \theta radians, of vector \mathbf{v} round the unit vector axis \mathbf{n} can be written as

\begin{array}{rcl}
  \mathbf{v}_{\theta} & = & e^{\frac{1}{2} \theta \mathbf{n}} (
  \mathbf{v}^{||\mathbf{n}} +\mathbf{v}^{\bot \mathbf{n}} ) e^{- \frac{1}{2}
  \theta \mathbf{n}}\\
  & = & \mathbf{v}^{||\mathbf{n}} +e^{\theta \mathbf{n}} \mathbf{v}^{\bot
  \mathbf{n}} .\end{array}

To write this rotation in matrix-vector multiplication form, we first need some more identities.

The vector component of \mathbf{v} parallel to the unit vector \mathbf{n} is

\begin{array}{rcl}
  \mathbf{v}^{||\mathbf{n}} & = & \mathbf{n} ( \mathbf{n} \cdot \mathbf{v} )
  =\mathbf{n} ( \mathbf{n} \times \mathbf{v}-\mathbf{n}\mathbf{v} )\\
  & = & \mathbf{n} ( \mathbf{n} \times \mathbf{v} )
  +\mathbf{v}=e^{\frac{\pi}{2} \mathbf{n}} ( \mathbf{n} \times \mathbf{v} )
  +\mathbf{v}\end{array}
\begin{array}{rcl}
  \left[ \begin{array}{l}
    \mathbf{v}^{||\mathbf{n}}
  \end{array} \right] & = & \left[ \begin{array}{l}
    \mathbf{n}
  \end{array} \right] \left[ \begin{array}{l}
    \mathbf{n}
  \end{array} \right]^{\mathrm{T}} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\end{array}
\begin{array}{rcl}
  & = & \left(\begin{array}{c}
    0\\
    n_{x}\\
    n_{y}\\
    n_{z}
  \end{array}\right) \left(\begin{array}{cccc}
    0 & n_{x} & n_{y} & n_{z}
  \end{array}\right) \left(\begin{array}{c}
    0\\
    v_{x}\\
    v_{y}\\
    v_{z}
  \end{array}\right)\\
  & = & \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] + \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] = \left( \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} + \left\{ \begin{array}{l}
    1
  \end{array} \right\} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\bullet} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] = \left(\begin{array}{cccc}
    1 & 0 & 0 & 0\\
    0 & n_{x} n_{x} & n_{x} n_{y} & n_{x} n_{z}\\
    0 & n_{y} n_{x} & n_{y} n_{y} & n_{y} n_{z}\\
    0 & n_{z} n_{x} & n_{z} n_{y} & n_{z} n_{z}
  \end{array}\right) \left(\begin{array}{c}
    0\\
    v_{x}\\
    v_{y}\\
    v_{z}
  \end{array}\right)\end{array}

The vector component of \mathbf{v} perpendicular to the unit vector \mathbf{n} is

\begin{array}{rcl}
  \mathbf{v}^{\bot \mathbf{n}} & = & \mathbf{v}-\mathbf{v}^{||\mathbf{n}}\\
  & = & \mathbf{v}- ( \mathbf{n} ( \mathbf{n} \times \mathbf{v} ) +\mathbf{v}
  ) =-\mathbf{n} ( \mathbf{n} \times \mathbf{v} ) =e^{- \frac{\pi}{2}
  \mathbf{n}} ( \mathbf{n} \times \mathbf{v} )\end{array}
\begin{array}{rcl}
  \left[ \begin{array}{l}
    \mathbf{v}^{\bot \mathbf{n}}
  \end{array} \right] & = & \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] - \left[ \begin{array}{l}
    \mathbf{v}^{||\mathbf{n}}
  \end{array} \right] = \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] - \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\end{array}
\begin{array}{rcl}
  & = & \left( \left\{ \begin{array}{l}
    1
  \end{array} \right\} - \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\bot} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] = \left(\begin{array}{cccc}
    0 & 0 & 0 & 0\\
    0 & 1-n_{x} n_{x} & -n_{x} n_{y} & -n_{x} n_{z}\\
    0 & -n_{y} n_{x} & 1-n_{y} n_{y} & -n_{y} n_{z}\\
    0 & -n_{z} n_{x} & -n_{z} n_{y} & 1-n_{z} n_{z}
  \end{array}\right) \left(\begin{array}{c}
    0\\
    v_{x}\\
    v_{y}\\
    v_{z}
  \end{array}\right)\\
  & = & - \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] .\end{array}

The rotor e^{\theta \mathbf{n}} for the rotation round axis \mathbf{n} by angle \theta is

\begin{array}{rcl}
  e^{\theta \mathbf{n}} & = & \mathrm{cos} ( \theta ) + \sin( \theta
  ) \mathbf{n}=c+s\mathbf{n}\\
  \left\{ \begin{array}{l}
    e^{\theta \mathbf{n}}
  \end{array} \right\} & = & \left\{ \begin{array}{l}
    c
  \end{array} \right\} +s \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} = \left(\begin{array}{cccc}
    c & -s n_{x} & -s n_{y} & -s n_{z}\\
    s n_{x} & c & -s n_{z} & s n_{y}\\
    s n_{y} & s n_{z} & c & -s n_{x}\\
    s n_{z} & -s n_{y} & s n_{x} & c
  \end{array}\right) .\end{array}

The rotation can also be written

\begin{array}{rcl}
  \mathbf{v}_{\theta} & = & \mathbf{v}^{||\mathbf{n}} +e^{\theta \mathbf{n}}
  \mathbf{v}^{\bot \mathbf{n}} =R^{\theta}_{\mathbf{n}} \mathbf{v}\\
  & = & \mathbf{n} ( \mathbf{n} \times \mathbf{v} ) +\mathbf{v}- (
  c+s\mathbf{n} ) \mathbf{n} ( \mathbf{n} \times \mathbf{v} )\\
  & = & \mathbf{v}+ ( \mathbf{n}-c\mathbf{n}+s ) ( \mathbf{n} \times
  \mathbf{v} )\\
  & = & \mathbf{v}+ ( ( 1-c ) \mathbf{n}+s ) ( \mathbf{n} \times \mathbf{v}
  )\\
  & = & \mathbf{v}+ \left( \left( 1- \mathrm{cos} \theta \right) \mathbf{n}+
  \sin\theta \right) ( \mathbf{n} \times \mathbf{v} )\end{array}

which appears to be a smaller form of the Rodrigues rotation formula. Starting here, we have enough identities to switch into matrices and column vectors as

\begin{array}{rcl}
  \left[ \begin{array}{l}
    \mathbf{v}_{\theta}
  \end{array} \right] & = & \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right] + \left\{ \begin{array}{l}
    e^{\theta \mathbf{n}}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\bot} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left( \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} + \left\{ \begin{array}{l}
    e^{\theta \mathbf{n}}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\bot} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left( \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} + \left( \left\{ \begin{array}{l}
    c
  \end{array} \right\} +s \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \right) \left( - \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \right) \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left( \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} -c \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\} \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} +s \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left( \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} +c \left( \left\{ \begin{array}{l}
    1
  \end{array} \right\} - \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} \right) +s \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left( \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} + \left\{ \begin{array}{l}
    c
  \end{array} \right\} -c \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} +s \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left( ( 1-c ) \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{||} + \left\{ \begin{array}{l}
    c
  \end{array} \right\} +s \left\{ \begin{array}{l}
    \mathbf{n}
  \end{array} \right\}^{\times} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left\{ \begin{array}{l}
    R^{\theta}_{\mathbf{n}}
  \end{array} \right\} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\end{array}

which can be written as the matrix-vector product

\begin{array}{rcl}
  \left[ \begin{array}{l}
    \mathbf{v}_{\theta}
  \end{array} \right] & = & \left\{ \begin{array}{l}
    R^{\theta}_{\mathbf{n}}
  \end{array} \right\} \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\end{array}
\begin{array}{rcl}
  & = & \left( \begin{array}{l}
    ( 1-c ) \left(\begin{array}{cccc}
      1 & 0 & 0 & 0\\
      0 & n_{x} n_{x} & n_{x} n_{y} & n_{x} n_{z}\\
      0 & n_{y} n_{x} & n_{y} n_{y} & n_{y} n_{z}\\
      0 & n_{z} n_{x} & n_{z} n_{y} & n_{z} n_{z}
    \end{array}\right) +\\
    \left(\begin{array}{cccc}
      c & 0 & 0 & 0\\
      0 & c & 0 & 0\\
      0 & 0 & c & 0\\
      0 & 0 & 0 & c
    \end{array}\right) +s \left(\begin{array}{cccc}
      0 & 0 & 0 & 0\\
      0 & 0 & -n_{z} & n_{y}\\
      0 & n_{z} & 0 & -n_{x}\\
      0 & -n_{y} & n_{x} & 0
    \end{array}\right)
  \end{array} \right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\\
  & = & \left(\begin{array}{cccc}
    1 & 0 & 0 & 0\\
    0 & ( 1-c ) n_{x} n_{x} +c & ( 1-c ) n_{x} n_{y} -s n_{z} & ( 1-c ) n_{x}
    n_{z} +s n_{y}\\
    0 & ( 1-c ) n_{y} n_{x} +s n_{z} & ( 1-c ) n_{y} n_{y} +c & ( 1-c ) n_{y}
    n_{z} -s n_{x}\\
    0 & ( 1-c ) n_{z} n_{x} -s n_{y} & ( 1-c ) n_{z} n_{y} +s n_{x} & ( 1-c )
    n_{z} n_{z} +c
  \end{array}\right) \left[ \begin{array}{l}
    \mathbf{v}
  \end{array} \right]\end{array}

where this matrix represents the rotation operator. The lower 3 \times 3 part of the matrix is all that is needed to rotate vectors in 3D. The full 4 \times 4 matrix can be used to rotate quaternions, where any scalar part is unaffected by the rotation and the vector part is rotated in the usual way.

Rotations round the \mathbf{i},\mathbf{j},\mathbf{k} axes are found by setting \mathbf{n} as one of them, which gives

\begin{array}{rcl}
  \left\{ \begin{array}{l}
    R^{\theta}_{\mathbf{i}}
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    1 & 0 & 0 & 0\\
    0 & 1 & 0 & 0\\
    0 & 0 & \mathrm{cos} ( \theta ) & - \sin( \theta )  \\
    0 & 0 & \sin( \theta ) & \mathrm{cos} ( \theta )
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    R^{\theta}_{\mathbf{j}}
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    1 & 0 & 0 & 0\\
    0 & \mathrm{cos} ( \theta ) & 0 & \sin( \theta )\\
    0 & 0 & 1 & 0 \\
    0 & - \sin ( \theta ) & 0 & \mathrm{cos} ( \theta )
  \end{array}\right)\\
  \left\{ \begin{array}{l}
    R^{\theta}_{\mathbf{k}}
  \end{array} \right\} & = & \left(\begin{array}{cccc}
    1 & 0 & 0 & 0\\
    0 & \mathrm{cos} ( \theta ) & - \sin( \theta ) & 0\\
    0 & \sin ( \theta ) & \mathrm{cos} ( \theta ) & 0 \\
    0 & 0 & 0 & 1
  \end{array}\right) .\end{array}

A rotation by a negative angle is the same as a change of basis onto axes rotated by the positive angle. Cramer's rule, and related methods, provide a more generalized way to compute vectors relative to a new or changed basis.

Relationship between quaternions and complex numbers

The relationship between complex numbers and quaternions, with respect to planar rotations by 2 \theta radians in the vector plane perpendicular to \mathbf{u}, might be written as

\begin{array}{rcl}
  e^{2 \theta \mathbf{u}} & = & ( e^{\pi \mathbf{u}} )^{\frac{2 \theta}{\pi}}
  = ( -1 )^{\frac{2 \theta}{\pi}} = \sqrt{-1}^{\frac{4 \theta}{\pi}}\\
  & = & i^{\frac{4 \theta}{\pi}} = ( i^{4} )^{\frac{\theta}{\pi}}
  =1^{\frac{\theta}{\pi}}\\
  1 & = & i^{4} =e^{2 \pi \mathbf{u}} =e^{0} .\end{array}

This seems to show that 1 must be identified with i^{4} representing a planar rotation by 2 \pi or a null rotation round \mathbf{u}, otherwise the results degenerate. The value i (not to be confounded as the quaternion unit \mathbf{i}) seems to represent rotation by \pi /2 round \mathbf{u} since

\begin{array}{rcl}
  e^{\frac{\pi}{2} \mathbf{u}} & = & ( -1 )^{\frac{1}{2}} = \sqrt{-1} =i.\end{array}

In general, i^{t} seems to represent t quadrants of rotation round \mathbf{u}. However, this interpretation of i holds for any arbitrary axis \mathbf{u}, such that i can always be interpreted as a versor that is perpendicular to any and all geometrical (generally non-commutative multiplication) planes spanned by arbitrary biradials, or that i is parallel and equivalent to all axes of rotation on the unit-sphere.

On a metrical (generally commutative multiplication) complex number plane where points ( a,b ) are represented by complex numbers c=a+b i= | c |  e^{\theta i}, the value i is a quadrantal rotation operator on the points

\begin{array}{rcl}
  i^{t} ( a+b i ) & = & | c |  e^{\frac{\pi}{2} t i} e^{\theta i} = | c | 
  e^{\left( \frac{\pi}{2} t+ \theta \right) i} .\end{array}

If \mathbf{u} is temporarily identified with i (as an isomorphism), then \mathbf{u}^{t} =\mathbf{b}/\mathbf{a} can be interpreted simultaneously as both a geometrical rotation operator on geometrical vectors \alpha \mathbf{a}+ \beta \mathbf{b} in the \mathbf{a}\mathbf{b}-plane and as a metrical rotation operator on metrical points ( a,b ) represented by complex numbers a+b i \Leftrightarrow a+b\mathbf{u}.

In standard quaternions, the scalars q_{w} ,q_{x} ,q_{y} ,q_{z} are limited to real numbers so that complex numbers a+b i are not elements of the set of standard quaternion numbers. This means that using i within standard or real quaternions is not permitted. Therefore, the identification of \mathbf{u} with i, or trying \mathbf{u}=i is not valid. In the above, the words “might” and “seems” are emphasized because i^{t} = \sqrt{-1}^{t}, or any power of -1, is not a valid value to construct within standard quaternions. Stated more clearly, the power

\begin{array}{rcl}
  ( -1 )^{t} & = & ( e^{\pi i} )^{t} =e^{t \pi i} = \mathrm{cos} ( t \pi ) +
  \sin\end{array}

is generally a complex number, and therefore it is not generally permitted in real quaternions.

Whenever a value similar to \sqrt{-1}^{t} is needed, a specific versor \mathbf{u}^{t} having specific geometrical significance on the unit-sphere must be used as a metrical rotation operator on the a b-plane of pseudo-complex numbers a+b\mathbf{u}.

In practice, an exception can be made for ( -1 )^{t} and allow this power if t is an integer, since the result remains a real number. Expressions of the form ( -1 )^{t} are often used to give the sign or orientation of certain results. In general, this exception can cause problems because it is an operation outside of the proper algebra of quaternions.

Consider the general case of taking the power t of a quaternion q

\begin{array}{rcl}
  \mathbf{u} & = & \mathrm{UVU} q= \mathrm{UV} \left( \frac{q}{\mathrm{T} q}
  \right) = \mathrm{U} \left( \frac{\mathbf{q}}{\mathrm{T} q} \right) =
  \frac{\mathrm{T} q}{\mathrm{T} \mathbf{q}} \mathbf{q}\\
  0 \leq \theta & = & \mathrm{cos}^{-1} \left( \mathrm{SU} q \right) =
  \mathrm{cos}^{-1} \left( \frac{q_{w}}{\mathrm{T} q} \right) \leq \pi\\
  q^{t} & = & \left( \mathrm{T} q \mathrm{U} q \right)^{t} = \left( \mathrm{T}
  q \right)^{t} e^{t \theta \mathbf{u}} = \left( \mathrm{T} q \right)^{t}
  \left[ \mathrm{cos} ( t \theta ) + \sin ( t \theta ) \mathbf{u}
  \right]\end{array}

and notice that tensors are positive and the power of a versor should never require taking the power ( -1 )^{t} so long as the axis \mathbf{u} is known.

If \theta =0 or \theta = \pi then e^{\theta \mathbf{u}} = \pm 1 and \mathbf{u} can be lost, which is a problem where it can be said that a scalar \pm \mathrm{T} q, or any scalar by itself, is not a quaternion. It is important to not lose the axis \mathbf{u} of the quaternion or else the quaternion geometric algebra is not closed, or it has exited into the metrical algebra of real or complex numbers if that is acceptable to your application. Whatever the angle of \theta, the versor expression e^{\theta \mathbf{u}} should be retained and not allowed to degenerate into a scalar if remaining in the quaternion algebra is important.

It would appear that quaternions do not really extend metrical real or complex numbers, but forms its very own special geometric algebra that is not closed if the axis (the geometric part) of a quaternion is lost. The paper Planar Complex Numbers in Even n Dimensions and the monograph Complex Numbers in n Dimensions, both by Silviu Olariu and published in 2000, present a possible extension of complex numbers that have commutative multiplication. Higher dimensional extensions of complex numbers are also known as hypercomplex numbers.

In geometric algebras, such as quaternions and Clifford geometric algebras, the value \sqrt{-1} is usually avoided due to its ambiguous or indeterminate geometrical interpretation. It is avoided by limiting scalars to real numbers and using a subalgebra isomorphic to complex numbers when needed. Again, it is also possible to allow the geometric algebra to exit into the metrical real or complex number algebra if that is acceptable. And again, an exception is integer t powers ( -1 )^{t} that are commonly used in formulas to compute signs or orientation.

The biquaternions[1](Art.669) include i as an element of its algebra, but it might be well to also consider using the Clifford geometric algebra \mathcal{G}_{4,1}, wherein complex numbers, quaternions, biquaternions, and dual quaternions are all embedded isomorphically as subalgebras.

Quaternion rotation biradials in Clifford geometric algebra

To keep this article somewhat self-contained, this subsection tries to provide an overview or partial introduction to geometric algebra, with many identities and formulas, aimed at helping the reader to more quickly see how quaternion rotations can be used in geometric algebra. See the references and other works on geometric algebra for general introductions to the subject.

Studying the algebra of rotations teaches a lot about the geometric algebra. In geometric algebra, the products and quotients of vectors are also biradials or transition operators, and are very similar to quaternions. In fact, they are quaternions, but in a different form, with different terminology, and in a different, more generalized algebra. The quotient \mathbf{b}/\mathbf{a} is still the transition operator that takes \mathbf{a} to \mathbf{b} as \mathbf{b}= ( \mathbf{b}/\mathbf{a} ) \mathbf{a}. The transition of \mathbf{a} to \mathbf{b} is a composition of a rotation into the line of \mathbf{b} followed by a scaling to the length of \mathbf{b}.

Quaternion vectors are imaginary directed quantities

A real quaternion v=v_{w} +v_{x} \mathbf{i}+v_{y} \mathbf{j}+v_{z} \mathbf{k} has a pure quaternion or quaternion vector part \mathbf{v}=v_{x} \mathbf{i}+v_{y} \mathbf{j}+v_{z} \mathbf{k} and a scalar part v_{w}, where the scalars v_{w} ,v_{x} ,v_{y} ,v_{z} are limited to real numbers. The real quaternions are simply the quaternions commonly used.

The quaternion vector units \mathbf{i},\mathbf{j},\mathbf{k} are used as a basis for representing points and directed quantities in a three-dimensional space. However, the square \mathbf{q}^{2} of a vector quantity \mathbf{q} in quaternions is \mathbf{q}^{2} =- | \mathbf{q} |^{2}. In effect, the directed quantity \mathbf{q} is treated as a pure imaginary quantity, even though its components q_{x} ,q_{y} ,q_{z} have been limited to real numbers and the quantity should be considered real and have a real positive squared quantity. This is one of the problems with quaternions and is part of the motivation for avoiding quaternion vector quotients and products in ordinary vector calculus or analysis, as introduced in the 1901 book Vector Analysis[2] by E. B. Wilson that is founded upon the lectures of J. W. Gibbs.

Euclidean vectors are real directed quantities

A different orthonormal basis of base vector units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3} for three-dimensional space can be used instead of \mathbf{i},\mathbf{j},\mathbf{k}. The directed quantity \mathbf{q} can be rewritten \mathbf{q}=q_{x} \mathbf{e}_{1} +q_{y} \mathbf{e}_{2} +q_{z} \mathbf{e}_{3} on this basis. If we now require that \mathbf{q}^{2} = | \mathbf{q} |^{2}, then we also require that \mathbf{e}^{2}_{1} =\mathbf{e}^{2}_{2} =\mathbf{e}^{2}_{3} =1. The vector \mathbf{q} can now be called a Euclidean vector, and \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3} are the Euclidean vector units of a three-dimensional Euclidean space that may be variously denoted \mathcal{E}^{3} or \mathcal{G}^{3}. The scalars q_{x} ,q_{y} ,q_{z} are still limited to real numbers.

Clifford geometric algebras

The algebra, variously denoted \mathcal{E}_{3} or \mathcal{G}_{3}, of the vector units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3} is called the Clifford geometric algebra of Euclidean 3-space, and is also denoted \mathcal{C} \ell ( \mathcal{E}^{3} ). We are only concerned with this particular Clifford geometric algebra in all that follows here. This algebra differs from the quaternion geometric algebra of \mathbf{i},\mathbf{j},\mathbf{k}. However, the quaternion units \mathbf{i},\mathbf{j},\mathbf{k} are isomorphic to the three unit 2-blades \mathbf{E}_{\mathbf{i}} ,\mathbf{E}_{\mathbf{j}} ,\mathbf{E}_{\mathbf{k}} of this Clifford algebra, allowing quaternion concepts to be used within the subalgebra of these three unit 2-blades.

Clifford algebras also allow more vector units than three, and also to have some units that square positive and some that square negative. An example is the Clifford algebra having the vector units \mathbf{e}^{2}_{1} =\mathbf{e}^{2}_{2} =\mathbf{e}^{2}_{3} =\mathbf{e}^{2}_{+} =1 and \mathbf{e}^{2}_{-} =-1, where the space is denoted \mathcal{G}^{4,1} and its algebra is denoted \mathcal{G}_{4,1}. The algebra \mathcal{G}_{4,1} is very useful and is called the conformal geometric algebra of Euclidean physical space (C3GA). Its generalization to higher dimensions is called the homogeneous model of \mathcal{E}^{n}[3](27). The discussion of C3GA is beyond the scope of this article, except to mention that quaternion rotation concepts are central to using C3GA, wherein operators of the form Q A Q^{-1} generate all the ordinary transformations on A, including translations.

Clifford geometric algebra is also commonly called just geometric algebra. Geometric algebra, in the form discussed here, is introduced in the 1984 book Clifford Algebra to Geometric Calculus, A Unified Language for Mathematics and Physics[4] by authors David Hestenes and Garret Sobczyk. Geometric algebra derives from earlier work on the abstract algebras of Clifford numbers that assign little or no geometrical meanings or interpretations. The emphasis of geometric algebra is on geometrical interpretations and applications. Clifford geometric algebra is named after William Kingdon Clifford. Clifford wrote papers, including Applications of Grassmann’s Extensive Algebra (1878)[5] and On The Classification of Geometric Algebras (1876)[6], that introduced geometric algebra as a unification of the earlier geometric algebras of Argand, Möbius, Gauss, Peacock, Hamilton, Grassmann, Saint-Venant, Kirkman, Cauchy, and Peirce. Clifford died in 1879 before he could fully develop and publish his ideas on geometric algebra.

Rules for the quaternion and Euclidean vector units

While the quaternion units \mathbf{i},\mathbf{j},\mathbf{k} have the rule or formula \mathbf{i}^{2} =\mathbf{j}^{2} =\mathbf{k}^{2} =\mathbf{i}\mathbf{j}\mathbf{k}=-1, the Clifford units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3} of \mathcal{G}_{3} have the formula

\begin{array}{rcl}
  -\mathbf{e}^{2}_{1} =-\mathbf{e}^{2}_{2} =-\mathbf{e}^{2}_{3} & = &
  -\mathbf{e}_{1} \cdot \mathbf{e}_{1} =-\mathbf{e}_{2} \cdot \mathbf{e}_{2}
  =-\mathbf{e}_{3} \cdot \mathbf{e}_{3}\\
  & = & ( \mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{3} )^{2} = (
  \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \mathbf{e}_{3} )^{2}
  =\mathbf{I}^{2}\\
  & = & ( \mathbf{e}_{3} \mathbf{e}_{2} ) ( \mathbf{e}_{1} \mathbf{e}_{3} ) (
  \mathbf{e}_{2} \mathbf{e}_{1} )\\
  & = & ( \mathbf{e}_{3} /\mathbf{e}_{2} ) ( \mathbf{e}_{1} /\mathbf{e}_{3} )
  ( \mathbf{e}_{2} /\mathbf{e}_{1} )\\
  & = & ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) ( \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} ) ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} )\\
  & = & \mathbf{E}_{\mathbf{i}} \mathbf{E}_{\mathbf{j}}
  \mathbf{E}_{\mathbf{k}} =\mathbf{E}^{2}_{\mathbf{i}}
  =\mathbf{E}^{2}_{\mathbf{j}} =\mathbf{E}^{2}_{\mathbf{k}} =-1\end{array}

which is also showing some extra identities that map to quaternion quadrantal versors. The quaternion units map into \mathcal{G}_{3} as the Euclidean vector biradials, which are called unit bivectors or 2-blades in Clifford algebra

\begin{array}{rcl}
  \mathbf{i}=\mathbf{k}/\mathbf{j} & \Leftrightarrow & \mathbf{e}_{3}
  /\mathbf{e}_{2} =\mathbf{e}_{3} \mathbf{e}_{2} =\mathbf{e}_{3} \wedge
  \mathbf{e}_{2} =\mathbf{E}_{\mathbf{i}}\\
  \mathbf{j}=\mathbf{i}/\mathbf{k} & \Leftrightarrow & \mathbf{e}_{1}
  /\mathbf{e}_{3} =\mathbf{e}_{1} \mathbf{e}_{3} =\mathbf{e}_{1} \wedge
  \mathbf{e}_{3} =\mathbf{E}_{\mathbf{j}}\\
  \mathbf{k}=\mathbf{j}/\mathbf{i} & \Leftrightarrow & \mathbf{e}_{2}
  /\mathbf{e}_{1} =\mathbf{e}_{2} \mathbf{e}_{1} =\mathbf{e}_{2} \wedge
  \mathbf{e}_{1} =\mathbf{E}_{\mathbf{k}}\end{array}
\begin{array}{rcl}
  \mathbf{E}_{\mathbf{i}} & = & \mathbf{E}_{\mathbf{k}}
  /\mathbf{E}_{\mathbf{j}} =-\mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{1}
  \mathbf{e}_{3} =\mathbf{e}_{3} \mathbf{e}_{2}\\
  \mathbf{E}_{\mathbf{j}} & = & \mathbf{E}_{\mathbf{i}}
  /\mathbf{E}_{\mathbf{k}} =-\mathbf{e}_{3} \mathbf{e}_{2} \mathbf{e}_{2}
  \mathbf{e}_{1} =\mathbf{e}_{1} \mathbf{e}_{3}\\
  \mathbf{E}_{\mathbf{k}} & = & \mathbf{E}_{\mathbf{j}}
  /\mathbf{E}_{\mathbf{i}} =-\mathbf{e}_{1} \mathbf{e}_{3} \mathbf{e}_{3}
  \mathbf{e}_{2} =\mathbf{e}_{2} \mathbf{e}_{1}\end{array}

and it is seen that, in terms of the quotients, the mapping is quite simple when we view the quaternion units as quadrantal versor rotation axes being held in right-hand on right-handed axes model, or held in left-hand on left-handed axes model while fingers curl round the rotational direction as thumb points in the positive direction of the axis. The inverse of a quaternion unit is its negative or conjugate, while the inverse of a Euclidean unit is itself. The square of a unit bivector is -1, as for example \mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{1} =-\mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{2} \mathbf{e}_{1} =-1.

For i \neq j, different units multiply anti-commutatively \mathbf{e}_{i} \mathbf{e}_{j} =-\mathbf{e}_{j} \mathbf{e}_{i} and are identical to their outer product \mathbf{e}_{i} \wedge \mathbf{e}_{j} =-\mathbf{e}_{j} \wedge \mathbf{e}_{i}, where the outer product symbol ( \wedge ) between different base vector units is only synonymous or symbolic of their perpendicularity, or of a \pi /2 angle between the units. The inner product symbol ( \cdot ) between same base vector units is again only synonymous or symbolic of their parallelism, or of a zero angle between them. We also have the important fundamental geometric product of vector units \mathbf{e}_{i} \mathbf{e}_{j} =\mathbf{e}_{i} \cdot \mathbf{e}_{j} +\mathbf{e}_{i} \wedge \mathbf{e}_{j} which is a true formula since either i=j and results in \mathbf{e}_{i} \cdot \mathbf{e}_{j} +0=1, or i \neq j and results in 0+\mathbf{e}_{i} \wedge \mathbf{e}_{j} =\mathbf{e}_{i} \wedge \mathbf{e}_{j}.

The outer product

The formulas contain the product ( \wedge ) called the outer product. The outer product of vectors has the same magnitude as the cross product ( \times ) of vectors, but the result is not a vector but is a value called a 2-vector or bivector. It will be shown that the cross product of vectors is given by the formula \mathbf{a} \times \mathbf{b}= ( \mathbf{a} \wedge \mathbf{b} ) /\mathbf{I}. The outer product of parallel ( \theta =0 ) vector components is zero ( \sin \theta =0), and the outer product of perpendicular ( \theta = \pi /2 ) vector components is an irreducible symbolic outer product expression of the perpendicular vector components. The outer product of n vectors is a new n-dimensional geometrical object representing a geometrical measure of their perpendicularity or space.

The appearance of the outer ( \wedge ) and inner ( \cdot ) product symbols between the different and same orthonormal base vector units in the rule formulas, and the relation to the value \mathbf{I} and -1, can also serve to define these products in terms of simple algebraic multiplications of the units in ways consistent with the rule formula. The product of algebraic multiplication of two values in terms of only base vector units and scalars, obeying the basic rule formula, is known as the geometric product. The absence of any product symbol means algebraic multiplication consistent with rules, i.e. a geometric product.

An important result in the outer product of vectors is

\begin{align}
  \mathbf{a} \wedge \mathbf{b} & = \mathbf{a} \wedge (
  \mathbf{b}^{||\mathbf{a}} +\mathbf{b}^{\bot \mathbf{a}} ) =\mathbf{a} \wedge
  \mathbf{b}^{||\mathbf{a}} +\mathbf{a} \wedge \mathbf{b}^{\bot \mathbf{a}}
  =0+\mathbf{a} \wedge \mathbf{b}^{\bot \mathbf{a}}
  =\mathbf{a}\mathbf{b}^{\bot \mathbf{a}}\\
  & = ( \mathbf{a}^{||\mathbf{b}} +\mathbf{a}^{\bot \mathbf{b}} ) \wedge
  \mathbf{b}=\mathbf{a}^{||\mathbf{b}} \wedge \mathbf{b}+\mathbf{a}^{\bot
  \mathbf{b}} \wedge \mathbf{b}=0+\mathbf{a}^{\bot \mathbf{b}} \wedge
  \mathbf{b}=\mathbf{a}^{\bot \mathbf{b}} \mathbf{b}\\
  & = \mathbf{a} \wedge ( s\mathbf{a}+\mathbf{b} ) = (
  t\mathbf{b}+\mathbf{a} ) \wedge \mathbf{b}\\
  & = | \mathbf{a} |   | \mathbf{b} |   \sin( \theta )
  \frac{\mathbf{a} \wedge \mathbf{b}}{| \mathbf{a} |   | \mathbf{b} |  
  \sin( \theta )}  = | \mathbf{a} |   | \mathbf{b} | \sin (
  \theta ) \mathbf{N}\\
  & = - | \mathbf{a} |   | \mathbf{b} |   \sin( - \theta ) 
  \mathbf{N}=-\mathbf{b} \wedge \mathbf{a}\end{align}

that one of the two parallel components is always arbitrarily scaled or deleted, such that \mathbf{a} or \mathbf{b} can be moved or translated parallel to \mathbf{b} or \mathbf{a} (perhaps until intersecting or becoming collinear with another object or line of interest) without affecting the result of their outer product. The value \mathbf{N} is the irreducible unit bivector of the outer product \mathbf{a} \wedge \mathbf{b}. It will be shown that \mathbf{N} represents the plane containing \mathbf{a} and \mathbf{b} as a unit of directed and oriented area and that it also acts as the quadrantal versor of the plane, similar to a unit vector in quaternions.

Outer products are geometrical values for imaginaries

The outer product expression \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \cdots \wedge \mathbf{a}_{n} can generally be written

\begin{array}{rcl}
  \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \cdots \wedge \mathbf{a}_{n} & =
  & \left|\begin{array}{cccc}
    \mathbf{a}_{1} & \mathbf{a}_{2} & \cdots & \mathbf{a}_{n}
  \end{array}\right|  \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots
  \wedge \mathbf{e}_{n}\end{array}

where the determinant \left|\begin{array}{cccc}   \mathbf{a}_{1} & \mathbf{a}_{2} & \cdots & \mathbf{a}_{n} \end{array}\right| of the matrix of n vectors \mathbf{a}_{i} in an n-dimensional space is the n-volume of a n-parallelotope formed by the n-frame of the n vectors \mathbf{a}_{i}. The outer product of the n vector-units \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots \wedge \mathbf{e}_{n} can be regarded as a type of imaginary value or symbol, representing physical perpendicularity of the unit vectors in up to n=3 physical dimensions, and representing imaginary perpendicularity in higher dimensions n>3. Similar to the imaginary value symbol \sqrt{-1}, the imaginary product symbol \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots \wedge \mathbf{e}_{n} is irreducible to a real value by itself. However, the square of an imaginary product, such as ( \mathbf{e}_{1} \wedge \mathbf{e}_{2} )^{2} =-1, is a real value. Generally, it is shown that

\begin{array}{rcl}
  ( \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots \wedge \mathbf{e}_{n}
  )^{2} & = & \left( \sqrt{-1} \right)^{2 [ n ( n-1 ) /2 ]} = ( -1 )^{n ( n-1
  ) /2} = \pm 1\\
  ( 1,2,3,4,5,6, \ldots ,n ) & \rightarrow & ( +1,+1,-1,-1,+1,+1, \ldots , \pm
  1 )\end{array}

holds good for n base unit vectors of an n-dimensional Euclidean space where \mathbf{e}^{2}_{i} =1. Taking square roots, we might (but should not) write \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots \wedge \mathbf{e}_{n}^{} = \left( \sqrt{-1} \right)^{n ( n-1 ) /2} and find that the right side has lost all of the vectors or axes of the left side (a geometrical value), and that the right side is generally a kind of complex number (a metrical value). However, this direct identification of a geometrical value to a metrical value is not valid. Nevertheless, it can be said that the geometrical n-parallelotope unit \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots \wedge \mathbf{e}_{n} may represent a particular extension or instance of the ordinary complex number symbol \sqrt{-1} when ( -1 )^{n ( n-1 ) /2} =-1, and of the split-complex or hyperbolic number symbol \sqrt{+1} when ( -1 )^{n ( n-1 ) /2} =+1. Multivectors of the form s+ \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \cdots \wedge \mathbf{a}_{n}, being a scalar s plus n-blade, behave either as ordinary complex values on a complex plane or as hyperbolic values on a hyperbolic plane. The unit n-parallelotopes \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \cdots \wedge \mathbf{e}_{n}^{} can be interpreted as geometrically specific objects that represent the metrical values \sqrt{-1} and \sqrt{+1} which by themselves represent unknown, lost, or arbitrary geometrical objects. Similar to quaternions and losing an axis of rotation at angles \theta = \pi and \theta =0, it could be a problem to lose a 2-blade or 2-vector used as a representation of a quaternion vector or axis of rotation.

Outer product is identified with scalar multiplication

The outer product with scalars is identical to ordinary scalar multiplication. Scalars are considered to be perpendicular to all values, including to another scalar so that s t=s \cdot t+s \wedge t=s \wedge  t represents the n-volume of an unknown n-parallelotope. It is not certain that s t is an area since an area is represented by \mathbf{s} \wedge \mathbf{t}, the outer product of two vectors. All we can say about s t is that it is a scalar product, or pure inner product (this may seem to be a backwards statement), or pure measure of parallelism between geometrical objects in the same dimensions by non-zero amounts, or the result of a geometrical object contracted to zero dimensions by inner product with another geometrical object. Contraction is the generalization of the vector dot product to dot products of higher-dimensional (or grade) geometrical objects represented by outer product expressions. An outer product e_{1} \wedge e_{2} \wedge \cdots \wedge e_{n} of n scalars e_{i} can be reduced to e_{1} e_{2} \cdots e_{n} ( 1 \wedge 1 \wedge \cdots \wedge 1 ), where ( 1 \wedge 1 \wedge \cdots \wedge 1 ) =1 and it represents an identity matrix that has lost its vectors and has an indeterminate dimension, or has become dimensionless (non-vectorial) and allowed to be identical to the unit 0-vector 1.

As an additional comment, it should be noted that the formulas for the inner and outer products with scalars have not been fully agreed upon by all mathematicians in geometric algebra[7](247). New or alternative formulas are beyond the scope of this article. Most of the currently available software for geometric algebra continues to use the rules that the inner product with a scalar is zero, and the outer product with a scalar is identical to ordinary scalar multiplication, and these are the rules followed in this article.

A proposed change to the inner product says that the new inner product with a scalar is to be also identical to scalar multiplication, giving the formulas[7](279)

\begin{array}{rcl}
  \alpha \mathbf{a} & = & \mathbf{a} \cdot \alpha =\mathbf{a} \wedge \alpha\\
  \mathbf{a}A & = & \mathbf{a} \cdot A+\mathbf{a} \wedge A-\mathbf{a} \langle
  A \rangle\end{array}

where \alpha is any scalar, \mathbf{a} is any vector, and A is any multivector. If the multivector A contains a scalar component, represented by the scalar grade selector \langle A \rangle, then -\mathbf{a} \langle A \rangle subtracts one of the two copies. If A=\mathbf{A}, where \mathbf{A} is a blade (no scalar component), then the “Chevalley formula”

\begin{array}{rcl}
  \mathbf{a}\mathbf{A} & = & \mathbf{a} \cdot \mathbf{A}+\mathbf{a} \wedge
  \mathbf{A}\end{array}

continues to be valid. However, in general the Chevalley formula with any multivector A is no longer valid under this change. This proposed change is essentially the same as the (fat) dot product, but it tries not to introduce a new product symbol.

Grades, blades, and vectors

The outer product expressions t \wedge s, t \wedge \mathbf{a}, \mathbf{a} \wedge \mathbf{b}, and \mathbf{a} \wedge \mathbf{b} \wedge \mathbf{c} represent, respectively, the geometrical values or objects: a 0-blade or metrical scalar t s in a 1-dimensional scalar subspace, a 1-vector or geometrical vector directed-length t\mathbf{a} in the \mathbf{a}-line, a 2-vector or geometrical bivector directed-area of parallelogram in the \mathbf{a}\mathbf{b}-plane (or \mathbf{N}-plane), and a 3-vector or geometrical trivector directed-volume of parallelepiped in the \mathbf{a}\mathbf{b}\mathbf{c}-space (or \mathbf{I}-space).

A sum of linearly independent k-blades is called a k-vector, where the number k is called the grade. The three vector units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3} are the unit 1-blades and their linear combinations are grade-1 vectors in a 3-dimensional subspace of \mathcal{G}_{3}. The three unit 2-blades are \mathbf{E}_{\mathbf{i}} =\mathbf{e}_{3} \wedge \mathbf{e}_{2}, \mathbf{E}_{\mathbf{j}} =\mathbf{e}_{1} \wedge \mathbf{e}_{3}, and \mathbf{E}_{\mathbf{k}} =\mathbf{e}_{2} \wedge \mathbf{e}_{1}, and a 2-vector has the general form x\mathbf{E}_{\mathbf{i}} +y\mathbf{E}_{\mathbf{j}} +z\mathbf{E}_{\mathbf{k}} representing a pure quaternion vector or grade-2 vector in a 3-dimensional subspace of \mathcal{G}_{3}. The single unit 3-blade \mathbf{I}=\mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \mathbf{e}_{3}, called the unit pseudoscalar, is a grade-3 vector in a 1-dimensional subspace of \mathcal{G}_{3}. There is a total of 8 k-blade dimensions in \mathcal{G}_{3}.

The outer product of a j-blade and k-blade is a ( k+j )-blade, or 0 if any vector is common between the blades multiplied since they do not span any area or volume (no perpendicular component).

A multivector is a sum or linear combination of linearly independent k-vectors of various grades k.

There are no 4-blades or larger outer product expressions or objects than the 3-blade pseudoscalar in \mathcal{G}_{3}, since there are only three base vector units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3}.

Outer product expressions construct representations of directed geometric objects or values that are within a certain attitude (a space spanned by a set of unit k-vectors), have a positive scalar magnitude, and have a direction or orientation (relative to the attitude or space) that is represented by a positive or negative sign on the magnitude.

The value of an outer product expression can also be represented by a matrix containing the vectors as elements where the determinant gives the signed magnitude relative to the orientation of the basis.

The inner product

The product ( \cdot ) called the inner product is the complementary product to the outer product and is similar to the dot product of vector analysis and linear algebra, except that the inner product of quaternion vectors, if represented by \mathbf{i},\mathbf{j},\mathbf{k} \Leftrightarrow \mathbf{E}_{\mathbf{i}} ,\mathbf{E}_{\mathbf{j}} ,\mathbf{E}_{\mathbf{k}} as pseudovectors, is the negative of the value given by the dot product in actual quaternions. The Clifford algebra extends the inner product to take inner products of multivectors. The inner product of parallel ( \theta =0 ) components is a scalar ( \cos \theta =1 ) similar to multiplying numbers on a real or complex number line or axis, and the inner product of perpendicular ( \theta = \pi /2 ) components is zero ( \cos \theta =0 ). The inner product is a geometrical measure (a multivector) of parallelism. Between two k-vectors of the same grade, the inner product reduces to a pure metrical measure (a scalar) of their parallelism, and no contracted (grade reduced) geometrical outer product expressions, objects, or vector components will remain.

An important result in the inner product of vectors is

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{b} & = & \mathbf{a} \cdot (
  \mathbf{b}^{||\mathbf{a}} +\mathbf{b}^{\bot \mathbf{a}} ) =\mathbf{a} \cdot
  \mathbf{b}^{||\mathbf{a}} +\mathbf{a} \cdot \mathbf{b}^{\bot \mathbf{a}}
  =\mathbf{a} \cdot \mathbf{b}^{||\mathbf{a}}
  +0=\mathbf{a}\mathbf{b}^{||\mathbf{a}}\\
  & = & ( \mathbf{a}^{||\mathbf{b}} +\mathbf{a}^{\bot \mathbf{b}} ) \cdot
  \mathbf{b}=\mathbf{a}^{||\mathbf{b}} \cdot \mathbf{b}+\mathbf{a}^{\bot
  \mathbf{b}} \cdot \mathbf{b}=\mathbf{a}^{||\mathbf{b}} \cdot
  \mathbf{b}+0=\mathbf{a}^{||\mathbf{b}} \mathbf{b}\\
  & = & \mathbf{a} \cdot ( \mathbf{b}^{||\mathbf{a}} +t\mathbf{b}^{\bot
  \mathbf{a}} ) = ( \mathbf{a}^{||\mathbf{b}} +s\mathbf{a}^{\bot \mathbf{b}} )
  \cdot \mathbf{b}\\
  & = & | \mathbf{a} |   | \mathbf{b} |   \mathrm{cos} ( \theta )\\
  & = & | \mathbf{a} |   | \mathbf{b} |   \mathrm{cos} ( - \theta )
  =\mathbf{b} \cdot \mathbf{a}\end{array}

that one of the two perpendicular components is always arbitrarily scaled or deleted, such that \mathbf{a} or \mathbf{b} can be moved or translated perpendicular to \mathbf{b} or \mathbf{a} without affecting the result of their inner product.

The inner product of a j-blade and k-blade is a | k-j |-blade, which is often a 0-blade scalar. Scalars are considered to be perpendicular to all values, even to other scalars; therefore, the inner product involving a scalar factor is zero. Inner products that produce a scalar can be represented by the determinant of a matrix formed by the multiplication of two other matrices representing outer products of equal grade.

A note on terminology may be appropriate here. The “inner” and “outer” products discussed in this article are those of the Clifford geometric algebra. In the terminology of matrix linear algebra, an “inner product”, “dot product”, or “scalar product” is an ordinary matrix multiplication of a row vector with a column vector that produces a single scalar element, and is the means by which the dot product of vectors is computed in vector calculus. Also in the terminology of matrix linear algebra, the “outer product” is the multiplication of a column vector with a row vector that produces a matrix. In the terminology of Hermann Grassmann’s exterior algebra, there are “interior” and “exterior” products, which are very closely related to the Clifford geometric algebra’s inner and outer products. Geometric algebra has many distinct products to represent scalar products, inner products, outer products, dot products, contraction products, and other specialized products that can relate to products or concepts used in other algebras. Although distinct, the various products in geometric algebra are all derived from, or are parts of, the geometric product.

The geometric product of two Euclidean vectors is the sum of their inner and outer products. This is similar to the quaternion product of two pure quaternions (quaternion vectors), which is their cross product minus their dot product. The quaternion product is the geometric product for quaternions. In Clifford geometric algebra, the geometric product generalizes the quaternion product to more than four dimensions.

The sum of the inner and outer products

While the outer and inner products are of complementary magnitude according to the trigonometric functions, neither is a complete product of vectors since each deletes a parallel or perpendicular component in one of the factors. Outer and inner products are geometric measures of perpendicularity and parallelism, respectively. The complementary magnitudes suggest that they are the projected components of yet some other value that is vectorially equal to their sum

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{b}+\mathbf{a} \wedge \mathbf{b} & = & | \mathbf{a}
  |   | \mathbf{b} |   \mathrm{cos} ( \theta ) + | \mathbf{a} |   | \mathbf{b}
  |   \sin( \theta )  \mathbf{N}\\
  & = & | \mathbf{a} |   | \mathbf{b} | \left( \mathrm{cos} ( \theta ) +
  \sin( \theta )  \mathbf{N} \right)\end{array}

This sum appears very similar to the quaternion vector biradial \mathbf{b}/\mathbf{a}=\mathbf{a} \cdot \mathbf{b}+\mathbf{a} \times \mathbf{b}, and they can be shown to be related as duals by dividing by the unit pseudoscalar. Considering unit vectors, and quaternion vectors only on the left of \Leftrightarrow and Euclidean vectors for the rest, we have

\begin{array}{rcl}
  \mathbf{b}/\mathbf{a}=-\mathbf{b}\mathbf{a}=\mathbf{a} \cdot
  \mathbf{b}+\mathbf{a} \times \mathbf{b} & \Leftrightarrow &
  \mathbf{b}/\mathbf{a}=\mathbf{b}\mathbf{a}=\mathbf{b} \cdot
  \mathbf{a}+\mathbf{b} \wedge \mathbf{a}\\
  \mathbf{a} \times \mathbf{b} & = & ( \mathbf{a} \wedge \mathbf{b} )
  /\mathbf{I}=- ( \mathbf{a} \wedge \mathbf{b} ) \mathbf{I}= ( \mathbf{b}
  \wedge \mathbf{a} ) \mathbf{I}\\
  ( \mathbf{a} \times \mathbf{b} ) /\mathbf{I} & = & \mathbf{b} \wedge
  \mathbf{a}= | \mathbf{a} |   | \mathbf{b} |   \sin( - \theta ) 
  \mathbf{N}.\end{array}

Since we started looking at the product \mathbf{a} \wedge \mathbf{b} first, the angle \theta is now seen to represent the angle measured positive from \mathbf{b} to \mathbf{a}, and - \theta goes the reverse way from \mathbf{a} to \mathbf{b}. Unit bivector \mathbf{N} represents a quadrantal versor in the direction from \mathbf{b} to \mathbf{a}, or \mathbf{a}=e^{\theta \mathbf{N}} \mathbf{b} and \mathbf{b}=e^{- \theta \mathbf{N}} \mathbf{a}. If we would agree to go back and reverse the sign on \theta, we would have the usual rotational orientation used in quaternion rotation biradials. However, unit bivectors like \mathbf{N} do in general represent the negative rotational direction compared to the similar looking cross product. For example, in quaternions \mathbf{n}= \frac{\mathbf{a} \times \mathbf{b}}{| \mathbf{a} \times \mathbf{b} |} is the quadrantal rotation versor or axis that rotates from \mathbf{a} toward \mathbf{b}, while in Euclidean vectors the similar looking unit bivector \mathbf{N}= \frac{\mathbf{a} \wedge \mathbf{b}}{| \mathbf{a} \wedge \mathbf{b} |} is a quadrantal versor, or geometric multiplier that effects planar rotation by \pi /2, that rotates from \mathbf{b} towards \mathbf{a}, according to

\begin{array}{rcl}
  \frac{\mathbf{a} \wedge \mathbf{b}}{| \mathbf{a} \wedge \mathbf{b} |} & = &
  \frac{\mathbf{a}}{| \mathbf{a} |} \wedge \frac{\mathbf{b}^{\bot
  \mathbf{a}}}{| \mathbf{b}^{\bot \mathbf{a}} |} = \frac{\mathbf{a}}{|
  \mathbf{a} |} \frac{\mathbf{b}^{\bot \mathbf{a}}}{| \mathbf{b}^{\bot
  \mathbf{a}} |}\\
  \frac{\mathbf{a}}{| \mathbf{a} |} \frac{\mathbf{b}^{\bot \mathbf{a}}}{|
  \mathbf{b}^{\bot \mathbf{a}} |} \frac{\mathbf{b}^{\bot \mathbf{a}}}{|
  \mathbf{b}^{\bot \mathbf{a}} |} & = & \frac{\mathbf{a}}{| \mathbf{a} |}
  \frac{| \mathbf{b}^{\bot \mathbf{a}} |^{2}}{| \mathbf{b}^{\bot \mathbf{a}}
  |^{2}} = \frac{\mathbf{a}}{| \mathbf{a} |} .\end{array}

For unit vectors, the direct expression of this rotation is ( \mathbf{a}\mathbf{b} ) \mathbf{b}= ( \mathbf{a}/\mathbf{b} ) \mathbf{b}=\mathbf{a}. We also could again agree to reverse angles and then make \mathbf{N}= \frac{\mathbf{b} \wedge \mathbf{a}}{| \mathbf{b} \wedge \mathbf{a} |} as quadrantal versor from \mathbf{a} towards \mathbf{b} to match the Euclidean biradial \mathbf{b}/\mathbf{a} where the angle \theta would be positive from \mathbf{a} to \mathbf{b}. The choice of orientation, to measure an angle positive or negative from \mathbf{a} to \mathbf{b} or \mathbf{b} to \mathbf{a}, is the sign on the angle \theta used in the sine function \sin( \theta ) =- \sin( - \theta ) of the outer product and this is why \mathbf{b} \wedge \mathbf{a}=-\mathbf{a} \wedge \mathbf{b} holds in general. The choice of orientation could also be viewed as a choice between axis or inverse axis, or between angle or reverse angle.

When the angle \theta =0 between vectors \mathbf{a} and \mathbf{b}, the product or sum \mathbf{a}\mathbf{b}=\mathbf{a} ( t\mathbf{a} ) =\mathbf{a} \cdot \mathbf{b}+\mathbf{a} \wedge \mathbf{b} reduces to just the positive scalar \mathbf{a} \cdot \mathbf{b}= | \mathbf{a} |   | \mathbf{b} | which is the expected product of parallel vectors; in quaternions, this product would be negative since quaternion vectors square negative and quaternions treat vectors as imaginary directed quantities in a space that is spanned by three imaginary units. Here, we have a real Euclidean space spanned by real units.

When \theta = \pi /2, the sum reduces to | \mathbf{a} |   | \mathbf{b} |  \mathbf{N} which is a directed-area parallelogram of magnitude | \mathbf{a} |   | \mathbf{b} | in the plane of unit bivector \mathbf{N}, and so the product represents the expected geometrical object.

For other values of \theta, the result is a multivector value where the scalar part represents the projection of the multivector onto a scalar axis, and the bivector part represents the projection of the multivector onto a bivector axis.

Since \mathbf{N} is a unit bivector, it squares to -1 in the same way as a quaternion unit vector; and therefore, the sum of the inner and outer products of two Euclidean vectors has the form and characteristics of an ordinary complex number or a quaternion. The magnitude of this number is found by taking the square root of the product of conjugates, by which we can see that the magnitude really is | \mathbf{a} |   | \mathbf{b} |. Also by similarity to complex numbers or quaternions, we know this must be the product \mathbf{a}\mathbf{b} from which the magnitudes and angle are taken. Yet, the Euclidean vectors \mathbf{a} and \mathbf{b} themselves do not have characteristics of ordinary complex numbers. Since \mathbf{a} and \mathbf{b} square positive, they do have the characteristics of split-complex numbers or hyperbolic numbers.

The multivector \mathbf{b}\mathbf{a} can be written as

\begin{array}{rcl}
  \mathbf{b}\mathbf{a} & = & \mathbf{b} ( \mathbf{a}^{||\mathbf{b}}
  +\mathbf{a}^{\bot \mathbf{b}} ) =\mathbf{b} \cdot \mathbf{a}+\mathbf{b}
  \wedge \mathbf{a}\\
  & = & \mathbf{b} ( \mathbf{a}\mathbf{b}/\mathbf{b} )\\
  & = & \mathbf{b} ( \mathbf{a} \cdot \mathbf{b} ) \mathbf{b}^{-1}
  +\mathbf{b} ( \mathbf{a} \wedge \mathbf{b} ) \mathbf{b}^{-1}\\
  & = & \mathbf{a} \cdot \mathbf{b}+ ( \mathbf{a}^{||\mathbf{b}}
  -\mathbf{a}^{\bot \mathbf{b}} ) \wedge \mathbf{b}\\
  & = & \mathbf{a} \cdot \mathbf{b}-\mathbf{a}^{\bot \mathbf{b}} \wedge
  \mathbf{b}\\
  & = & \mathbf{a} \cdot \mathbf{b}-\mathbf{a} \wedge \mathbf{b}\\
  \mathbf{b} \cdot \mathbf{a} & = & \mathbf{b}\mathbf{a}^{||\mathbf{b}}
  =\mathbf{a} \cdot \mathbf{b}\\
  \mathbf{b} \wedge \mathbf{a} & = & \mathbf{b}\mathbf{a}^{\bot \mathbf{b}}
  =-\mathbf{a} \wedge \mathbf{b}\end{array}

which shows more properties of the algebra, and is the reflection of the scalar and bivector components of the product \mathbf{a}\mathbf{b} in the vector \mathbf{b}. Each vector in the 2-blade \mathbf{a} \wedge \mathbf{b} is rotated or reflected individually, and that is the general procedure to rotate blades.

The reverse of a blade

The outer product, that constructed the bivector \mathbf{N}, has the characteristic of constructing unit blades that square +1 or -1 in a certain pattern. In general, it can be shown by a sequence of anti-commutative identities, that any blade and its reverse are related by

\begin{array}{rcl}
  \mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{k} \wedge \cdots \wedge
  \mathbf{a}_{n} & = & ( -1 )^{n ( n-1 ) /2} \mathbf{a}_{n} \wedge \cdots
  \wedge \mathbf{a}_{k} \wedge \cdots \wedge \mathbf{a}_{1}\end{array}

where n is the grade of the blade. The square of any n-blade has the sign given by ( -1 )^{n ( n-1 ) /2}. For n=0,1,2,3,4,5 \ldots, the pattern looks like +1,+1,-1,-1,+1,+1, \ldots so that at n=2 for \mathbf{N}, then \mathbf{N}^{2} =-1.

The value n ( n-1 ) /2 can represent a triangular area that is equal to the total number of bivector reverses. For example, to reverse the \mathbf{a}_{k} for n=6, it takes 5 bivector reverses to move \mathbf{a}_{1} to the right side

\begin{array}{rcl}
  \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} \wedge \mathbf{a}_{5} \wedge \mathbf{a}_{6} & = & ( -1 )^{1}
  \mathbf{a}_{2} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} \wedge \mathbf{a}_{5} \wedge \mathbf{a}_{6}\\
  & = & ( -1 )^{2} \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge \mathbf{a}_{1}
  \wedge \mathbf{a}_{4} \wedge \mathbf{a}_{5} \wedge \mathbf{a}_{6}\\
  & = & ( -1 )^{3} \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge \mathbf{a}_{4}
  \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{5} \wedge \mathbf{a}_{6}\\
  & = & ( -1 )^{4} \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge \mathbf{a}_{4}
  \wedge \mathbf{a}_{5} \wedge \mathbf{a}_{1} \wedge \mathbf{a}_{6}\\
  & = & ( -1 )^{5} \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge \mathbf{a}_{4}
  \wedge \mathbf{a}_{5} \wedge \mathbf{a}_{6} \wedge \mathbf{a}_{1}\end{array}

and it takes 4,3,2,1 bivector reverses, respectively, to move \mathbf{a}_{2} ,\mathbf{a}_{3} ,\mathbf{a}_{4} ,\mathbf{a}_{5} into their reversed spots. The last vector \mathbf{a}_{6} takes zero reverses. A triangle of these bivector reverse counts can be constructed as the triangle of numbers

Triangular number pyramid.
Triangular number pyramid.
\begin{array}{rcl}
  & \begin{array}{ccccccccccccc}
    5 &  &  &  &  &  &  & \hat{1} &  &  &  &  & \\
    4 &  &  &  &  &  & 1 &  & 2 &  &  &  & \\
    3 &  &  &  &  & 1 &  & 2 &  & 3 &  &  & \\
    2 &  &  &  & 1 &  & 2 &  & 3 &  & 4 &  & \\
    1 &  & \_ & 1 & \_ & 2 & \_ & 3 & \_ & 4 & \_ & 5 & \_\\
    0 &  & 1 &  & 2 &  & 3 &  & 4 &  & 5 &  & 6
  \end{array} & \end{array}

that has a total areal count of 1/2 the base 6 times the height ( 6-1 )

\begin{array}{rcl}
  n ( n-1 ) /2 & = & 6 ( 6-1 ) /2\\
  & = & 15\\
  & = & 5+4+3+2+1\\
  & = & [ n-1 ] ( [ n-1 ] +1 ) /2\end{array}

which is the triangular number (sum of integers) formula for [ n-1 ] =5.

The sum of integers is proved algebraically by adding the numbers counting up, plus adding the numbers counting down as follows.

\begin{array}{rcl}
  &  & ( 1+2+3+ \cdots +n ) +\\
  &  & ( n+ ( n-1 ) + ( n-2 ) + \cdots +1 )\end{array}
\begin{array}{rcl}
  & = & 2 \sum^{n}_{i=1} i= \sum^{n} ( n+1 ) =n ( n+1 )\end{array}
\begin{array}{rcl}
  \sum^{n}_{i=1} i & = & \frac{n ( n+1 )}{2}\end{array}

The square of a blade

In geometric algebra, squaring a blade is an important algebraic operation. It extends the concept of squaring a vector to more dimensions or to higher grades of vectors.

Consider vectors written in component form as

\begin{array}{rcl}
  \mathbf{a}_{k} & = & a_{k1} \mathbf{e}_{1} +a_{k2} \mathbf{e}_{2} + \cdots
  +a_{k k} \mathbf{e}_{k} + \cdots +a_{k n} \mathbf{e}_{n} .\end{array}

Using the formula for the reverse of a n-blade

\begin{array}{rcl}
  \mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{k} \wedge \cdots \wedge
  \mathbf{a}_{n} & = & ( -1 )^{n ( n-1 ) /2} \mathbf{a}_{n} \wedge \cdots
  \wedge \mathbf{a}_{k} \wedge \cdots \wedge \mathbf{a}_{1}\end{array}

we can write the square of a n-blade as

\begin{array}{rcl}
  ( \mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{k} \wedge \cdots \wedge
  \mathbf{a}_{n} )^{2} & = & \end{array}
\begin{array}{rcl}
  & ( -1 )^{n ( n-1 ) /2} ( \mathbf{a}_{n} \wedge \cdots \wedge
  \mathbf{a}_{k} \wedge \cdots \wedge \mathbf{a}_{1} ) \cdot ( \mathbf{a}_{1}
  \wedge \cdots \wedge \mathbf{a}_{k} \wedge \cdots \wedge \mathbf{a}_{n} ) .
  & \end{array}

Using the recursive formula for the inner product of blades, we can expand this inner product as

\begin{array}{rcl}
  & ( -1 )^{n ( n-1 ) /2} ( \mathbf{a}_{n} \cdot \ldots \cdot (
  \mathbf{a}_{k} \cdot \ldots \cdot ( \mathbf{a}_{1} \cdot ( \mathbf{a}_{1}
  \wedge \cdots \wedge \mathbf{a}_{k} \wedge \cdots \wedge \mathbf{a}_{n} ) )
  \cdots ) \cdots ) & \end{array}
\begin{array}{rcl}
  & = & ( -1 )^{n ( n-1 ) /2} \left|\begin{array}{ccccc}
    \mathbf{a}_{1} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{1} \cdot
    \mathbf{a}_{k} & \cdots & \mathbf{a}_{1} \cdot \mathbf{a}_{n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    \mathbf{a}_{k} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{k} \cdot
    \mathbf{a}_{k} & \cdots & \mathbf{a}_{k} \cdot \mathbf{a}_{n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    \mathbf{a}_{n} \cdot \mathbf{a}_{1} & \cdots & \mathbf{a}_{n} \cdot
    \mathbf{a}_{k} & \cdots & \mathbf{a}_{n} \cdot \mathbf{a}_{n}
  \end{array}\right|\\
  & = & ( -1 )^{n ( n-1 ) /2} \left|\begin{array}{c}
    \mathbf{a}_{1}\\
    \vdots\\
    \mathbf{a}_{k}\\
    \vdots\\
    \mathbf{a}_{n}
  \end{array}\right| \left|\begin{array}{ccccc}
    \mathbf{a}_{1} & \cdots & \mathbf{a}_{k} & \ldots & \mathbf{a}_{n}
  \end{array}\right|\\
  & = & ( -1 )^{n ( n-1 ) /2} \left|\begin{array}{ccccc}
    a_{11} & \cdots & a_{1k} & \cdots & a_{1n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{k1} & \cdots & a_{k k} & \cdots & a_{k n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{n1} & \cdots & a_{n k} & \cdots & a_{n n}
  \end{array}\right|^{2} .\end{array}

To demonstrate this result for n=3, let’s take

\begin{array}{rcl}
  ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} )^{2} & = & (
  -1 )^{3 ( 3-1 ) /2} ( \mathbf{a}_{3} \wedge \mathbf{a}_{2} \wedge
  \mathbf{a}_{1} ) \cdot ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge
  \mathbf{a}_{3} )\end{array}
\begin{array}{rcl}
  & = & ( -1 ) ( \mathbf{a}_{3} \wedge \mathbf{a}_{2} ) \cdot ( (
  \mathbf{a}_{1} \cdot \mathbf{a}_{1} ) \mathbf{a}_{2} \wedge \mathbf{a}_{3} -
  ( \mathbf{a}_{1} \cdot \mathbf{a}_{2} ) \mathbf{a}_{1} \wedge \mathbf{a}_{3}
  + ( \mathbf{a}_{1} \cdot \mathbf{a}_{3} ) \mathbf{a}_{1} \wedge
  \mathbf{a}_{2} )\\
  & = & ( -1 ) ( \mathbf{a}_{3} ) \cdot \left( \begin{array}{ll}
    ( \mathbf{a}_{1} \cdot \mathbf{a}_{1} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{2} ) \mathbf{a}_{3} - ( \mathbf{a}_{1} \cdot \mathbf{a}_{1} )
    ( \mathbf{a}_{2} \cdot \mathbf{a}_{3} ) \mathbf{a}_{2} & -\\
    ( ( \mathbf{a}_{1} \cdot \mathbf{a}_{2} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{1} ) \mathbf{a}_{3} - ( \mathbf{a}_{1} \cdot \mathbf{a}_{2} )
    ( \mathbf{a}_{2} \cdot \mathbf{a}_{3} ) \mathbf{a}_{1} ) & +\\
    ( \mathbf{a}_{1} \cdot \mathbf{a}_{3} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{1} ) \mathbf{a}_{2} - ( \mathbf{a}_{1} \cdot \mathbf{a}_{3} )
    ( \mathbf{a}_{2} \cdot \mathbf{a}_{2} ) \mathbf{a}_{1} & 
  \end{array} \right)\\
  & = & ( -1 ) \left( \begin{array}{ll}
    ( \mathbf{a}_{1} \cdot \mathbf{a}_{1} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{2} ) ( \mathbf{a}_{3} \cdot \mathbf{a}_{3} ) - (
    \mathbf{a}_{1} \cdot \mathbf{a}_{1} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{3} ) ( \mathbf{a}_{3} \cdot \mathbf{a}_{2} ) & -\\
    ( \mathbf{a}_{1} \cdot \mathbf{a}_{2} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{1} ) ( \mathbf{a}_{3} \cdot \mathbf{a}_{3} ) + (
    \mathbf{a}_{1} \cdot \mathbf{a}_{2} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{3} ) ( \mathbf{a}_{3} \cdot \mathbf{a}_{1} ) & +\\
    ( \mathbf{a}_{1} \cdot \mathbf{a}_{3} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{1} ) ( \mathbf{a}_{3} \cdot \mathbf{a}_{2} ) - (
    \mathbf{a}_{1} \cdot \mathbf{a}_{3} ) ( \mathbf{a}_{2} \cdot
    \mathbf{a}_{2} ) ( \mathbf{a}_{3} \cdot \mathbf{a}_{1} ) & 
  \end{array} \right)\\
  & = & ( -1 ) \left|\begin{array}{ccc}
    \mathbf{a}_{1} \cdot \mathbf{a}_{1} & \mathbf{a}_{1} \cdot \mathbf{a}_{2}
    & \mathbf{a}_{1} \cdot \mathbf{a}_{3}\\
    \mathbf{a}_{2} \cdot \mathbf{a}_{1} & \mathbf{a}_{2} \cdot \mathbf{a}_{2}
    & \mathbf{a}_{2} \cdot \mathbf{a}_{3}\\
    \mathbf{a}_{3} \cdot \mathbf{a}_{1} & \mathbf{a}_{3} \cdot \mathbf{a}_{2}
    & \mathbf{a}_{3} \cdot \mathbf{a}_{3}
  \end{array}\right|\end{array}

and factoring this determinant gives

\begin{array}{rcl}
  & = & ( -1 ) \left|\begin{array}{c}
    \mathbf{a}_{1}\\
    \mathbf{a}_{2}\\
    \mathbf{a}_{3}
  \end{array}\right| \left|\begin{array}{ccc}
    \mathbf{a}_{1} & \mathbf{a}_{2} & \mathbf{a}_{3}
  \end{array}\right|\\
  & = & ( -1 ) \left|\begin{array}{ccc}
    a_{11} & a_{12} & a_{13}\\
    a_{21} & a_{22} & a_{23}\\
    a_{31} & a_{32} & a_{33}
  \end{array}\right| \left|\begin{array}{ccc}
    a_{11} & a_{21} & a_{31}\\
    a_{12} & a_{22} & a_{32}\\
    a_{13} & a_{23} & a_{33}
  \end{array}\right|\\
  & = & ( -1 ) \left|\begin{array}{ccc}
    a_{11} & a_{12} & a_{13}\\
    a_{21} & a_{22} & a_{23}\\
    a_{31} & a_{32} & a_{33}
  \end{array}\right|^{2} .\end{array}

The square of a n-blade has a sign given by ( -1 )^{n ( n-1 ) /2}, and has a positive magnitude, or absolute value, given by the square of the determinant of the scalar coordinates.

The determinant of the scalar coordinates

\begin{array}{rcl}
  & \left|\begin{array}{ccccc}
    a_{11} & \cdots & a_{1k} & \cdots & a_{1n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{k1} & \cdots & a_{k k} & \cdots & a_{k n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{n1} & \cdots & a_{n k} & \cdots & a_{n n}
  \end{array}\right| & \end{array}

is the signed, or oriented, n-volume of the directed n-parallelotope framed by the n vectors. Multiplying this determinant by ( 1/n! ) gives the signed n-volume of the directed n-simplex framed by the n vectors.

It can also be seen that the product of two parallel n-blades, on the same unit n-blade or in the same n-space, is the scalar product

\begin{array}{rcl}
  & ( \mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{k} \wedge \cdots \wedge
  \mathbf{a}_{n} ) \cdot ( \mathbf{b}_{1} \wedge \cdots \wedge \mathbf{b}_{k}
  \wedge \cdots \wedge \mathbf{b}_{n} ) & \end{array}
\begin{array}{rcl}
  & = & ( -1 )^{n ( n-1 ) /2} ( \mathbf{a}_{n} \wedge \cdots \wedge
  \mathbf{a}_{k} \wedge \cdots \wedge \mathbf{a}_{1} ) \cdot ( \mathbf{b}_{1}
  \wedge \cdots \wedge \mathbf{b}_{k} \wedge \cdots \wedge \mathbf{b}_{n} )\\
  & = & ( -1 )^{n ( n-1 ) /2} \left|\begin{array}{ccccc}
    \mathbf{a}_{1} \cdot \mathbf{b}_{1} & \cdots & \mathbf{a}_{1} \cdot
    \mathbf{b}_{k} & \cdots & \mathbf{a}_{1} \cdot \mathbf{b}_{n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    \mathbf{a}_{k} \cdot \mathbf{b}_{1} & \cdots & \mathbf{a}_{k} \cdot
    \mathbf{b}_{k} & \cdots & \mathbf{a}_{k} \cdot \mathbf{b}_{n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    \mathbf{a}_{n} \cdot \mathbf{b}_{1} & \cdots & \mathbf{a}_{n} \cdot
    \mathbf{b}_{k} & \cdots & \mathbf{a}_{n} \cdot \mathbf{b}_{n}
  \end{array}\right|\\
  & = & ( -1 )^{n ( n-1 ) /2} \left|\begin{array}{ccccc}
    a_{11} & \cdots & a_{1k} & \cdots & a_{1n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{k1} & \cdots & a_{k k} & \cdots & a_{k n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{n1} & \cdots & a_{n k} & \cdots & a_{n n}
  \end{array}\right| \left|\begin{array}{ccccc}
    b_{11} & \cdots & b_{k1} & \cdots & b_{n1}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    b_{1k} & \cdots & b_{k k} & \cdots & b_{n k}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    b_{1n} & \cdots & b_{k n} & \cdots & b_{n n}
  \end{array}\right|\\
  & = & \left|\begin{array}{ccccc}
    a_{n1} & \cdots & a_{n k} & \cdots & a_{n n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{k1} & \cdots & a_{k k} & \cdots & a_{k n}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{11} & \cdots & a_{1 k} & \cdots & a_{1 n}
  \end{array}\right| \left|\begin{array}{ccccc}
    b_{11} & \cdots & b_{k1} & \cdots & b_{n1}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    b_{1k} & \cdots & b_{k k} & \cdots & b_{n k}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    b_{1n} & \cdots & b_{k n} & \cdots & b_{n n}
  \end{array}\right|\\
  & = & \left|\begin{array}{ccccc}
    a_{n1} & \cdots & a_{k1} & \cdots & a_{11}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{n k} & \cdots & a_{k k} & \cdots & a_{1k}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    a_{n n} & \cdots & a_{k n} & \cdots & a_{1 n}
  \end{array}\right| \left|\begin{array}{ccccc}
    b_{11} & \cdots & b_{k1} & \cdots & b_{n1}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    b_{1k} & \cdots & b_{k k} & \cdots & b_{n k}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    b_{1n} & \cdots & b_{k n} & \cdots & b_{n n}
  \end{array}\right|\\
  & = & \left|\begin{array}{ccccc}
    \mathbf{a}_{n} & \cdots & \mathbf{a}_{k} & \cdots & \mathbf{a}_{1}
  \end{array}\right| \left|\begin{array}{ccccc}
    \mathbf{b}_{1} & \cdots & \mathbf{b}_{k} & \cdots & \mathbf{b}_{n}
  \end{array}\right| .\end{array}

The sign factor is eliminated by reversing rows in the first determinant.

More generally, the inner product of two l-blades \mathbf{A}_{l} and \mathbf{B}_{l} of vectors in a d-dimensional base space or d-space spanned by orthonormal units \mathbf{e}_{1} , \ldots ,\mathbf{e}_{d} is the determinant

\begin{array}{rcl}
  \mathbf{A}_{l} & = & \mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{k}
  \wedge \cdots \wedge \mathbf{a}_{l}\\
  \mathbf{B}_{l} & = & \mathbf{b}_{1} \wedge \cdots \wedge \mathbf{b}_{k}
  \wedge \cdots \wedge \mathbf{b}_{l}\\
  \mathbf{a}_{k} & = & a_{k1} \mathbf{e}_{1} + \cdots +a_{k d}
  \mathbf{e}_{d}\\
  \mathbf{A}_{l} \cdot \mathbf{B}_{l} & = & ( -1 )^{l ( l-1 ) /2}
  \left|\begin{array}{ccccc}
    \mathbf{a}_{1} \cdot \mathbf{b}_{1} & \cdots & \mathbf{a}_{1} \cdot
    \mathbf{b}_{k} & \cdots & \mathbf{a}_{1} \cdot \mathbf{b}_{l}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    \mathbf{a}_{k} \cdot \mathbf{b}_{1} & \cdots & \mathbf{a}_{k} \cdot
    \mathbf{b}_{k} & \cdots & \mathbf{a}_{k} \cdot \mathbf{b}_{l}\\
    \vdots & \ddots & \vdots & \ddots & \vdots\\
    \mathbf{a}_{l} \cdot \mathbf{b}_{1} & \cdots & \mathbf{a}_{l} \cdot
    \mathbf{b}_{k} & \cdots & \mathbf{a}_{l} \cdot \mathbf{b}_{l}
  \end{array}\right| .\end{array}

If l=d then this determinant can be factored into the product of two determinants, but otherwise it cannot since the factored matrices would be l \times d and d \times l which are not square and have no determinants.

The free software SymPy, for symbolic mathematics using python, includes a Geometric Algebra Module and interactive calculator console isympy. The isympy console can be used demonstrate these results. A simple example of console interaction follows to compute the product of parallel 3-blades

\begin{array}{rcl}
  \mathbf{a}_{1} & = & 3\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}\\
  \mathbf{a}_{2} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}\\
  \mathbf{a}_{3} & = & 9\mathbf{e}_{1} +6\mathbf{e}_{2} +9\mathbf{e}_{3}\\
  \mathbf{b}_{1} & = & 9\mathbf{e}_{1} +2\mathbf{e}_{2} +3\mathbf{e}_{3}\\
  \mathbf{b}_{2} & = & 6\mathbf{e}_{1} +5\mathbf{e}_{2} +8\mathbf{e}_{3}\\
  \mathbf{b}_{3} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +7\mathbf{e}_{3}\end{array}
\begin{array}{rcl}
  & ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} ) \cdot (
  \mathbf{b}_{1} \wedge \mathbf{b}_{2} \wedge \mathbf{b}_{3} ) . & \end{array}
$isympy
>>> from sympy.galgebra.ga import *
>>> (e1,e2,e3) = MV.setup('e*1|2|3',metric='[1,1,1]')
>>> (a1,a2,a3) = symbols('a1 a2 a3')
>>> (b1,b2,b3) = symbols('b1 b2 b3')
>>> a1 = 3*e1 + 4*e2 + 5*e3
>>> a2 = 2*e1 + 4*e2 + 5*e3
>>> a3 = 9*e1 + 6*e2 + 9*e3
>>> b1 = 9*e1 + 2*e2 + 3*e3
>>> b2 = 6*e1 + 5*e2 + 8*e3
>>> b3 = 2*e1 + 4*e2 + 7*e3
>>> (a1^a2^a3)|(b1^b2^b3)
-102
>>> (A,B) = symbols('A B')
>>> A = Matrix([[9,6,9],[2,4,5],[3,4,5]])
>>> B = Matrix([[9,2,3],[6,5,8],[2,4,7]])
>>> A.det() * B.det()
-102

The geometric product ab of Euclidean vectors

For Euclidean vectors \mathbf{a} and \mathbf{b}, we have the products

\begin{array}{rcl}
  \mathbf{a}\mathbf{b} & = & ( a_{x} \mathbf{e}_{1} +a_{y} \mathbf{e}_{2}
  +a_{z} \mathbf{e}_{3} ) ( b_{x} \mathbf{e}_{1} +b_{y} \mathbf{e}_{2} +b_{z}
  \mathbf{e}_{3} )\\
  & = & a_{x} b_{x} \mathbf{e}^{2}_{1} +a_{y} b_{y} \mathbf{e}^{2}_{2} +a_{z}
  b_{z} \mathbf{e}^{2}_{3} +\\
  &  & a_{x} b_{y} \mathbf{e}_{1} \mathbf{e}_{2} +a_{x} b_{z} \mathbf{e}_{1}
  \mathbf{e}_{3} +\\
  &  & a_{y} b_{x} \mathbf{e}_{2} \mathbf{e}_{1} +a_{y} b_{z} \mathbf{e}_{2}
  \mathbf{e}_{3} +\\
  &  & a_{z} b_{x} \mathbf{e}_{3} \mathbf{e}_{1} +a_{z} b_{y} \mathbf{e}_{3}
  \mathbf{e}_{2}\\
  & = & a_{x} b_{x} +a_{y} b_{y} +a_{z} b_{z} +\\
  &  & ( a_{z} b_{y} -a_{y} b_{z} ) \mathbf{e}_{3} \mathbf{e}_{2} +\\
  &  & ( a_{x} b_{z} -a_{z} b_{x} ) \mathbf{e}_{1} \mathbf{e}_{3} +\\
  &  & ( a_{y} b_{x} -a_{x} b_{y} ) \mathbf{e}_{2} \mathbf{e}_{1} +\\
  & = & \mathbf{a} \cdot \mathbf{b}+ \left|\begin{array}{ccc}
    \mathbf{E}_{\mathbf{i}} & \mathbf{E}_{\mathbf{j}} &
    \mathbf{E}_{\mathbf{k}}\\
    b_{x} & b_{y} & b_{z}\\
    a_{x} & a_{y} & a_{z}
  \end{array}\right|\\
  & = & \mathbf{a} \cdot \mathbf{b}+ ( b_{x} \mathbf{E}_{\mathbf{i}} +b_{y}
  \mathbf{E}_{\mathbf{j}} +b_{z} \mathbf{E}_{\mathbf{k}} ) \times ( a_{x}
  \mathbf{E}_{\mathbf{i}} +a_{y} \mathbf{E}_{\mathbf{j}} +a_{z}
  \mathbf{E}_{\mathbf{k}} )\\
  & = & \mathbf{a} \cdot \mathbf{b}- ( a_{x} \mathbf{E}_{\mathbf{i}} +a_{y}
  \mathbf{E}_{\mathbf{j}} +a_{z} \mathbf{E}_{\mathbf{k}} ) \times ( b_{x}
  \mathbf{E}_{\mathbf{i}} +b_{y} \mathbf{E}_{\mathbf{j}} +b_{z}
  \mathbf{E}_{\mathbf{k}} )\\
  & = & \mathbf{a} \cdot \mathbf{b}- ( \mathbf{a}/\mathbf{I} ) \times (
  \mathbf{b}/\mathbf{I} ) = | \mathbf{a} |   | \mathbf{b} | \left[  
  \mathrm{cos} ( \theta ) - \sin( \theta )  \mathbf{N} \right]\\
  & = & | \mathbf{a} |   | \mathbf{b} |  e^{- \theta \mathbf{N}} = \mathrm{K}
  ( \mathbf{b}\mathbf{a} ) =\mathbf{a} \frac{\mathbf{b}^{2}}{\mathbf{b}} = |
  \mathbf{b} |^{2} \mathbf{a}/\mathbf{b}\\
  \mathbf{b}\mathbf{a} & = & \mathbf{b} \frac{\mathbf{a}^{2}}{\mathbf{a}} = |
  \mathbf{a} |^{2} \mathbf{b}/\mathbf{a}= | \mathbf{a} |   | \mathbf{b} | 
  e^{\theta \mathbf{N}} = \mathrm{K} ( \mathbf{a}\mathbf{b} )\end{array}

which are called the geometric product of vectors. The notation and concept of the quaternion conjugate \mathrm{K} operation can be usefully adapted to the Euclidean biradials, such that where there was a pure quaternion unit vector part \mathbf{n} to take negative (as axis or angle) there is now a similar unit bivector part \mathbf{N}. The unit bivector \mathbf{N} is now being taken as quadrantal versor from \mathbf{a} toward \mathbf{b}, and angle \theta is positive from \mathbf{a} toward \mathbf{b}.

The geometric product can also be shown to hold for any product of a vector and multivector, such as \mathbf{a}B=\mathbf{a} \cdot B+\mathbf{a} \wedge B and A\mathbf{b}=A \cdot \mathbf{b}+A \wedge \mathbf{b}, although the evaluation of these inner and outer products of a vector and multivector require usage of the formulas for expansion of inner and outer products. The geometric product usually has no special symbol, and the product is invoked, as shown, by spaces and juxtaposition of the values to be multiplied.

The quaternion product PQ of even-grade multivectors

The geometric product is found to be the same as the quaternion product when multiplying values that isomorphically represent quaternions in \mathcal{G}_{3}. The quaternion representation and multiplications are

\begin{array}{rcl}
  \mathbf{q} & = & q_{x} \mathbf{e}_{1} +q_{y} \mathbf{e}_{2} +q_{z}
  \mathbf{e}_{3}\\
  \mathbf{p} & = & p_{x} \mathbf{e}_{1} +p_{y} \mathbf{e}_{2} +p_{z}
  \mathbf{e}_{3}\\
  \mathbf{Q} & = & \mathbf{q}/\mathbf{I}= ( q_{x} \mathbf{E}_{\mathbf{i}}
  +q_{y} \mathbf{E}_{\mathbf{j}} +q_{z} \mathbf{E}_{\mathbf{k}} )\\
  \mathbf{P} & = & \mathbf{p}/\mathbf{I}= ( p_{x} \mathbf{E}_{\mathbf{i}}
  +p_{y} \mathbf{E}_{\mathbf{j}} +p_{z} \mathbf{E}_{\mathbf{k}} )\\
  Q & = & q_{w} +\mathbf{Q}\\
  P & = & p_{w} +\mathbf{P}\\
  \mathbf{p} \cdot \mathbf{q} & = & ( \mathbf{P}\mathbf{I} ) \cdot (
  \mathbf{Q}\mathbf{I} )\\
  & = & \frac{1}{2} (
  \mathbf{P}\mathbf{I}\mathbf{Q}\mathbf{I}+\mathbf{Q}\mathbf{I}\mathbf{P}\mathbf{I}
  ) = \frac{1}{2} ( \mathbf{I}^{2} \mathbf{P}\mathbf{Q}+\mathbf{I}^{2}
  \mathbf{Q}\mathbf{P} )\\
  & = & - \frac{1}{2} ( \mathbf{P}\mathbf{Q}+\mathbf{Q}\mathbf{P} )
  =-\mathbf{P} \cdot \mathbf{Q}\\
  \mathbf{p} \times \mathbf{q} & = & ( \mathbf{p} \wedge \mathbf{q} )
  /\mathbf{I}=- ( \mathbf{p} \wedge \mathbf{q} ) \mathbf{I}\\
  & = & - \frac{1}{2} ( \mathbf{p}\mathbf{q}-\mathbf{q}\mathbf{p} )
  \mathbf{I}=- \frac{1}{2} (
  \mathbf{P}\mathbf{I}\mathbf{Q}\mathbf{I}-\mathbf{Q}\mathbf{I}\mathbf{P}\mathbf{I}
  ) \mathbf{I}\\
  & = & \frac{1}{2} ( \mathbf{P}\mathbf{Q}-\mathbf{Q}\mathbf{P} ) \mathbf{I}=
  ( \mathbf{P} \times \mathbf{Q} ) \mathbf{I}\\
  \mathbf{P} \cdot \mathbf{Q} & = & \frac{1}{2} (
  \mathbf{P}\mathbf{Q}+\mathbf{Q}\mathbf{P} )\\
  \mathbf{P} \times \mathbf{Q} & = & \frac{1}{2} (
  \mathbf{P}\mathbf{Q}-\mathbf{Q}\mathbf{P} )\\
  \mathbf{P} \wedge \mathbf{Q} & = & 0\\
  \mathbf{P}\mathbf{Q} & = & \frac{1}{2} (
  \mathbf{P}\mathbf{Q}+\mathbf{Q}\mathbf{P} ) + \frac{1}{2} (
  \mathbf{P}\mathbf{Q}-\mathbf{Q}\mathbf{P} ) =\mathbf{P} \cdot
  \mathbf{Q}+\mathbf{P} \times \mathbf{Q}\\
  P Q & = & p_{w} q_{w} +p_{w} \mathbf{Q}+q_{w}
  \mathbf{P}+\mathbf{P}\mathbf{Q}\\
  & = & p_{w} q_{w} +p_{w} \mathbf{Q}+q_{w} \mathbf{P}+\mathbf{P} \cdot
  \mathbf{Q}+\mathbf{P} \times \mathbf{Q}\\
  & = & ( p_{w} q_{w} +\mathbf{P} \cdot \mathbf{Q} ) + ( p_{w}
  \mathbf{Q}+q_{w} \mathbf{P}+\mathbf{P} \times \mathbf{Q} )\\
  & = & \langle P Q \rangle_{0} + \langle P Q \rangle_{2}\end{array}

where the pseudoscalar \mathbf{I} multiplies commutatively (like a scalar) with all other values, and \mathbf{I}^{2} =-1, causing some changes in signs.

Dual and undual to convert to and from quaternions

Taking the dual (dividing by \mathbf{I} on the right) of the Euclidean vector \mathbf{p} as \mathbf{p}/\mathbf{I}=\mathbf{P} produces its pure quaternion vector representation \mathbf{P}. Taking the undual (multiplying by \mathbf{I} on the right) of the bivector \mathbf{P} as \mathbf{P}\mathbf{I}=\mathbf{p} reproduces the Euclidean vector represented by the pure quaternion vector \mathbf{P}.

The inner product of quaternionic bivectors has negative sign

In the equation that represents quaternion multiplication P Q, the sign on \mathbf{P} \cdot \mathbf{Q} is positive, making the equation appear different here than in the actual quaternion formula for quaternion multiplication p q that P Q represents. Therefore, \mathbf{P} \cdot \mathbf{Q}=-\mathbf{p} \cdot \mathbf{q}, and -\mathbf{P} \cdot \mathbf{Q} is the correct dot product of the undual vectors represented. This difference in sign is an issue to be aware of, but it is technically not a flaw or problem. The other values, and the values taken by grades \langle P Q \rangle_{0} and \langle P Q \rangle_{2}, are completely consistent with quaternion multiplication.

The commutator product

The product symbol ( \times ) is being used in two different contexts or meanings. In \mathbf{p} \times \mathbf{q} it is the Euclidean vector cross product and is the dual of the vector outer product. In \mathbf{P} \times \mathbf{Q} it is called the commutator product, and is representing a quaternion vector cross product which is then taken undual to be the Euclidean vector cross product result. The commutator product is defined generally, in terms of any multivectors, by the identity

\begin{array}{rcl}
  A \times B & = & \frac{1}{2} ( A B-B A ) =-B \times A\end{array}

where we see this form for \mathbf{P} \times \mathbf{Q}. For vectors, we happen to have \mathbf{a} \wedge \mathbf{b}= \frac{1}{2} ( \mathbf{a}\mathbf{b}-\mathbf{b}\mathbf{a} ) \neq \mathbf{a} \times \mathbf{b}. Writing \mathbf{a} \times \mathbf{b}= ( \mathbf{a} \wedge \mathbf{b} ) /\mathbf{I} is not the commutator product; it is the vector cross product or dual of the vector outer product. The meaning of the symbol (\times) is overloaded in the context of vectors. While outer products are associative ( \mathbf{a} \wedge \mathbf{b} ) \wedge \mathbf{c}=\mathbf{a} \wedge ( \mathbf{b} \wedge \mathbf{c} ), commutator products are non-associative and obey the Jacobi identity \mathbf{a} \times ( \mathbf{b} \times \mathbf{c} ) +\mathbf{b} \times ( \mathbf{c} \times \mathbf{a} ) +\mathbf{c} \times ( \mathbf{a} \times \mathbf{b} ) =0. This non-associative algebra of commutator products is mostly avoided, but there is a formula

\begin{array}{rcl}
  B A & = & B \cdot A+B \times A+B \wedge A\\
  B \cdot A+B \wedge A & = & \frac{1}{2} ( B A+A B )\end{array}

with the conditions B= \langle B \rangle_{2} and \langle A \rangle_{1} =0, that relates multiplying bivectors B and multivectors that contain no 1-vector components A. However, this conditional formula is of little interest for our needs.

We are only concerned with the representation of quaternions as bivectors, and the formulas of interest are the ones representing quotients and products of quaternion unit vectors, namely the biradials or versors for rotation from vector \mathbf{a} to \mathbf{b}

\begin{array}{rcl}
  | \mathbf{a} | = | \mathbf{b} | & = & \mathbf{a}^{2} =\mathbf{b}^{2} =1\\
  \mathbf{B} & = & \mathbf{b}/\mathbf{I}=-\mathbf{b}\mathbf{I}\\
  \mathbf{A} & = & \mathbf{a}/\mathbf{I}=-\mathbf{a}\mathbf{I}\\
  \mathbf{A} \times \mathbf{B} & = & \frac{1}{2} (
  \mathbf{A}\mathbf{B}-\mathbf{B}\mathbf{A} ) = \sin( \theta )
  \mathbf{N}\\
  \theta & = & \mathrm{cos}^{-1} ( \langle \mathbf{b}/\mathbf{a} \rangle_{0} )
  = \mathrm{cos}^{-1} ( \langle \mathbf{b}\mathbf{a} \rangle_{0} )\\
  \mathbf{B}/\mathbf{A}=-\mathbf{B}\mathbf{A}=\mathbf{b}\mathbf{a} & = &
  -\mathbf{A} \cdot \mathbf{B}+\mathbf{A} \times \mathbf{B}\\
  & = & \mathrm{cos} ( \theta ) + \sin( \theta )
  \mathbf{N}=e^{\theta \mathbf{N}}\\
  \mathbf{A}/\mathbf{B}=-\mathbf{A}\mathbf{B}=\mathbf{a}\mathbf{b} & = &
  -\mathbf{A} \cdot \mathbf{B}-\mathbf{A} \times \mathbf{B}\\
  & = & \mathrm{cos} ( - \theta ) + \sin( - \theta ) \mathbf{N}=e^{-
  \theta \mathbf{N}}\\
  \mathbf{A}\mathbf{B}=-\mathbf{A}/\mathbf{B}=-\mathbf{a}\mathbf{b} & = &
  \mathbf{A} \cdot \mathbf{B}+\mathbf{A} \times \mathbf{B}\\
  & = & \mathrm{cos} ( \pi - \theta ) + \sin( \pi - \theta )
  \mathbf{N}=e^{( \pi - \theta ) \mathbf{N}}\\
  \mathbf{B}\mathbf{A}=-\mathbf{B}/\mathbf{A}=-\mathbf{b}\mathbf{a} & = &
  \mathbf{A} \cdot \mathbf{B}-\mathbf{A} \times \mathbf{B}\\
  & = & \mathrm{cos} ( \theta - \pi ) + \sin( \theta - \pi )
  \mathbf{N}=e^{( \theta - \pi ) \mathbf{N}}\end{array}

where duals \mathbf{a}/\mathbf{I} and \mathbf{b}/\mathbf{I} take the Euclidean vectors into quaternion representations \mathbf{A} and \mathbf{B}. An undual \mathbf{X}\mathbf{I}=\mathbf{x} takes a quaternion vector \mathbf{X} representation back to a Euclidean vector \mathbf{x}.

Note well, that the inner product of two quaternion vectors represented as bivectors

\begin{array}{rcl}
  ( \mathbf{A}\mathbf{I} ) \cdot ( \mathbf{B}\mathbf{I} ) & = & \mathbf{a}
  \cdot \mathbf{b}\\
  & = & ( \mathbf{A}\mathbf{I} ) \cdot ( \mathbf{I}\mathbf{B} )\\
  & = & - ( \mathbf{A} \cdot \mathbf{B} )\\
  \mathbf{A} \cdot \mathbf{B} & = & - ( \mathbf{a} \cdot \mathbf{b} )\end{array}

is the negative of a dot product, or inner product of two Euclidean vectors. Two quaternion vectors multiply as

\begin{array}{rcl}
  \mathbf{a}\mathbf{b} & = & -\mathbf{a} \cdot \mathbf{b}+\mathbf{a} \times
  \mathbf{b}\end{array}

and two quaternion vectors represented as bivectors multiply as

\begin{array}{rcl}
  \mathbf{A}\mathbf{B} & = & \mathbf{A} \cdot \mathbf{B}+\mathbf{A} \times
  \mathbf{B}.\end{array}

This difference in sign, ( + ) on the inner product and ( - ) on dot product, must be paid careful attention.

Evaluating expressions in Clifford geometric algebra

The products of Clifford geometric algebra are somewhat complicated, and only careful usage of formulas and identities will give a correct evaluation. The geometric product is often written as the sum of the inner and outer products, but that formula only applies generally when at least one of the values being multiplied is a vector. Identities are used to change a product that doesn’t involve a vector into one that does, and these identities are used recursively until the product is expanded enough to complete the product evaluation using other identities for products of vectors and multivectors.

For example, the inner product \mathbf{e}_{1} \cdot ( \mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{3} ) =\mathbf{e}_{1} \cdot ( -\mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{3} ) evaluates almost as if \mathbf{e}_{2} \mathbf{e}_{3} are merely scalars once they are arranged on the right side by using the anti-commutative multiplication identity of perpendicular vectors; the result is -\mathbf{e}_{2} \mathbf{e}_{3}. The evaluation of the geometric product ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) ( \mathbf{e}_{1} \wedge \mathbf{e}_{3} ) might at first be thought to be ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) \cdot ( \mathbf{e}_{1} \wedge \mathbf{e}_{3} ) or ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) \wedge ( \mathbf{e}_{1} \wedge \mathbf{e}_{3} ), or even ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) \cdot ( \mathbf{e}_{1} \wedge \mathbf{e}_{3} ) + ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) \wedge ( \mathbf{e}_{1} \wedge \mathbf{e}_{3} ), but it is none of them since neither operand of this geometric product is a vector. The correct evaluation using a recursive expansion identity (see identities below) is

\begin{array}{rcl}
  ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) ( \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} ) & = & ( \mathbf{e}_{3} ) ( \mathbf{e}_{2} ( \mathbf{e}_{1}
  \wedge \mathbf{e}_{3} ) )\\
  & = & ( \mathbf{e}_{3} ) ( \mathbf{e}_{2} \cdot ( \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} ) +\mathbf{e}_{2} \wedge ( \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} ) )\\
  & = & ( \mathbf{e}_{3} ) ( 0+\mathbf{e}_{2} \wedge \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} )\\
  & = & \mathbf{e}_{3} \cdot ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} ) +\mathbf{e}_{3} \wedge ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} \wedge \mathbf{e}_{3} )\\
  & = & \mathbf{e}_{2} \wedge \mathbf{e}_{1} +0=\mathbf{e}_{2} \wedge
  \mathbf{e}_{1} .\end{array}

This geometric product evaluation was made more complicated by it not being a simpler product of a vector with a multivector. The evaluation of ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} ) ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} ) is

\begin{array}{rcl}
  ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} ) ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} ) & = & ( \mathbf{e}_{2} ) ( \mathbf{e}_{1} ( \mathbf{e}_{2}
  \wedge \mathbf{e}_{1} ) )\\
  & = & ( \mathbf{e}_{2} ) ( \mathbf{e}_{1} \cdot ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} ) +\mathbf{e}_{1} \wedge ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} ) )\\
  & = & ( \mathbf{e}_{2} ) ( -\mathbf{e}_{2} +0 )\\
  & = & ( \mathbf{e}_{2} ) \cdot ( -\mathbf{e}_{2} ) + ( \mathbf{e}_{2} )
  \wedge ( -\mathbf{e}_{2} )\\
  & = & -1+0\end{array}

which is the correct result that matches the rule formula above. The rules or formulas applied here are listed in the identities below. Of course, these products can also be evaluated more simply by using the identities already above and applying the rule for perpendicular vectors \mathbf{a}\mathbf{b}=-\mathbf{b}\mathbf{a} as needed to move values to the left or right in order to square vectors into scalars. The evaluation then looks like this

\begin{array}{rcl}
  \mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{3} \mathbf{e}_{1} \mathbf{e}_{2}
  \mathbf{e}_{3} & = & \mathbf{I}^{2} = ( \mathbf{e}_{3} \wedge \mathbf{e}_{2}
  ) ( \mathbf{e}_{1} \wedge \mathbf{e}_{3} ) ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} ) =-1\\
  ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) ( \mathbf{e}_{1} \wedge
  \mathbf{e}_{3} ) & = & \mathbf{e}_{3} \mathbf{e}_{2} \mathbf{e}_{1}
  \mathbf{e}_{3} =-\mathbf{e}_{2} \mathbf{e}_{3} \mathbf{e}_{1} \mathbf{e}_{3}
  =\mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{3} \mathbf{e}_{3} =\mathbf{e}_{2}
  \mathbf{e}_{1}\\
  ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} ) ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} ) & = & \mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{2}
  \mathbf{e}_{1} =-\mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{2} \mathbf{e}_{1}
  =-1.\end{array}

The general form of a multivector A

While looking below at some of the fundamental identities of this Clifford algebra \mathcal{G}_{3}, it may be helpful to follow along with the following additional explanations or interpretations of the values in the identities. Additional reading in the literature on Clifford geometric algebra is required to more fully understand all the concepts.

The value

\begin{array}{rcl}
  A & = & \langle A \rangle_{0} + \langle A \rangle_{1} + \langle A
  \rangle_{2} + \langle A \rangle_{3}\end{array}

is the general form of a value, called a multivector, in \mathcal{G}_{3}. The multivector A has parts \langle A \rangle_{k} called the k-vector part[8](41) of A, similar to taking the scalar S q and vector V q parts of a quaternion except that there are four different linearly independent parts. The number k itself is called the grade, and \langle A \rangle_{k} is the grade k part operator or selector on A. The values in a part \langle A \rangle_{k} are also said to be of grade k or have grade k[4](3).

The part

\begin{array}{rcl}
  \langle A \rangle_{0} & = & \langle A \rangle =c\end{array}

is a real number scalar, sometimes called a 0-vector or 0-blade, and is often associated with the cosine of an angle as in quaternions.

The part

\begin{array}{rcl}
  \langle A \rangle_{1} & = & \mathbf{a}=a_{x} \mathbf{e}_{1} +a_{y}
  \mathbf{e}_{2} +a_{z} \mathbf{e}_{3}\end{array}

with real scalars a_{x} ,a_{y} ,a_{z}, is a Euclidean vector, called a 1-vector or just a vector, and its three linearly independent orthogonal components a_{x} \mathbf{e}_{1} ,a_{y} \mathbf{e}_{2} ,a_{z} \mathbf{e}_{3} are called 1-blades.

The part

\begin{array}{rcl}
  \langle A \rangle_{2} & = & \mathbf{A}= \alpha_{x} \mathbf{E}_{\mathbf{i}} +
  \alpha_{y} \mathbf{E}_{\mathbf{j}} + \alpha_{z} \mathbf{E}_{\mathbf{k}}\\
  & = & \alpha_{x} ( \mathbf{e}_{3} \wedge \mathbf{e}_{2} ) + \alpha_{y} (
  \mathbf{e}_{1} \wedge \mathbf{e}_{3} ) + \alpha_{z} ( \mathbf{e}_{2} \wedge
  \mathbf{e}_{1} )\end{array}

with real scalars \alpha_{x} , \alpha_{y} , \alpha_{z}, is called a bivector (not the bivector in biquaternions) or 2-vector, and its three linearly independent orthogonal components \alpha_{x} \mathbf{E}_{\mathbf{i}} , \alpha_{y} \mathbf{E}_{\mathbf{j}} , \alpha_{z} \mathbf{E}_{\mathbf{k}} are called 2-blades, and this part also represents a pure quaternion vector.

The part

\begin{array}{rcl}
  \langle A \rangle_{3} & = & \gamma \mathbf{I}= \gamma ( \mathbf{e}_{1}
  \wedge \mathbf{e}_{2} \wedge \mathbf{e}_{3} )\end{array}

with real scalar \gamma, is called a 3-vector or 3-blade, or a pseudoscalar.

There are a total of 2^{3} =8 linearly independent components or blades in all the 4 parts of A.

In a Clifford geometric algebra \mathcal{G} ( \mathcal{V}^{n} ) with n orthonormal base vector units, there are 2^{n} unique blades, and therefore the algebra has values in a 2^{n}-dimensional real number space. One way to see how there are 2^{n} unique blades is by considering the expression

\begin{array}{rcl}
  &  & \mathbf{e}^{p_{1}}_{1} \cdots \mathbf{e}^{p_{k}}_{k} \cdots
  \mathbf{e}_{n}^{p_{n}}\end{array}

where the p_{k} \in \{ 0,1 \} act as presence bits. The corresponding binary number p_{1} \cdots p_{k} \cdots p_{n} has 2^{n} possible values. When all presence bits are zero, the resulting number 1 is the grade-0 base unit. The grade of a blade is the sum of the presence bits. If the ordering of the units is changed in this expression, then by anti-commutativity there would only be differences in signs but no additional unique blades. The space of the 2^{n} blades is called the Grassmann space \Lambda ( \mathcal{V}^{n} ) generated by the vector space \mathcal{V}^{n}.

The algebra of the even-grade parts is quaternions

The algebra of multivectors having only the even grade parts A_{+} = \langle A \rangle_{0} + \langle A \rangle_{2} is a closed algebra of values and isomorphic to quaternions in general, so it is a subalgebra of \mathcal{G}_{3}. The algebra of multivectors having only the odd grade parts A_{-} = \langle A \rangle_{1} + \langle A \rangle_{3} is not closed since their products or quotients are in the even grade parts, which can be thought of again as quaternions as just mentioned. The product of an even part and odd part is an odd part. This relationship between odd and even parts can be notated as A_{+} A_{+} =A_{+}, and A_{-} A_{-} =A_{+}, and A_{+} A_{-} =A_{-} A_{+} =A_{-}, and A_{+} A_{-} A_{+} =A_{-}. If the odd parts A_{-} = \langle A \rangle_{1} + \langle A \rangle_{3} are taken to represent only pure quaternions (vectors), letting \langle A \rangle_{3} =0, and the even parts A_{+} = \langle A \rangle_{0} + \langle A \rangle_{2} are taken to represent only impure quaternions (quaternions with non-zero scalar part), then we will find that A'_{-} =A_{+} A_{-} A^{-1}_{+} can (abstractly) represent the quaternion versor operator R^{\theta}_{\mathbf{n}} \mathbf{v}=e^{\frac{1}{2} \theta \mathbf{n}} \mathbf{v}e^{- \frac{1}{2} \theta \mathbf{n}}, which will take the Clifford algebra form R^{\theta}_{\mathbf{N}} \mathbf{v}=e^{\frac{1}{2} \theta \mathbf{N}} \mathbf{v}e^{- \frac{1}{2} \theta \mathbf{N}}.

In this form, \mathbf{N} is a unit bivector that directly represents a plane of rotation, or represents a quaternion unit vector axis of rotation \mathbf{N}=\mathbf{n}/\mathbf{I}, and it is the quadrantal versor of the plane represented by \mathbf{N}. The value of \mathbf{N} is still, in terms of quaternion biradials, the product or quotient of two perpendicular unit vectors. However, \mathbf{N} is now given as the product or quotient of two perpendicular Euclidean unit 1-vectors \mathbf{N}=\mathbf{b}/\mathbf{a}, or as the product or quotient of two perpendicular quaternion unit vectors represented by unit 2-vectors

\begin{array}{rcl}
  \mathbf{N} & = & ( \mathbf{b}/\mathbf{I} ) / ( \mathbf{a}/\mathbf{I} )
  =\mathbf{B}/\mathbf{A}\\
  & = & \mathbf{b} ( -\mathbf{I} ) ( \mathbf{a}\mathbf{I}^{-1} )^{-1}
  =\mathbf{b} ( -\mathbf{I} ) \mathbf{I}\mathbf{a}^{-1}\\
  & = & \mathbf{b}/\mathbf{a}=\mathbf{b}\mathbf{a}\end{array}

or as the dual \mathbf{N}=\mathbf{n}/\mathbf{I} of a unit vector rotational axis \mathbf{n}. More generally, by allowing \mathbf{b} and \mathbf{a} to again have any angle \theta separating them, and where we had the biradial b in quaternions, we now have the unit multivector of even grade

\begin{array}{rcl}
  B & = & \mathbf{b}/\mathbf{a}=\mathbf{b}\mathbf{a}\\
  & = & \mathbf{b} \cdot \mathbf{a}+\mathbf{b} \wedge \mathbf{a}\\
  & = & \mathrm{cos} ( \theta ) + \sin( \theta ) \frac{\mathbf{b}
  \wedge \mathbf{a}}{| \mathbf{b} \wedge \mathbf{a} |}\\
  & = & \mathrm{cos} ( \theta ) + \sin( \theta ) \mathbf{N}\\
  & = & \langle B \rangle_{0} + \langle B \rangle_{2}\\
  & = & e^{\theta \mathbf{N}}\end{array}

representing the same versor, and

\begin{array}{rcl}
  \mathbf{N} & = & \mathbf{b} \wedge \frac{\mathbf{a}^{\bot \mathbf{b}}}{|
  \mathbf{a}^{\bot \mathbf{b}} |} = \frac{\mathbf{b}\mathbf{a}^{\bot
  \mathbf{b}}}{| \mathbf{a}^{\bot \mathbf{b}} |}\end{array}

is the unit bivector of the plane of the Euclidean unit vectors \mathbf{a} to \mathbf{b}. \mathbf{N}=e^{\frac{\pi}{2} \mathbf{N}} operates as quadrantal versor directly on Euclidean vectors in the plane of \mathbf{N}, such that \mathbf{N} ( \alpha \mathbf{a}+ \beta \mathbf{b} ) is rotated by \pi /2 in the plane and in the direction \mathbf{a} toward \mathbf{b}.

The reversor,

\begin{array}{rcl}
  e^{- \theta \mathbf{N}} & = & \mathbf{a}/\mathbf{b}=\mathbf{a}\mathbf{b}=
  \mathrm{K} ( \mathbf{b}\mathbf{a} )\end{array}

is the reverse[8](45) of B denoted B^{\dagger} =\mathbf{a}\mathbf{b}.

The quadrantal reversor is

\begin{array}{rcl}
  -\mathbf{N} & = & \frac{\mathbf{a}\mathbf{b}^{\bot \mathbf{a}}}{|
  \mathbf{b}^{\bot \mathbf{a}} |} .\end{array}

Representing a quaternion versor using an odd-grade part

It is also possible for the odd part A_{-} = \langle A \rangle_{1} + \langle A \rangle_{3} to represent a quaternion if it takes the form

\begin{array}{rcl}
  Q\mathbf{I} & = & | Q | \left[ \mathrm{cos} ( \theta /2 ) \mathbf{I}+
  \sin( \theta /2 ) \mathbf{n} \right]\\
  Q & = & | Q | \left[ \mathrm{cos} ( \theta /2 ) + \sin( \theta /2 )
  ( \mathbf{n}/\mathbf{I} ) \right]\end{array}

where the Euclidean unit vector \mathbf{n} is the rotational axis, and \theta is the rotational angle according to a right-hand or left-hand rule on right-handed or left-handed axes. A Euclidean vector \mathbf{a} can then be rotated by \theta round \mathbf{n} as

\begin{array}{rcl}
  ( Q\mathbf{I} ) \mathbf{a} ( Q\mathbf{I} )^{-1} & = &
  Q\mathbf{I}\mathbf{a}\mathbf{I}^{-1} Q^{-1} =Q\mathbf{a}Q^{-1} .\end{array}

The rotation (b/a)v(a/b) in Euclidean vectors

In general, the operation \mathbf{n}/\mathbf{I}, called taking the dual of \mathbf{n}, transforms a Euclidean planar-polar vector \mathbf{n} into an orthogonal 2-vector in the dual space that represents the same vector \mathbf{n} but as a quaternion axial-pole vector (also called a pseudovector) that can operate as a quadrantal versor if it has unit scale. The operation ( \mathbf{n}/\mathbf{I} ) \mathbf{I} can be called taking the undual of \mathbf{n}/\mathbf{I}. By taking the dual of Euclidean vectors to transform them into quaternions, ordinary quaternion rotation, in terms of biradials, can be performed and then the undual can be used to transform the rotated result back to a Euclidean vector. Assuming unit vectors \mathbf{b},\mathbf{a}, then rotation of \mathbf{v} by twice the angle from \mathbf{a} to \mathbf{b} is

\begin{array}{rcl}
  Q ( \mathbf{v}/\mathbf{I} ) Q^{-1} \mathbf{I} & = & ( [
  \mathbf{b}/\mathbf{I} ] / [ \mathbf{a}/\mathbf{I} ] ) (
  \mathbf{v}/\mathbf{I} ) ( [ \mathbf{b}/\mathbf{I} ] / [
  \mathbf{a}/\mathbf{I} ] )^{-1} \mathbf{I}\\
  & = & ( \mathbf{b} [ -\mathbf{I} ] \mathbf{a}\mathbf{I} ) ( \mathbf{v} [
  -\mathbf{I} ] ) ( \mathbf{b} [ -\mathbf{I} ] \mathbf{a}\mathbf{I} )^{-1}
  \mathbf{I}\\
  & = & ( \mathbf{b}\mathbf{a} ) ( \mathbf{v} [ -\mathbf{I} ] ) (
  \mathbf{b}\mathbf{a} )^{-1} \mathbf{I}\\
  & = & ( \mathbf{b}/\mathbf{a} ) \mathbf{v} ( \mathbf{a}/\mathbf{b} )\end{array}

which shows that the products or quotients of Euclidean unit vectors represent quaternion versors that can directly operate on a Euclidean vector to perform a rotation in the Euclidean vector space. Therefore, it is not required to take duals to transform to quaternion representations of rotations, nor then undual any rotated results.

The following are some of the most important identities for the Clifford geometric algebra of Euclidean 3-space \mathcal{G}_{3}.

Identities: Euclidean base unit vectors

Euclidean base vector units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3} in \mathcal{G}_{3}:

\begin{array}{rcl}
  n & = & 3\\
  \mathbf{e}^{2}_{1} =\mathbf{e}^{2}_{2} =\mathbf{e}^{2}_{3} & = &
  \mathbf{e}_{1} \cdot \mathbf{e}_{1} =\mathbf{e}_{2} \cdot \mathbf{e}_{2}
  =\mathbf{e}_{3} \cdot \mathbf{e}_{3} =1\\
  \mathbf{e}^{-1}_{i} & = & \frac{1}{\mathbf{e}_{i}} =\mathbf{e}_{i}\\
  \mathbf{e}_{i} /\mathbf{e}_{j} & = & \mathbf{e}_{i} \mathbf{e}^{-1}_{j}
  =\mathbf{e}_{i} \mathbf{e}_{j}\\
  \mathbf{e}_{i} \cdot \mathbf{e}_{j} & = & \left\{\begin{array}{lll}
    \mathbf{e}_{i} \mathbf{e}_{j} =1= \delta_{i j} & | & i=j\\
    0= \delta_{i j} & | & i \neq j
  \end{array}\right.\\
  \mathbf{e}_{i} \wedge \mathbf{e}_{j} & = & \left\{\begin{array}{lll}
    0 & | & i=j\\
    \mathbf{e}_{i} \mathbf{e}_{j} =-\mathbf{e}_{j} \mathbf{e}_{i} & | & i \neq
    j
  \end{array}\right.\\
  \mathbf{e}_{i} \cdot \mathbf{e}_{j} +\mathbf{e}_{i} \wedge \mathbf{e}_{j}
  =\mathbf{e}_{i} \mathbf{e}_{j} & = & \left\{\begin{array}{lll}
    \mathbf{e}_{i} \cdot \mathbf{e}_{j} =1 & | & i=j\\
    \mathbf{e}_{i} \wedge \mathbf{e}_{j} =-\mathbf{e}_{j} \wedge
    \mathbf{e}_{i} & | & i \neq j
  \end{array}\right.\\
  ( \mathbf{e}_{i} \mathbf{e}_{j} )^{-1} & = & \mathbf{e}_{j} \mathbf{e}_{i}\\
  ( \mathbf{e}_{i} \mathbf{e}_{j} )^{2} & = & \left\{\begin{array}{lll}
    ( \mathbf{e}_{i} \cdot \mathbf{e}_{j} )^{2} =1^{2} =1 & | & i=j\\
    ( \mathbf{e}_{i} \wedge \mathbf{e}_{j} )^{2} =-\mathbf{e}_{j}
    \mathbf{e}_{i} \mathbf{e}_{i} \mathbf{e}_{j} =-1 & | & i \neq j
  \end{array}\right.\\
  \mathbf{I}=\mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{3} & = & (
  \mathbf{e}_{1} \wedge \mathbf{e}_{2} ) \mathbf{e}_{3} =\mathbf{e}_{1} (
  \mathbf{e}_{2} \wedge \mathbf{e}_{3} )\\
  & = & ( \mathbf{e}_{1} \wedge \mathbf{e}_{2} ) \wedge \mathbf{e}_{3}
  =\mathbf{e}_{1} \wedge ( \mathbf{e}_{2} \wedge \mathbf{e}_{3} )\\
  & = & \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \mathbf{e}_{3}\\
  \mathbf{I}^{-1} & = & \mathbf{e}_{3} \mathbf{e}_{2} \mathbf{e}_{1}\\
  \mathbf{I}^{2} & = & ( -1 )^{n ( n-1 ) /2} \mathbf{e}_{3} \mathbf{e}_{2}
  \mathbf{e}_{1}  \mathbf{e}_{1} \mathbf{e}_{2} \mathbf{e}_{3}\\
  & = & ( -1 )^{n ( n-1 ) /2} = ( -1 )^{3 ( 3-1 ) /2} =-1\end{array}

Identities: Euclidean 1-vectors

Euclidean 1-blades a_{i} \mathbf{e}_{i} and 1-vector (vector) \mathbf{a} in \mathcal{G}_{3}:

\begin{array}{rcl}
  \mathbf{a}_{1} & = & a_{1} \mathbf{e}_{1} =a_{x} \mathbf{e}_{1}
  =\mathbf{a}_{x}\\
  \mathbf{a}_{2} & = & a_{2} \mathbf{e}_{2} =a_{y} \mathbf{e}_{2}
  =\mathbf{a}_{y}\\
  \mathbf{a}_{3} & = & a_{3} \mathbf{e}_{3} =a_{z} \mathbf{e}_{3}
  =\mathbf{a}_{z}\\
  \mathbf{a} & = & a_{x} \mathbf{e}_{1} +a_{y} \mathbf{e}_{2} +a_{z}
  \mathbf{e}_{3}\\
  \mathbf{a}^{2} & = & a^{2}_{x} +a^{2}_{y} +a^{2}_{z}\\
  & = & \sum_{i,j=1}^{n} a_{i} a_{j} \delta_{i j} =\mathbf{a} \cdot
  \mathbf{a}= | \mathbf{a} |^{2}\end{array}

Identities: The geometric product ba of 1-vectors

The products of vectors in terms of the units. The geometric, inner, and outer products are evaluated directly in terms of the base units, and verifies that the geometric product of vectors is the sum of the inner and outer products of vectors. The outer product is found to be equal to the negative of the commutator product of their duals, which represents the negative cross product of their quaternion representations. The product \mathbf{b}\mathbf{a} is shown as a scaled versor that rotates \theta from \mathbf{a} to \mathbf{b}:

\begin{array}{rcl}
  \mathbf{b} & = & b_{1} \mathbf{e}_{1} +b_{2} \mathbf{e}_{2} +b_{3}
  \mathbf{e}_{3}\\
  \mathbf{b}\mathbf{a} & = & b_{1} a_{1} +b_{1} a_{2} \mathbf{e}_{1}
  \mathbf{e}_{2} +b_{1} a_{3} \mathbf{e}_{1} \mathbf{e}_{3} +\\
  &  & b_{2} a_{1} \mathbf{e}_{2} \mathbf{e}_{1} +b_{2} a_{2} +b_{2} a_{3}
  \mathbf{e}_{2} \mathbf{e}_{3} +\\
  &  & b_{3} a_{1} \mathbf{e}_{3} \mathbf{e}_{1} +b_{3} a_{2} \mathbf{e}_{3}
  \mathbf{e}_{2} +b_{3} a_{3}\\
  & = & ( b_{1} a_{1} +b_{2} a_{2} +b_{3} a_{3} ) +\\
  &  & ( b_{3} a_{2} -b_{2} a_{3} ) \mathbf{e}_{3} \mathbf{e}_{2} - ( b_{3}
  a_{1} -b_{1} a_{3} ) \mathbf{e}_{1} \mathbf{e}_{3} + ( b_{2} a_{1} -b_{1}
  a_{2} ) \mathbf{e}_{2} \mathbf{e}_{1}\\
  \mathbf{b} \cdot \mathbf{a} & = & ( b_{1} \mathbf{e}_{1} +b_{2}
  \mathbf{e}_{2} +b_{3} \mathbf{e}_{3} ) \cdot ( a_{1} \mathbf{e}_{1} +a_{2}
  \mathbf{e}_{2} +a_{3} \mathbf{e}_{3} )\\
  & = & b_{1} a_{1} \mathbf{e}_{1} \cdot \mathbf{e}_{1} +b_{2} a_{2}
  \mathbf{e}_{2} \cdot \mathbf{e}_{2} +b_{3} a_{3} \mathbf{e}_{3} \cdot
  \mathbf{e}_{3}\\
  & = & b_{1} a_{1} +b_{2} a_{2} +b_{3} a_{3}\\
  & = & \sum_{i,j=1}^{3} b_{i} a_{j} \delta_{i j}\\
  \mathbf{b} \wedge \mathbf{a} & = & ( b_{1} \mathbf{e}_{1} +b_{2}
  \mathbf{e}_{2} +b_{3} \mathbf{e}_{3} ) \wedge ( a_{1} \mathbf{e}_{1} +a_{2}
  \mathbf{e}_{2} +a_{3} \mathbf{e}_{3} )\\
  & = & b_{1} a_{2} \mathbf{e}_{1} \wedge \mathbf{e}_{2} +b_{1} a_{3}
  \mathbf{e}_{1} \wedge \mathbf{e}_{3} +\\
  &  & b_{2} a_{1} \mathbf{e}_{2} \wedge \mathbf{e}_{1} +b_{2} a_{3}
  \mathbf{e}_{2} \wedge \mathbf{e}_{3} +\\
  &  & b_{3} a_{1} \mathbf{e}_{3} \wedge \mathbf{e}_{1} +b_{3} a_{2}
  \mathbf{e}_{3} \wedge \mathbf{e}_{2}\\
  & = & ( b_{3} a_{2} -b_{2} a_{3} ) \mathbf{e}_{3} \mathbf{e}_{2} - ( b_{3}
  a_{1} -b_{1} a_{3} ) \mathbf{e}_{1} \mathbf{e}_{3} + ( b_{2} a_{1} -b_{1}
  a_{2} ) \mathbf{e}_{2} \mathbf{e}_{1}\\
  & = & \left|\begin{array}{ccc}
    \mathbf{e}_{3} /\mathbf{e}_{2} & \mathbf{e}_{1} /\mathbf{e}_{3} &
    \mathbf{e}_{2} /\mathbf{e}_{1}\\
    a_{1} & a_{2} & a_{3}\\
    b_{1} & b_{2} & b_{3}
  \end{array}\right| = ( \mathbf{a}/\mathbf{I} ) \times (
  \mathbf{b}/\mathbf{I} ) =\mathbf{A} \times \mathbf{B}\\
  \mathbf{b}\mathbf{a} & = & \mathbf{b} \cdot \mathbf{a}+\mathbf{b} \wedge
  \mathbf{a}=\mathbf{b} \cdot \mathbf{a}-\mathbf{B} \times \mathbf{A}\\
  & = & | \mathbf{B} |   | \mathbf{A} |   \mathrm{cos} ( \theta ) + |
  \mathbf{B} |   | \mathbf{A} |   \sin( \theta ) \frac{\mathbf{A}
  \times \mathbf{B}}{| \mathbf{B} |   | \mathbf{A} |   \sin( \theta
  )}\\
  & = & | \mathbf{B} |   | \mathbf{A} | \left[   \mathrm{cos} ( \theta ) +
  \sin( \theta ) \mathbf{N} \right] = | \mathbf{B} |   | \mathbf{A} |
  e^{\theta \mathbf{N}}\\
  & = & | \mathbf{b} |   | \mathbf{a} | \left[ \mathrm{cos} ( \theta ) +
  \sin( \theta ) \frac{\mathbf{b} \wedge \mathbf{a}}{| \mathbf{b} |  
  | \mathbf{a} |   \sin( \theta )} \right]\\
  & = & | \mathbf{b} |   | \mathbf{a} | \left[   \mathrm{cos} ( \theta ) +
  \sin( \theta ) \mathbf{N} \right]\\
  & = & | \mathbf{b} |   | \mathbf{a} |  e^{\theta \mathbf{N}}\end{array}

Identities: The quaternion unit 2-vectors

Isomorphic (1 to 1) map between unit 2-blades and quaternion units, where the dual \mathbf{b}/\mathbf{I} of a planar-polar Euclidean vector \mathbf{b} still represents \mathbf{b} but as an axial-pole quaternion vector \mathbf{B}, which is a quadrantal versor e^{\frac{\pi}{2} \mathbf{B}} of the plane perpendicular to \mathbf{b} if | \mathbf{b} | = | \mathbf{B} | =1:

\begin{array}{rcl}
  \mathbf{i}=\mathbf{k}/\mathbf{j} & \Leftrightarrow & \mathbf{E}_{\mathbf{i}}
  =\mathbf{e}_{3} /\mathbf{e}_{2} =\mathbf{e}_{3} \mathbf{e}_{2}
  =\mathbf{e}_{3} \wedge \mathbf{e}_{2} =\mathbf{e}_{1} /\mathbf{I}\\
  \mathbf{j}=\mathbf{i}/\mathbf{k} & \Leftrightarrow & \mathbf{E}_{\mathbf{j}}
  =\mathbf{e}_{1} /\mathbf{e}_{3} =\mathbf{e}_{1} \mathbf{e}_{3}
  =\mathbf{e}_{1} \wedge \mathbf{e}_{3} =\mathbf{e}_{2} /\mathbf{I}\\
  \mathbf{k}=\mathbf{j}/\mathbf{i} & \Leftrightarrow & \mathbf{E}_{\mathbf{k}}
  =\mathbf{e}_{2} /\mathbf{e}_{1} =\mathbf{e}_{2} \mathbf{e}_{1}
  =\mathbf{e}_{2} \wedge \mathbf{e}_{1} =\mathbf{e}_{3} /\mathbf{I}\\
  \mathbf{e}_{1} /\mathbf{I} & = & \mathbf{e}_{1} \mathbf{e}_{3}
  \mathbf{e}_{2} \mathbf{e}_{1} =\mathbf{e}_{1} ( -\mathbf{e}_{3}
  \mathbf{e}_{1} \mathbf{e}_{2} ) =\mathbf{e}_{1} ( \mathbf{e}_{1}
  \mathbf{e}_{3} \mathbf{e}_{2} ) =\mathbf{e}_{3} \mathbf{e}_{2}
  =\mathbf{e}_{3} /\mathbf{e}_{2}\\
  \mathbf{e}_{2} /\mathbf{I} & = & \mathbf{e}_{2} \mathbf{e}_{3}
  \mathbf{e}_{2} \mathbf{e}_{1} =\mathbf{e}_{2} ( -\mathbf{e}_{2}
  \mathbf{e}_{3} \mathbf{e}_{1} ) =-\mathbf{e}_{3} \mathbf{e}_{1}
  =\mathbf{e}_{1} \mathbf{e}_{3} =\mathbf{e}_{1} /\mathbf{e}_{3}\\
  \mathbf{e}_{3} /\mathbf{I} & = & \mathbf{e}_{3} \mathbf{e}_{3}
  \mathbf{e}_{2} \mathbf{e}_{1} =\mathbf{e}_{2} \mathbf{e}_{1} =\mathbf{e}_{2}
  /\mathbf{e}_{1}\\
  \mathbf{b}/\mathbf{I} & = & ( b_{1} \mathbf{e}_{1} +b_{2} \mathbf{e}_{2}
  +b_{3} \mathbf{e}_{3} ) /\mathbf{I}=b_{1} \mathbf{E}_{\mathbf{i}} +b_{2}
  \mathbf{E}_{\mathbf{j}} +b_{3} \mathbf{E}_{\mathbf{k}} =\mathbf{B}
  \Leftrightarrow \mathbf{b}.\end{array}

It is also important to show that the inner products of the quaternion mapping give the correct results

\begin{array}{rcl}
  \mathbf{E}_{\mathbf{i}} \cdot \mathbf{E}_{\mathbf{k}} & = & ( \mathbf{e}_{3}
  \wedge \mathbf{e}_{2} ) \cdot ( \mathbf{e}_{2} \wedge \mathbf{e}_{1} )\\
  & = & \mathbf{e}_{3} \cdot ( [ \mathbf{e}_{2} \cdot \mathbf{e}_{2} ]
  \mathbf{e}_{1} -\mathbf{e}_{2} [ \mathbf{e}_{2} \cdot \mathbf{e}_{1} ] )
  =\mathbf{e}_{3} \cdot \mathbf{e}_{1} =0\\
  & = & \mathbf{E}_{\mathbf{i}} \cdot \mathbf{E}_{\mathbf{j}}
  =\mathbf{E}_{\mathbf{j}} \cdot \mathbf{E}_{\mathbf{k}}\\
  \mathbf{E}_{\mathbf{i}} \cdot \mathbf{E}_{\mathbf{i}} & = & ( \mathbf{e}_{3}
  \wedge \mathbf{e}_{2} ) \cdot ( \mathbf{e}_{3} \cdot \mathbf{e}_{2} )\\
  & = & \mathbf{e}_{3} \cdot ( [ \mathbf{e}_{2} \cdot \mathbf{e}_{3} ]
  \mathbf{e}_{2} -\mathbf{e}_{3} [ \mathbf{e}_{2} \cdot \mathbf{e}_{2} ] )
  =-\mathbf{e}_{3} \cdot \mathbf{e}_{3} =-1\\
  & = & \mathbf{E}_{\mathbf{i}} \mathbf{E}_{\mathbf{i}}
  =\mathbf{E}_{\mathbf{j}} \mathbf{E}_{\mathbf{j}} =\mathbf{E}_{\mathbf{k}}
  \mathbf{E}_{\mathbf{k}}\\
  \mathbf{a} \cdot \mathbf{b} & = & ( \mathbf{A}\mathbf{I} ) \cdot (
  \mathbf{B}\mathbf{I} ) = \frac{1}{2} (
  \mathbf{a}\mathbf{b}+\mathbf{b}\mathbf{a} )\\
  & = & \frac{1}{2} (
  \mathbf{A}\mathbf{I}\mathbf{B}\mathbf{I}+\mathbf{B}\mathbf{I}\mathbf{A}\mathbf{I}
  ) =- \frac{1}{2} ( \mathbf{A}\mathbf{B}+\mathbf{B}\mathbf{A} )\\
  & = & -\mathbf{A} \cdot \mathbf{B}=-\mathbf{A} \bar{\times} \mathbf{B}\end{array}

except for a sign change, which is expected since quaternion vector units square negative or have negative signature. The vector analysis vector dot product and the geometric algebra inner product are not computed in the same way. The vector dot product is the product of a row and a column of scalar components, as in linear algebra matrix products, and ignores the vector units and their signatures. The geometric algebra inner product of blades is in the form of a Laplace expansion, as in computing determinants, and also is in terms of vector-valued factors where the signatures or squares of the vector units contribute to the result.

Cross products are

\begin{array}{rcl}
  \mathbf{A} \times \mathbf{B} & = & \frac{1}{2} (
  \mathbf{A}\mathbf{B}-\mathbf{B}\mathbf{A} ) = \frac{1}{2} (
  \mathbf{b}\mathbf{a}-\mathbf{a}\mathbf{b} )\\
  & = & \left|\begin{array}{ccc}
    \mathbf{e}_{3} \mathbf{e}_{2} & \mathbf{e}_{1} \mathbf{e}_{3} &
    \mathbf{e}_{2} \mathbf{e}_{1}\\
    a_{x} & a_{y} & a_{z}\\
    b_{x} & b_{y} & b_{z}
  \end{array}\right| =\mathbf{b} \wedge \mathbf{a}\\
  & = & \left|\begin{array}{ccc}
    \mathbf{e}_{1} & \mathbf{e}_{2} & \mathbf{e}_{3}\\
    a_{x} & a_{y} & a_{z}\\
    b_{x} & b_{y} & b_{z}
  \end{array}\right| /\mathbf{I}= ( \mathbf{a} \times \mathbf{b} )
  /\mathbf{I}\\
  \mathbf{a} \times \mathbf{b} & = & ( \mathbf{a} \wedge \mathbf{b} )
  /\mathbf{I}.\end{array}

Quaternions mapped into a two dimensional space

Quaternions can be mapped into a two dimensional space with negative signatures as

\begin{array}{rcl}
  \mathbf{e}^{2}_{1} =\mathbf{e}^{2}_{2} & = & -1\\
  \mathbf{i} & {\color{red} \Leftrightarrow} & \mathbf{e}_{1}\\
  \mathbf{j} & {\color{red} \Leftrightarrow} & \mathbf{e}_{2}\\
  \mathbf{k} & {\color{red} \Leftrightarrow} & \mathbf{e}_{1} \mathbf{e}_{2}\end{array}

and then have the products

\begin{array}{rcl}
  \mathbf{i}\mathbf{j} & {\color{red} \Leftrightarrow} & \mathbf{e}_{1}
  \mathbf{e}_{2}   {\color{red} \Leftrightarrow} \mathbf{k}\\
  \mathbf{i}\mathbf{k} & {\color{red} \Leftrightarrow} & \mathbf{e}_{1}
  \mathbf{e}_{1} \mathbf{e}_{2} =-\mathbf{e}_{2} {\color{red} \Leftrightarrow}
  -\mathbf{j}\\
  \mathbf{j}\mathbf{k} & {\color{red} \Leftrightarrow} & \mathbf{e}_{2}
  \mathbf{e}_{1} \mathbf{e}_{2} =\mathbf{e}_{1} {\color{red} \Leftrightarrow}
  \mathbf{i}\end{array}

which appear to work as expected. However, there is a possible problem (hence red maps) since, while the map gives three linearly independent units, it does not give three mutually orthogonal units according to the inner products

\begin{array}{rcl}
  \mathbf{i} \cdot \mathbf{j} & {\color{red} \Leftrightarrow} & \mathbf{e}_{1}
  \cdot \mathbf{e}_{2} =0\\
  \mathbf{i} \cdot \mathbf{k} & {\color{red} \Leftrightarrow} & \mathbf{e}_{1}
  \cdot ( \mathbf{e}_{1} \wedge \mathbf{e}_{2} ) =-\mathbf{e}_{2} {\color{red}
  \Leftrightarrow} -\mathbf{j} \neq 0\\
  \mathbf{k} \cdot \mathbf{i} & {\color{red} \Leftrightarrow} & (
  \mathbf{e}_{1} \wedge \mathbf{e}_{2} ) \cdot \mathbf{e}_{1} =\mathbf{e}_{2}
  {\color{red} \Leftrightarrow} \mathbf{j} \neq 0\\
  \mathbf{j} \cdot \mathbf{k} & {\color{red} \Leftrightarrow} & \mathbf{e}_{2}
  \cdot ( \mathbf{e}_{1} \wedge \mathbf{e}_{2} ) =\mathbf{e}_{1} {\color{red}
  \Leftrightarrow} \mathbf{i} \neq 0\\
  \mathbf{k} \cdot \mathbf{j} & {\color{red} \Leftrightarrow} & (
  \mathbf{e}_{1} \wedge \mathbf{e}_{2} ) \cdot \mathbf{e}_{2} =-\mathbf{e}_{1}
  {\color{red} \Leftrightarrow} -\mathbf{i} \neq 0.\end{array}

For this mapping, the inner product fails to give the desired scalar results. The vector dot product, as a matrix product of a row and a column of scalar components, can be used. The outer products are also not useful in this mapping.

The mapping of vector dot products to the negative of the anti-commutator (symmetric) products

\begin{array}{rcl}
  \mathbf{i} \bullet \mathbf{j} & {\color{red} \Leftrightarrow} &
  -\mathbf{e}_{1} \bar{\times} \mathbf{e}_{2} =- \frac{1}{2} ( \mathbf{e}_{1}
  \mathbf{e}_{2} +\mathbf{e}_{2} \mathbf{e}_{1} ) =0\\
  \mathbf{i} \bullet \mathbf{k} & {\color{red} \Leftrightarrow} &
  -\mathbf{e}_{1} \bar{\times} ( \mathbf{e}_{1} \mathbf{e}_{2} ) =-
  \frac{1}{2} ( \mathbf{e}_{1} \mathbf{e}_{1} \mathbf{e}_{2} +\mathbf{e}_{1}
  \mathbf{e}_{2} \mathbf{e}_{1} ) =0\\
  \mathbf{j} \bullet \mathbf{k} & {\color{red} \Leftrightarrow} &
  -\mathbf{e}_{2} \bar{\times} ( \mathbf{e}_{1} \mathbf{e}_{2} ) =-
  \frac{1}{2} ( \mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{2} +\mathbf{e}_{1}
  \mathbf{e}_{2} \mathbf{e}_{2} ) =0\\
  \mathbf{j} \bullet \mathbf{j}=\mathbf{k} \bullet \mathbf{k}=\mathbf{i}
  \bullet \mathbf{i}=-\mathbf{i}\mathbf{i} & {\color{red} \Leftrightarrow} &
  -\mathbf{e}_{1} \bar{\times} \mathbf{e}_{1} =- \frac{1}{2} ( \mathbf{e}_{1}
  \mathbf{e}_{1} +\mathbf{e}_{1} \mathbf{e}_{1} ) =1\end{array}

gives good results.

The mapping of vector cross products to commutator (anti-symmetric) products

\begin{array}{rcl}
  \mathbf{i}\mathbf{j}=\mathbf{i} \times \mathbf{j} & {\color{red}
  \Leftrightarrow} & \mathbf{e}_{1} \times \mathbf{e}_{2} = \frac{1}{2} (
  \mathbf{e}_{1} \mathbf{e}_{2} -\mathbf{e}_{2} \mathbf{e}_{1} )
  =\mathbf{e}_{1} \mathbf{e}_{2} {\color{red} \Leftrightarrow} \mathbf{k}\\
  \mathbf{i}\mathbf{k}=\mathbf{i} \times \mathbf{k} & {\color{red}
  \Leftrightarrow} & \mathbf{e}_{1} \times ( \mathbf{e}_{1} \mathbf{e}_{2} ) =
  \frac{1}{2} ( \mathbf{e}_{1} \mathbf{e}_{1} \mathbf{e}_{2} -\mathbf{e}_{1}
  \mathbf{e}_{2} \mathbf{e}_{1} ) =-\mathbf{e}_{2} {\color{red}
  \Leftrightarrow} -\mathbf{j}\\
  \mathbf{j}\mathbf{k}=\mathbf{j} \times \mathbf{k} & {\color{red}
  \Leftrightarrow} & \mathbf{e}_{2} \times ( \mathbf{e}_{1} \mathbf{e}_{2} ) =
  \frac{1}{2} ( \mathbf{e}_{2} \mathbf{e}_{1} \mathbf{e}_{2} -\mathbf{e}_{1}
  \mathbf{e}_{2} \mathbf{e}_{2} ) =\mathbf{e}_{1} {\color{red}
  \Leftrightarrow} \mathbf{i}\end{array}

gives good results.

By combining these two good results, we can write the formula for quaternion products on this mapping as

\begin{array}{rcl}
  p & = & p_{w} +\mathbf{p}=p_{w} +p_{x} \mathbf{e}_{1} +p_{y} \mathbf{e}_{2}
  +p_{z} \mathbf{e}_{1} \mathbf{e}_{2}\\
  q & = & q_{w} +\mathbf{q}=q_{w} +q_{x} \mathbf{e}_{1} +q_{y} \mathbf{e}_{2}
  +q_{z} \mathbf{e}_{1} \mathbf{e}_{2}\\
  \mathbf{p}\mathbf{q} & = & \mathbf{p} \bar{\times} \mathbf{q}+\mathbf{p}
  \times \mathbf{q}\\
  p q & = & ( p_{w} +\mathbf{p} ) ( q_{w} +\mathbf{q} ) =p \bar{\times} q+p
  \times q\\
  & = & p_{w} q_{w} +p_{w} \mathbf{q}+q_{w} \mathbf{p}+\mathbf{p}\mathbf{q}\\
  & = & ( p_{w} q_{w} +\mathbf{p} \bar{\times} \mathbf{q} ) + ( p_{w}
  \mathbf{q}+q_{w} \mathbf{p}+\mathbf{p} \times \mathbf{q} )\\
  & = & \langle p q \rangle_{0} + ( \langle p q \rangle_{1} + \langle p q
  \rangle_{2} )\end{array}

which shows that the geometric product gives all the expected quaternion results, even though the inner and outer products were not useful. For this mapping, the useful products are the geometric product and its decomposition into the anti-commutator and commutator products.

Identities: General form of multivector A by grade-k parts

General form of a multivector A and its graded k-vector grade-k parts \langle A \rangle_{k} in \mathcal{G}_{3}:

\begin{array}{rcl}
  A & = & \langle A \rangle_{0} + \langle A \rangle_{1} + \langle A
  \rangle_{2} + \langle A \rangle_{3}\\
  c & = & \langle A \rangle_{0} = \langle A \rangle\\
  \mathbf{a} & = & \langle A \rangle_{1} =a_{x} \mathbf{e}_{1} +a_{y}
  \mathbf{e}_{2} +a_{z} \mathbf{e}_{3}\\
  \mathbf{A} & = & \langle A \rangle_{2} = \alpha_{x} \mathbf{E}_{\mathbf{i}}
  + \alpha_{y} \mathbf{E}_{\mathbf{j}} + \alpha_{z} \mathbf{E}_{\mathbf{k}}\\
  \gamma \mathbf{I} & = & \langle A \rangle_{3} = \gamma \mathbf{e}_{1}
  \mathbf{e}_{2} \mathbf{e}_{3} = \gamma ( \mathbf{e}_{1} \wedge
  \mathbf{e}_{2} \wedge \mathbf{e}_{3} )\end{array}

Identities: Squares, inverses, and commutative property of I

Squares, inverses, and commutative property of unit 3-blade pseudoscalar \mathbf{I}:

\begin{array}{rcl}
  \mathbf{e}^{2}_{i} & = & 1\\
  \mathbf{a}^{2} & = & | \mathbf{a} |^{2}\\
  \mathbf{A}^{2} & = & - | \mathbf{A} |^{2}\\
  \mathbf{I}^{2} & = & -1\\
  \mathbf{e}^{-1}_{i} & = & \mathbf{e}_{i}\\
  \mathbf{a}^{-1} & = & \frac{\mathbf{a}}{\mathbf{a}^{2}} =
  \frac{\mathbf{a}}{| \mathbf{a} |^{2}}\\
  \mathbf{A}^{-1} & = & \frac{\mathbf{A}}{\mathbf{A}^{2}} =
  \frac{-\mathbf{A}}{| \mathbf{A} |^{2}}\\
  \mathbf{I}^{-1} & = & \mathbf{e}_{3} \mathbf{e}_{2} \mathbf{e}_{1}
  =-\mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \mathbf{e}_{3} =-\mathbf{I}\\
  \mathbf{I}\mathbf{e}_{i} & = & \mathbf{e}_{i} \mathbf{I}\\
  \mathbf{I}\mathbf{a} & = & \mathbf{a}\mathbf{I}\\
  \mathbf{I}\mathbf{A} & = & \mathbf{A}\mathbf{I}\\
  \mathbf{I}A & = & A\mathbf{I}\end{array}

Identities: Product ba and rotation operator R

Geometric, inner, outer, and cross products of vectors \mathbf{a} and \mathbf{b} with positive angle \theta measured from \mathbf{a} toward \mathbf{b} in the \mathbf{a}\mathbf{b}-plane (angle \theta causes preference to give the products in order \mathbf{b}\mathbf{a}):

Recap: The dual (dividing by the pseudoscalar \mathbf{I} or multiplying \mathbf{I}^{-1} or -\mathbf{I} on right side) of a Euclidean planar-polar 1-vector represents it as a Quaternion axial-pole 2-vector often useful, at the same time and with the same orientation, for rotations of both Euclidean 1-vectors and other vectors represented in Quaternion 2-vector form. The undual (multiplying on right side by \mathbf{I}) of a 2-vector (representing a Quaternion vector) is a 1-vector that represents it as a Euclidean planar-polar vector having a positive square. The two representations of a vector by undual or dual, i.e. Euclidean 1-vector or Quaternion 2-vector, are equivalent vectors with respect to the Euclidean or Quaternion vector operations within their grades or complementary orthogonal dual spaces. The dual of a 1-vector and undual of a 2-vector can be done any time it is convenient to use the vector or bivector as Quaternion or Euclidean vector so long as appropriate care is taken not to mix incompatible formulas for one vector type with formulas for the other vector type, such as squaring since 1-vectors square positive and 2-vectors square negative. The rotation operator R^{\theta}_{\mathbf{N}}, in terms of a unit 2-vector \mathbf{N}, is compatible between the two such that the same operator rotates both 1-vectors and 2-vectors in the expected way within their grades. In the formulas or identities below, the dual and undual are used in the way just described, and this may allow easier understanding of how the formulas are derived and work. For example, the planar-polar Eucliden 1-vector \mathbf{a} \times \mathbf{b} can partially (four possible angles \theta, - \theta, \pi - \theta, \theta - \pi) represent rotation \mathbf{b}=R^{\theta}_{\mathbf{N}} \mathbf{a} from \mathbf{a} toward \mathbf{b}, and its dual

\begin{array}{rcl}
  ( \mathbf{a} \times \mathbf{b} ) /\mathbf{I} & = & \mathbf{b} \wedge
  \mathbf{a}=\mathbf{b}^{\bot \mathbf{a}} \mathbf{a}= | \mathbf{b}^{\bot
  \mathbf{a}} \mathbf{a} |  \mathbf{N}\end{array}

also partially represents that rotation as a Quaternion axial-pole 2-vector. The bivector \mathbf{N} can always be created as \mathbf{n}/\mathbf{I} where \mathbf{n} is the Euclidean unit vector axis of rotation. Also notable is that the vector cross product \mathbf{a} \times \mathbf{b} is computed by a determinant of exactly the same form as in quaternions or vector analysis by using the direct mapping (not duals) \mathbf{i} \Leftrightarrow \mathbf{e}_{1}, \mathbf{j} \Leftrightarrow \mathbf{e}_{2}, \mathbf{k} \Leftrightarrow \mathbf{e}_{3} in the determinant.

\begin{array}{rcl}
  \mathbf{b}\mathbf{a} & = & \frac{1}{2} (
  \mathbf{b}\mathbf{a}+\mathbf{a}\mathbf{b} ) + \frac{1}{2} (
  \mathbf{b}\mathbf{a}-\mathbf{a}\mathbf{b} )\\
  & = & \mathbf{b} \cdot \mathbf{a}+\mathbf{b} \wedge \mathbf{a}\\
  & = & | \mathbf{b} |   | \mathbf{a} |   \mathrm{cos} ( \theta ) + |
  \mathbf{b} |   | \mathbf{a} |   \sin ( \theta ) \mathbf{N}\\
  & = & | \mathbf{b} |   | \mathbf{a} | \left[   \mathrm{cos} ( \theta ) +
  \sin( \theta ) \mathbf{N} \right] = | \mathbf{b} |   | \mathbf{a} |
  e^{\theta \mathbf{N}}\\
  & = & \mathrm{K} ( \mathbf{a}\mathbf{b} )\\
  \mathbf{b} \cdot \mathbf{a} & = & \frac{1}{2} (
  \mathbf{b}\mathbf{a}+\mathbf{a}\mathbf{b} ) = | \mathbf{b} |   | \mathbf{a}
  |   \mathrm{cos} ( \theta )\\
  & = & | \mathbf{b} |   | \mathbf{a} |   \mathrm{cos} ( - \theta )
  =\mathbf{a} \cdot \mathbf{b}\\
  & = & \sum_{i,j=1}^{3} b_{i} a_{j} \delta_{i j} =b_{1} a_{1} +b_{2} a_{2}
  +b_{3} a_{3}\\
  \mathbf{b} \wedge \mathbf{a} & = & \frac{1}{2} (
  \mathbf{b}\mathbf{a}-\mathbf{a}\mathbf{b} ) = | \mathbf{b} |   | \mathbf{a}
  |   \sin( \theta ) \frac{\mathbf{b} \wedge \mathbf{a}}{| \mathbf{b}
  |   | \mathbf{a} |   \sin( \theta )} = | \mathbf{b} |   |
  \mathbf{a} |   \sin( \theta ) \mathbf{N}\\
  & = & - | \mathbf{b} |   | \mathbf{a} |   \sin( - \theta )
  \mathbf{N}=-\mathbf{a} \wedge \mathbf{b}\\
  & = & \mathbf{b} \wedge ( \mathbf{a}^{||\mathbf{b}} +\mathbf{a}^{\bot
  \mathbf{b}} ) =\mathbf{b} \wedge \mathbf{a}^{\bot \mathbf{b}}
  =\mathbf{b}\mathbf{a}^{\bot \mathbf{b}}\\
  & = & ( \mathbf{b}^{||\mathbf{a}} +\mathbf{b}^{\bot \mathbf{a}} ) \wedge
  \mathbf{a}=\mathbf{b}^{\bot \mathbf{a}} \wedge \mathbf{a}=\mathbf{b}^{\bot
  \mathbf{a}} \mathbf{a}\\
  & = & ( \mathbf{a} \times \mathbf{b} ) /\mathbf{I}= ( \mathbf{a}/\mathbf{I}
  ) \times ( \mathbf{b}/\mathbf{I} )\\
  & = & \left|\begin{array}{ccc}
    \mathbf{e}_{1} /\mathbf{I} & \mathbf{e}_{2} /\mathbf{I} & \mathbf{e}_{3}
    /\mathbf{I}\\
    a_{1} & a_{2} & a_{3}\\
    b_{1} & b_{2} & b_{3}
  \end{array}\right| = \left|\begin{array}{ccc}
    \mathbf{e}_{3} \mathbf{e}_{2} & \mathbf{e}_{1} \mathbf{e}_{3} &
    \mathbf{e}_{2} \mathbf{e}_{1}\\
    a_{1} & a_{2} & a_{3}\\
    b_{1} & b_{2} & b_{3}
  \end{array}\right|\\
  \mathbf{a} \times \mathbf{b} & = & ( \mathbf{b} \wedge \mathbf{a} )
  \mathbf{I}= ( \mathbf{a} \wedge \mathbf{b} ) /\mathbf{I}\\
  & = & [ ( \mathbf{a}/\mathbf{I} ) \times ( \mathbf{b}/\mathbf{I} ) ]
  \mathbf{I}= \frac{1}{2} ( \mathbf{b}\mathbf{a}-\mathbf{a}\mathbf{b} )
  \mathbf{I}= \frac{1}{2} ( \mathbf{a}\mathbf{b}-\mathbf{b}\mathbf{a} )
  /\mathbf{I}\\
  & = & \left|\begin{array}{ccc}
    \mathbf{e}_{1} /\mathbf{I} & \mathbf{e}_{2} /\mathbf{I} & \mathbf{e}_{3}
    /\mathbf{I}\\
    a_{1} & a_{2} & a_{3}\\
    b_{1} & b_{2} & b_{3}
  \end{array}\right| \mathbf{I}= \left|\begin{array}{ccc}
    \mathbf{e}_{3} /\mathbf{e}_{2} & \mathbf{e}_{1} /\mathbf{e}_{3} &
    \mathbf{e}_{2} /\mathbf{e}_{1}\\
    a_{1} & a_{2} & a_{3}\\
    b_{1} & b_{2} & b_{3}
  \end{array}\right| \mathbf{I}\\
  & = & \left|\begin{array}{ccc}
    \mathbf{e}_{1} & \mathbf{e}_{2} & \mathbf{e}_{3}\\
    a_{1} & a_{2} & a_{3}\\
    b_{1} & b_{2} & b_{3}
  \end{array}\right|\\
  R^{\theta}_{\mathbf{N}} \mathbf{v} & = & ( \mathbf{b}\mathbf{a}
  )^{\frac{1}{2}} ( \mathbf{v} ) ( \mathbf{b}\mathbf{a} )^{- \frac{1}{2}} = (
  \mathbf{b}/\mathbf{a} )^{\frac{1}{2}} ( \mathbf{v} ) ( \mathbf{a}/\mathbf{b}
  )^{\frac{1}{2}} =e^{\frac{1}{2} \theta \mathbf{N}} ( \mathbf{v} ) e^{-
  \frac{1}{2} \theta \mathbf{N}}\end{array}

Identities: Vector multivector products aB and Ab

Inner product with a scalar is zero, and outer product with scalar is the same as scalar multiplication.

\begin{array}{rcl}
  c \cdot \mathbf{a}=\mathbf{a} \cdot c & = & 0\\
  c \wedge \mathbf{a}=\mathbf{a} \wedge c & = & c \mathbf{a}\end{array}

In the following, r_{-} denotes that r is an odd integer, and r_{+} denotes that r is an even integer.

For vector \mathbf{a} and s-blade \mathbf{B}_{s} their products are

\begin{array}{rcl}
  \mathbf{a}\mathbf{B}_{s} & = & \langle \mathbf{a}\mathbf{B}_{s} \rangle_{|
  s-1 |} + \langle \mathbf{a}\mathbf{B}_{s} \rangle_{s+1} =\mathbf{a} \cdot
  \mathbf{B}_{s} +\mathbf{a} \wedge \mathbf{B}_{s}\\
  & = & \mathbf{a} \bar{\times} \mathbf{B}_{s} +\mathbf{a} \times
  \mathbf{B}_{s}\\
  & = & \frac{1}{2} ( \mathbf{a}\mathbf{B}_{s} +\mathbf{B}_{s} \mathbf{a} ) +
  \frac{1}{2} ( \mathbf{a}\mathbf{B}_{s} -\mathbf{B}_{s} \mathbf{a} )\\
  \mathbf{a} \wedge \mathbf{B}_{s} & = & \frac{1}{2} (
  \mathbf{a}\mathbf{B}_{s} + ( -1 )^{s} \mathbf{B}_{s} \mathbf{a} ) =
  \left\{\begin{array}{lll}
    \mathbf{a} \bar{\times} \mathbf{B}_{s} & | & s_{+}\\
    \mathbf{a} \times \mathbf{B}_{s} & | & s_{-}
  \end{array}\right.\\
  \mathbf{a} \cdot \mathbf{B}_{s} & = & \frac{1}{2} ( \mathbf{a}\mathbf{B}_{s}
  - ( -1 )^{s} \mathbf{B}_{s} \mathbf{a} ) = \left\{\begin{array}{lll}
    \mathbf{a} \bar{\times} \mathbf{B}_{s} & | & s_{-}\\
    \mathbf{a} \times \mathbf{B}_{s} & | & s_{+}
  \end{array}\right.\\
  ( -1 )^{s-1} \mathbf{a} \cdot \mathbf{B}_{s} & = & \frac{1}{2} (
  \mathbf{B}_{s} \mathbf{a}- ( -1 )^{s} \mathbf{a}\mathbf{B}_{s} )
  =\mathbf{B}_{s} \cdot \mathbf{a}.\end{array}

For r-blade \mathbf{A}_{r} and vector \mathbf{b} their products are

\begin{array}{rcl}
  \mathbf{A}_{r} \mathbf{b} & = & \langle \mathbf{A}_{r} \mathbf{b} \rangle_{|
  r-1 |} + \langle \mathbf{A}_{r} \mathbf{b} \rangle_{r+1} =\mathbf{A}_{r}
  \cdot \mathbf{b}+\mathbf{A}_{r} \wedge \mathbf{b}\\
  & = & \mathbf{A}_{r} \bar{\times} \mathbf{b}+\mathbf{A}_{r} \times
  \mathbf{b}\\
  & = & \frac{1}{2} ( \mathbf{A}_{r} \mathbf{b}+\mathbf{b}\mathbf{A}_{r} ) +
  \frac{1}{2} ( \mathbf{A}_{r} \mathbf{b}-\mathbf{b}\mathbf{A}_{r} )\\
  \mathbf{A}_{r} \wedge \mathbf{b} & = & \frac{1}{2} ( \mathbf{A}_{r}
  \mathbf{b}+ ( -1 )^{r} \mathbf{b}\mathbf{A}_{r} ) =
  \left\{\begin{array}{lll}
    \mathbf{A}_{r} \bar{\times} \mathbf{b} & | & r_{+}\\
    \mathbf{A}_{r} \times \mathbf{b} & | & r_{-}
  \end{array}\right.\\
  \mathbf{A}_{r} \cdot \mathbf{b} & = & \frac{1}{2} ( \mathbf{A}_{r}
  \mathbf{b}- ( -1 )^{r} \mathbf{b}\mathbf{A}_{r} ) =
  \left\{\begin{array}{lll}
    \mathbf{A}_{r} \bar{\times} \mathbf{b} & | & r_{-}\\
    \mathbf{A}_{r} \times \mathbf{b} & | & r_{+}
  \end{array}\right.\\
  ( -1 )^{r-1} \mathbf{A}_{r} \cdot \mathbf{b} & = & \frac{1}{2} (
  \mathbf{b}\mathbf{A}_{r} - ( -1 )^{r} \mathbf{A}_{r} \mathbf{b} )
  =\mathbf{b} \cdot \mathbf{A}_{r} .\end{array}

For the geometric product \mathbf{a}B of vector \mathbf{a} and multivector B, the vector \mathbf{a} distributes into B and multiplies with each blade within B.

\begin{array}{rcl}
  B_{s} & = & \mathbf{b}_{1} \cdots \mathbf{b}_{s} = \sum^{s}_{i=0} \langle B
  \rangle_{i}\\
  & = & \left\{\begin{array}{lll}
    \langle B \rangle_{1} + \langle B \rangle_{3} + \cdots + \langle B
    \rangle_{s-2} + \langle B \rangle_{s} & | & s_{-}\\
    \langle B \rangle + \langle B \rangle_{2} + \cdots + \langle B
    \rangle_{s-2} + \langle B \rangle_{s} & | & s_{+}
  \end{array}\right.\\
  \mathbf{a} B_{s} & = & \mathbf{a} \cdot B_{s} +\mathbf{a} \wedge B_{s}\\
  A _{r} \mathbf{b} & = & A_{r} \cdot \mathbf{b}+A_{r} \wedge \mathbf{b}.\end{array}

More generally, a multivector is not always a product of vectors and may contain terms or parts of any grade. See also, the recursive formula for the inner product of blades.

Operator precedence convention for ambiguous products

The otherwise ambiguous products

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{b} \wedge \mathbf{c} & = & \mathbf{a} \cdot (
  \mathbf{b} \wedge \mathbf{c} )\\
  \mathbf{a} \wedge \mathbf{b} \cdot \mathbf{c} & = & ( \mathbf{a} \wedge
  \mathbf{b} ) \cdot \mathbf{c}\end{array}

or take these meanings of products (or operator precedence) since vectors and outer products are the geometrical objects most often being operated on, measured, or compared by inner products.

The products

\begin{array}{rcl}
  \mathbf{a}\mathbf{b} \wedge \mathbf{c} & = & \mathbf{a} ( \mathbf{b} \wedge
  \mathbf{c} )\\
  \mathbf{a} \wedge \mathbf{b}\mathbf{c} & = & ( \mathbf{a} \wedge \mathbf{b}
  ) \mathbf{c}\end{array}

take these meanings for a similar reason.

Another operator precedence is

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{b}\mathbf{c} & = & ( \mathbf{a} \cdot \mathbf{b} )
  \mathbf{c}\\
  \mathbf{a}\mathbf{b} \cdot \mathbf{c} & = & \mathbf{a} ( \mathbf{b} \cdot
  \mathbf{c} )\end{array}

and since the inner product is a scalar factor that is seen frequently.

Identities: Projection and rejection operators for vectors

Projection, rejection, and orthogonalization operations:

\begin{array}{rcl}
  \mathcal{P}_{\mathbf{b}} ( \mathbf{a} ) =\mathbf{a}^{||\mathbf{b}}
  =\mathbf{a}-\mathbf{a}^{\bot \mathbf{b}} & = & ( \mathbf{a} \cdot \mathbf{b}
  ) /\mathbf{b}= \frac{\mathbf{a} \cdot \mathbf{b}}{| \mathbf{b} |^{2}}
  \mathbf{b}= \frac{\mathbf{a} \cdot \mathbf{b}}{\mathbf{b} \cdot \mathbf{b}}
  \mathbf{b}\\
  \mathcal{P}^{\bot}_{\mathbf{b}} ( \mathbf{a} ) =\mathbf{a}^{\bot \mathbf{b}}
  =\mathbf{a}-\mathbf{a}^{||\mathbf{b}} & = & ( \mathbf{a} \wedge \mathbf{b} )
  /\mathbf{b}= \frac{\mathbf{a} \wedge \mathbf{b}}{| \mathbf{b} |^{2}}
  \mathbf{b}= \frac{\mathbf{a} \wedge \mathbf{b}}{\mathbf{b} \cdot \mathbf{b}}
  \mathbf{b}\\
  \mathbf{a}= ( \mathbf{a}\mathbf{b} ) /\mathbf{b}= ( \mathbf{a} \cdot
  \mathbf{b}+\mathbf{a} \wedge \mathbf{b} ) /\mathbf{b} & = &
  \mathcal{P}_{\mathbf{b}} ( \mathbf{a} ) +\mathcal{P}^{\bot}_{\mathbf{b}} (
  \mathbf{a} ) =\mathbf{a}^{||\mathbf{b}} +\mathbf{a}^{\bot \mathbf{b}}\end{array}

Associative, distributive algebraic properties of products

Algebraic properties of multivector products:

\begin{array}{rcl}
  ( \cdots A B ) C & = & A ( B C \cdots ) = \cdots A B C \cdots\\
  ( \cdots \wedge A \wedge B ) \wedge C & = & A \wedge ( B \wedge C \wedge
  \cdots ) = \cdots \wedge A \wedge B \wedge C \wedge \cdots\\
  A ( B+C+ \cdots ) & = & A B+A C+ \cdots\\
  ( \cdots +B+C ) A & = & \cdots +B A+C A\\
  A \wedge ( B+C+ \cdots ) & = & A \wedge B+A \wedge C+ \cdots\\
  ( A+B+ \cdots ) \wedge C & = & A \wedge C+B \wedge C+ \cdots\\
  A \cdot ( B+C+ \cdots ) & = & A \cdot B+A \cdot C+ \cdots\\
  ( A+B+ \cdots ) \cdot C & = & A \cdot C+B \cdot C+ \cdots\\
  A \times ( B+C+ \cdots ) & = & A \times B+A \times C+ \cdots\end{array}

Recursive formulas for the inner products of blades

These formulas, although not entirely simple, are very important in Clifford algebra, so we will try to elaborate on them and include examples. With mastery, these formulas can find frequent practical use in algebraic operations, making it easier to derive and understand many identities.

Consider an r-blade \mathbf{A}_r and an s-blade \mathbf{B}_s in a Clifford geometric algebra \mathcal{G}_n having n base vector units \mathbf{e}_1, \ldots, \mathbf{e}_k, \ldots, \mathbf{e}_n

\begin{array}{rcl}
  \mathbf{A}_r = \bigwedge_{i = 1}^{r \leq n} \mathbf{a}_i & = & \mathbf{a}_1
  \wedge \cdots \wedge \mathbf{a}_r\\
  \mathbf{B}_s = \bigwedge_{i = 1}^{s \leq n} \mathbf{b}_i & = & \mathbf{b}_1
  \wedge \cdots \wedge \mathbf{b}_s .\end{array}

Their inner product is defined as the grade | s - r | part of their geometric product

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s & = & \langle \mathbf{A}_r \mathbf{B}_s
  \rangle_{| s - r |} .\end{array}

The inner product is always a grade-reducing product. This definition of the inner product does not provide any immediately useful identities. We seek formulas for this inner product that gives useful identities.

The formula for the expansion of the geometric product of blades (EGPB) can be used to expand the inner product as

\begin{array}{rcl}
  r & \leq & s\\
  l & = & r\\
  \mathbf{A}_r \cdot \mathbf{B}_s & = & \langle \mathbf{A}_r \mathbf{B}_s
  \rangle_{s + r - 2 l}\\
  & = & \langle \mathbf{A}_r \mathbf{B}_s \rangle_{s - r}\end{array}

or

\begin{array}{rcl}
  r & \geq & s\\
  l & = & s\\
  \mathbf{A}_r \cdot \mathbf{B}_s & = & \langle \mathbf{A}_r \mathbf{B}_s
  \rangle_{r + s - 2 l}\\
  & = & \langle \mathbf{A}_r \mathbf{B}_s \rangle_{r - s} .\end{array}

For r \leq s and l = r, EGPB gives the expansion

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s & = & \end{array}
\begin{array}{rcl}
  \sum_{k = 1}^s (- 1)^{(s - 1) (k - 1)} (\mathbf{A}_r \cdot \mathbf{B}_{s
  (1)_k}) \mathbf{B}_{s (2)_k} &  & \end{array}

where \mathbf{B}_{s (1)_k} is the first partition of \mathbf{B}_s of grade l = r taken in the kth cyclic permutation (circular shift left) of the vectors in \mathbf{B}_s. The blade \mathbf{B}_{s (2)_k} is the kth second partition of grade s - r. If s is odd then the terms are all positive, and if s is even then the terms alternate in sign.

For r \geq s, EGPB gives the similar expansion

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s & = & \end{array}
\begin{array}{rcl}
  \sum_{j = 1}^r (- 1)^{(r - 1) (j - 1)} \mathbf{A}_{r (1)_j} (\mathbf{A}_{r
  (2)_j} \cdot \mathbf{B}_s) &  & \end{array}

where \mathbf{A}_{r (2)_j} is of grade l = s and \mathbf{A}_{r (1)_j} is grade r - s and are the partitions of the jth cyclic permutation of the vectors in the blade \mathbf{A}_r. Again, the summation terms are all positive sign if r is odd and have alternating signs if r is even.

In each term of the summations, the inner product of two l-blades can be evaluated as a determinant similar to a Gram determinant with sign factor (- 1)^{l (l - 1) / 2}, as shown in the section on the square of a blade.

The EGPB formula gives an immediate expansion result with no intermediate algebraic steps or identities. To gain more identities, we can run the single expansions above in multiple steps, by repeated applications of the EGPB as follows.

It can be shown (by properties of determinants or by other means) that for a + b \leq s

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s = (\mathbf{A}_a \wedge \mathbf{A}_b) \cdot
  \mathbf{B}_s & = & \mathbf{A}_a \cdot (\mathbf{A}_b \cdot \mathbf{B}_s)\\
  \mathbf{B}_s \cdot \mathbf{A}_r =\mathbf{B}_s \cdot (\mathbf{A}_b \wedge
  \mathbf{A}_a) & = & (\mathbf{B}_s \cdot \mathbf{A}_b) \cdot \mathbf{A}_a .\end{array}

These formulas are known as the inner product reduction formulas. By these formulas, we can write the inner product of two blades in many ways by choosing any a and b such that a + b = r. Recursively, b could be written as a sum, and the inner product could be further partitioned or broken into more steps and different identities. The formulas can also be used in reverse to combine nested inner product factors back into inner products of larger blades.

For b = 1, we have the inner product of a vector and a blade and applications of the EGPB formula such as

\begin{array}{rcl}
  1 & \leq & s\\
  l = r & = & 1\\
  \mathbf{a} \cdot \mathbf{B}_s & = & \langle \mathbf{a}\mathbf{B}_s
  \rangle_{s + r - 2 l}\\
  & = & \langle \mathbf{a}\mathbf{B}_s \rangle_{s - 1}\\
  & = & \sum_{k = 1}^s (- 1)^{(s - 1) (k - 1)} (\mathbf{a} \cdot
  \mathbf{B}_{s (1)_k}) \mathbf{B}_{s (2)_k}\\
  & = & \sum^s_{k = 1} (- 1)^{(k - 1)} (\mathbf{a} \cdot \mathbf{b}_k)
  [\mathbf{B}_s \backslash\mathbf{b}_k]\end{array}

and

\begin{array}{rcl}
  r & \geq & 1\\
  l = s & = & 1\\
  \mathbf{A}_r \cdot \mathbf{b} & = & \langle \mathbf{A}_r \mathbf{b}
  \rangle_{r + s - 2 l}\\
  & = & \langle \mathbf{A}_r \mathbf{b} \rangle_{r - 1}\\
  & = & \sum_{j = 1}^r (- 1)^{(r - 1) (j - 1)} \mathbf{A}_{r (1)_j}
  (\mathbf{A}_{r (2)_j} \cdot \mathbf{b})\\
  & = & \sum^r_{j = 1} (- 1)^{(r - j)} [\mathbf{A}_r \backslash\mathbf{a}_j]
  (\mathbf{a}_j \cdot \mathbf{b}) .\end{array}

The symbol \mathbf{B}_s \backslash\mathbf{b}_k denotes the blade \mathbf{B}_s with its kth vector \mathbf{b}_k removed, and is used in the simple formula that always has alternating signs on the summation terms, starting with positive on the side with the vector \mathbf{a} or \mathbf{b} going into the blade \mathbf{B}_s to the right or \mathbf{A}_r to the left, respectively. For example,

\begin{array}{rcl}
  \mathbf{B}_4 & = & \mathbf{b}_1 \wedge \mathbf{b}_2 \wedge \mathbf{b}_3
  \wedge \mathbf{b}_4\\
  \mathbf{B}_4 \backslash\mathbf{b}_3 & = & \mathbf{b}_1 \wedge \mathbf{b}_2
  \wedge \mathbf{b}_4\end{array}

with no partitioning and no cycling.

This subsection now concludes with several examples that further explain the notation and application of the formulas.

As an example of the partitioning and cycling notation, called Sweedler’s notation, used in the EGPB formula for the general case, we have

\begin{array}{rcl}
  \mathbf{A}_2 \cdot \mathbf{B}_3 & = & \langle \mathbf{A}_2 \mathbf{B}_3
  \rangle_{s + r - 2 l}\\
  r = l & = & 2\\
  s & = & 3\\
  \mathbf{B}_{3 (1)_1}, \mathbf{B}_{3 (2)_1} & = & \mathbf{b}_1 \wedge
  \mathbf{b}_2, \mathbf{b}_3\\
  \mathbf{B}_{3 (1)_2}, \mathbf{B}_{3 (2)_2} & = & \mathbf{b}_2 \wedge
  \mathbf{b}_3, \mathbf{b}_1\\
  \mathbf{B}_{3 (1)_3}, \mathbf{B}_{3 (2)_3} & = & \mathbf{b}_3 \wedge
  \mathbf{b}_1, \mathbf{b}_2\end{array}

where s = 3 is the grade, (1) and (2) indicate the partition number, and the small subscripted indices k = 1, 2, 3 select the partitions on the three cyclic shifts left in the summation formula.

If the factors are reversed, it looks like this

\begin{array}{rcl}
  \mathbf{A}_3 \cdot \mathbf{B}_2 & = & \langle \mathbf{A}_3 \mathbf{B}_2
  \rangle_{r + s - 2 l}\\
  s = l & = & 2\\
  r & = & 3\\
  \mathbf{A}_{3 (1)_1}, \mathbf{A}_{3 (2)_1} & = & \mathbf{a}_1, \mathbf{a}_2
  \wedge \mathbf{a}_3\\
  \mathbf{A}_{3 (1)_2}, \mathbf{A}_{3 (2)_2} & = & \mathbf{a}_2, \mathbf{a}_3
  \wedge \mathbf{a}_1\\
  \mathbf{A}_{3 (1)_3}, \mathbf{A}_{3 (2)_3} & = & \mathbf{a}_3, \mathbf{a}_1
  \wedge \mathbf{a}_2\end{array}

so that the partition of length l = 2 faces \mathbf{B}_2.

Example: Using the simple formula that always alternates signs, we can expand the product

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{B}_4 & = & + (\mathbf{a} \cdot \mathbf{b}_1)
  \mathbf{b}_2 \wedge \mathbf{b}_3 \wedge \mathbf{b}_4\\
  &  & - (\mathbf{a} \cdot \mathbf{b}_2) \mathbf{b}_1 \wedge \mathbf{b}_3
  \wedge \mathbf{b}_4\\
  &  & + (\mathbf{a} \cdot \mathbf{b}_3) \mathbf{b}_1 \wedge \mathbf{b}_2
  \wedge \mathbf{b}_4\\
  &  & - (\mathbf{a} \cdot \mathbf{b}_4) \mathbf{b}_1 \wedge \mathbf{b}_2
  \wedge \mathbf{b}_3 .\end{array}

Example: Using EGPB formula that only alternates signs when the blade has even grade, we can expand the same product, noting that s = 4 is even

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{B}_4 & = & + (\mathbf{a} \cdot \mathbf{b}_1)
  \mathbf{b}_2 \wedge \mathbf{b}_3 \wedge \mathbf{b}_4\\
  &  & - (\mathbf{a} \cdot \mathbf{b}_2) \mathbf{b}_3 \wedge \mathbf{b}_4
  \wedge \mathbf{b}_1\\
  &  & + (\mathbf{a} \cdot \mathbf{b}_3) \mathbf{b}_4 \wedge \mathbf{b}_1
  \wedge \mathbf{b}_2\\
  &  & - (\mathbf{a} \cdot \mathbf{b}_4) \mathbf{b}_1 \wedge \mathbf{b}_2
  \wedge \mathbf{b}_3 .\end{array}

The two results are in fact equal since two bivector reverses does not alter the sign of a blade.

We can also try with an odd blade, first by simple formula

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{B}_3 & = & + (\mathbf{a} \cdot \mathbf{b}_1)
  \mathbf{b}_2 \wedge \mathbf{b}_3\\
  &  & - (\mathbf{a} \cdot \mathbf{b}_2) \mathbf{b}_1 \wedge \mathbf{b}_3\\
  &  & + (\mathbf{a} \cdot \mathbf{b}_3) \mathbf{b}_1 \wedge \mathbf{b}_2\end{array}

and now by the EGPB formula (with k = 3 odd, the signs are always positive)

\begin{array}{rcl}
  \mathbf{a} \cdot \mathbf{B}_3 & = & + (\mathbf{a} \cdot \mathbf{b}_1)
  \mathbf{b}_2 \wedge \mathbf{b}_3\\
  &  & + (\mathbf{a} \cdot \mathbf{b}_2) \mathbf{b}_3 \wedge \mathbf{b}_1\\
  &  & + (\mathbf{a} \cdot \mathbf{b}_3) \mathbf{b}_1 \wedge \mathbf{b}_2 .\end{array}

Again, the two results are equal since a bivector reverse makes a negative.

Example: Use the EGPB formula to expand

\begin{array}{rcl}
  \mathbf{A}_2 \cdot \mathbf{B}_3 & = & + (\mathbf{a}_1 \wedge \mathbf{a}_2)
  \cdot (\mathbf{b}_1 \wedge \mathbf{b}_2) \mathbf{b}_3\\
  &  & + (\mathbf{a}_1 \wedge \mathbf{a}_2) \cdot (\mathbf{b}_2 \wedge
  \mathbf{b}_3) \mathbf{b}_1\\
  &  & + (\mathbf{a}_1 \wedge \mathbf{a}_2) \cdot (\mathbf{b}_3 \wedge
  \mathbf{b}_1) \mathbf{b}_2 .\end{array}

Example: By inner product reduction, use repeatedly the simplified formula for inner product of a vector and blade to expand

\begin{array}{rcl}
  \mathbf{A}_2 \cdot \mathbf{B}_3 & = & \mathbf{a}_1 \cdot (\mathbf{a}_2 \cdot
  \mathbf{B}_3)\\
  & = & +\mathbf{a}_1 \cdot ((\mathbf{a}_2 \cdot \mathbf{b}_1) \mathbf{b}_2
  \wedge \mathbf{b}_3)\\
  &  & -\mathbf{a}_1 \cdot ((\mathbf{a}_2 \cdot \mathbf{b}_2) \mathbf{b}_1
  \wedge \mathbf{b}_3)\\
  &  & +\mathbf{a}_1 \cdot ((\mathbf{a}_2 \cdot \mathbf{b}_3) \mathbf{b}_1
  \wedge \mathbf{b}_2)\\
  & = & + (\mathbf{a}_2 \cdot \mathbf{b}_1) (\mathbf{a}_1 \cdot \mathbf{b}_2)
  \mathbf{b}_3 - (\mathbf{a}_2 \cdot \mathbf{b}_1) (\mathbf{a}_1 \cdot
  \mathbf{b}_3) \mathbf{b}_2\\
  &  & - (\mathbf{a}_2 \cdot \mathbf{b}_2) (\mathbf{a}_1 \cdot \mathbf{b}_1)
  \mathbf{b}_3 + (\mathbf{a}_2 \cdot \mathbf{b}_2) (\mathbf{a}_1 \cdot
  \mathbf{b}_3) \mathbf{b}_1\\
  &  & + (\mathbf{a}_2 \cdot \mathbf{b}_3) (\mathbf{a}_1 \cdot \mathbf{b}_1)
  \mathbf{b}_2 - (\mathbf{a}_2 \cdot \mathbf{b}_3) (\mathbf{a}_1 \cdot
  \mathbf{b}_2) \mathbf{b}_1 .\end{array}

It can be checked that these are equal, but the repeated use of the simple formula reduced the terms to inner products of vectors. The check can be done using the formula

\begin{array}{rcl}
  \mathbf{A}_2 \cdot \mathbf{B}_2 & = & (- 1) \left|\begin{array}{cc}
    (\mathbf{a}_1 \cdot \mathbf{b}_1) & (\mathbf{a}_1 \cdot \mathbf{b}_2)\\
    (\mathbf{a}_2 \cdot \mathbf{b}_1) & (\mathbf{a}_2 \cdot \mathbf{b}_2)
  \end{array}\right| .\end{array}

Example: Use the EGPB formula to expand

\begin{array}{rcl}
  \mathbf{A}_3 \cdot \mathbf{B}_2 & = & +\mathbf{a}_1 (\mathbf{a}_2 \wedge
  \mathbf{a}_3) \cdot (\mathbf{b}_1 \wedge \mathbf{b}_2)\\
  &  & +\mathbf{a}_2 (\mathbf{a}_3 \wedge \mathbf{a}_1) \cdot (\mathbf{b}_1
  \wedge \mathbf{b}_2)\\
  &  & +\mathbf{a}_3 (\mathbf{a}_1 \wedge \mathbf{a}_2) \cdot (\mathbf{b}_1
  \wedge \mathbf{b}_2) .\end{array}

Example: Use simple formula to expand

\begin{array}{rcl}
  \mathbf{A}_3 \cdot \mathbf{b} & = & +\mathbf{a}_1 \wedge \mathbf{a}_2
  (\mathbf{a}_3 \cdot \mathbf{b})\\
  &  & -\mathbf{a}_1 \wedge \mathbf{a}_3 (\mathbf{a}_2 \cdot \mathbf{b})\\
  &  & +\mathbf{a}_2 \wedge \mathbf{a}_3 (\mathbf{a}_1 \cdot \mathbf{b}) .\end{array}

Example: Use EGPB formula to expand (j = 3 odd, all positive signs)

\begin{array}{rcl}
  \mathbf{A}_3 \cdot \mathbf{b} & = & +\mathbf{a}_1 \wedge \mathbf{a}_2
  (\mathbf{a}_3 \cdot \mathbf{b})\\
  &  & +\mathbf{a}_2 \wedge \mathbf{a}_3 (\mathbf{a}_1 \cdot \mathbf{b})\\
  &  & +\mathbf{a}_3 \wedge \mathbf{a}_1 (\mathbf{a}_2 \cdot \mathbf{b}) .\end{array}

Expansion of the geometric product of blades

The expansion of the geometric product of blades[7](264) is more complicated than the expansion of the inner product of blades.

The following formula expands the geometric product of blades and takes a certain graded part of it.

\begin{array}{rcl}
  \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{r+s-2l} & = & \sum_{( r-l,l )
  \vdash \mathbf{A}_{r} , ( l,s-l ) \vdash \mathbf{B}_{s}} \langle
  \mathbf{A}_{r ( 2 )} \mathbf{B}_{s ( 1 )} \rangle  \mathbf{A}_{r ( 1 )}
  \wedge \mathbf{B}_{s ( 2 )}\end{array}

The notation used in the summation is called Sweedler’s notation[7](30).

The selectable grade of the expansion is by steps of 2, by 2l, since the products of base units either square when equal or form a bivector when different. Any one of the possible grades in the geometric product of two blades can be selected by choosing a value for l. For an r-blade and s-blade, the lowest possible grade in their geometric product is | r-s |, the highest possible grade is ( r+s ), and other possible grades are between in steps of 2 grades. Setting l=0 makes an outer product. Setting l= ( r+s- | r-s | ) /2 makes an inner product, and therefore this general expansion formula provides an alternative to using the recursive formula for the inner product of blades.

In a geometric algebra \mathcal{G}_{n} with n base units \mathbf{e}_{1} , \cdots ,\mathbf{e}_{n}, if r=n and/or s=n then \mathbf{A}_{n} = \alpha \mathbf{I}_{n} and/or \mathbf{B}_{n} = \beta \mathbf{I}_{n} are pseudoscalars in \mathcal{G}_{n}. The geometric product of any blade with any pseudoscalar of the algebra will produce a blade in the dual space having grade | r-s |. Therefore, in this case, the geometric product \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{r+s-2l} is always the inner product \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{| r-s |} =\mathbf{A}_{r} \cdot \mathbf{B}_{s}, and all the other grades that could be chosen by setting l will result in zero. In summary, \mathbf{A}_{r} \beta \mathbf{I}_{n} = \beta \mathbf{A}_{r} \cdot \mathbf{I}_{n}, \alpha \mathbf{I}_{n} \mathbf{B}_{s} = \alpha \mathbf{I}_{n} \cdot \mathbf{B}_{s}, and \mathbf{A}_{r} \cdot \mathbf{I}_{n} = ( -1 )^{r ( n-1 )} \mathbf{I}_{n} \cdot \mathbf{A}_{r}, where for n=3 the pseudoscalars commute.

Blade \mathbf{A}_{r} is partitioned ( \vdash ) into a 2-partition of shape ( r-l,l ), and blade \mathbf{B}_{s} is partitioned into a 2-partition of shape ( l,s-l ). The first number in a partition shape is the width of a sub-blade that is referenced as a partition number ( 1 ), and the second number in a shape is the width of a sub-blade that is referenced as a partition number ( 2 ). The partition ( 1 ) of a partitioning of \mathbf{A}_{r} is denoted \mathbf{A}_{r ( 1 )}, and the partition ( 2 ) is denoted \mathbf{A}_{r ( 2 )}.

The shaped partitioning of each blade is taken on each cyclic permutation of the blade. The cyclic permutations of a blade are formed by anti-commutatively reversing bivectors within the blade until the blade is in different cyclic orders. For an r-blade, there are r cyclic permutations of the blade by shifting left, or rotating counter-clockwise, the vectors in the blade. As an example, the cyclic permutations of a 4-blade \mathbf{A}_{4} are

\begin{array}{rcl}
  ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} )^{\ll 0} & = & \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge
  \mathbf{a}_{3} \wedge \mathbf{a}_{4}\\
  ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} )^{\ll 1} & = & \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} \wedge \mathbf{a}_{1}\\
  ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} )^{\ll 2} & = & \mathbf{a}_{3} \wedge \mathbf{a}_{4} \wedge
  \mathbf{a}_{1} \wedge \mathbf{a}_{2}\\
  ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} )^{\ll 3} & = & \mathbf{a}_{4} \wedge \mathbf{a}_{1} \wedge
  \mathbf{a}_{2} \wedge \mathbf{a}_{3} .\end{array}

For each of these cyclic permutations we cut partitions of the specified shape. As an example, if the partition shape is ( 2,2 ) \vdash \mathbf{A}_{4} then we cut these j=1 \ldots 4 partitionings

\begin{array}{rcl}
  ( 2,2 )_{1} \vdash \mathbf{A}_{4} & = & \{ \mathbf{a}_{1} \wedge
  \mathbf{a}_{2} ,\mathbf{a}_{3} \wedge \mathbf{a}_{4} \} = \{ \mathbf{A}_{4 (
  1 )_{1}} ,\mathbf{A}_{4 ( 2 )_{1}} \}\\
  ( 2,2 )_{2} \vdash \mathbf{A}_{4} & = & \{ \mathbf{a}_{2} \wedge
  \mathbf{a}_{3} ,\mathbf{a}_{4} \wedge \mathbf{a}_{1} \} = \{ \mathbf{A}_{4 (
  1 )_{2}} ,\mathbf{A}_{4 ( 2 )_{2}} \}\\
  ( 2,2 )_{3} \vdash \mathbf{A}_{4} & = & \{ \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} ,\mathbf{a}_{1} \wedge \mathbf{a}_{2} \} = \{ \mathbf{A}_{4 (
  1 )_{3}} ,\mathbf{A}_{4 ( 2 )_{3}} \}\\
  ( 2,2 )_{4} \vdash \mathbf{A}_{4} & = & \{ \mathbf{a}_{4} \wedge
  \mathbf{a}_{1} ,\mathbf{a}_{2} \wedge \mathbf{a}_{3} \} = \{ \mathbf{A}_{4 (
  1 )_{4}} ,\mathbf{A}_{4 ( 2 )_{4}} \} .\end{array}

The partitionings of \mathbf{B}_{s}, per cyclic permutation, are similar and use the index k=1 \ldots s on the partitionings, while the partitionings of \mathbf{A}_{r} use the index j=1 \ldots r.

As a special case, when the width of a partition is zero then that partition is set to 1 and the blade has only that one partitioning and no permutations. This means that l equals the width of the entire blade. An example is when r=l=2 and s=3, where the partitionings are

\begin{array}{rcl}
  ( 0,2 )_{1} \vdash \mathbf{A}_{2} & = & \{ 1,\mathbf{a}_{1} \wedge
  \mathbf{a}_{2} \} = \{ \mathbf{A}_{2 ( 1 )_{1}} ,\mathbf{A}_{2 ( 2 )_{1}}
  \}\\
  ( 2,1 )_{k} \vdash \mathbf{B}_{3} & \in & \{ \{ \mathbf{b}_{1} \wedge
  \mathbf{b}_{2} ,\mathbf{b}_{3} \}_{k=1} , \{ \mathbf{b}_{2} \wedge
  \mathbf{b}_{3} ,\mathbf{b}_{1} \}_{k=2} , \{ \mathbf{b}_{3} \wedge
  \mathbf{b}_{1} ,\mathbf{b}_{2} \}_{k=3} \}\end{array}

and the expansion produces a vector. An outer product with 1 does nothing to the other factor.

The 1 or r partitionings of \mathbf{A}_{r} and the 1 or s partitionings of \mathbf{B}_{s} each have a sign of permutation

\begin{array}{rcl}
  \mathrm{sgn} ( \mathbf{A}_{r ( 1 )_{j}} \wedge \mathbf{A}_{r ( 2 )_{j}} ) &
  = & ( -1 )^{( r-1 ) ( j-1 )}\\
  \mathrm{sgn} ( \mathbf{B}_{s ( 1 )_{k}} \wedge \mathbf{B}_{s ( 2 )_{k}} ) &
  = & ( -1 )^{( s-1 ) ( k-1 )}\end{array}

relative to the original blade due to the number of anti-commutative bivector reverses involved in each cyclic permutation. These two sign factors must be multiplied into the summation formula and evaluated for each of the j \times k summation terms generated or expanded. They can be multiplied into partition \mathbf{A}_{r ( 1 )} in each partitioning so that it carries these signs of permutation into the summation. Multiplying these two factors together we can write

\begin{array}{rcl}
  \mathrm{sgn} ( r,s,j,k ) & = & ( -1 )^{( r-1 ) ( j-1 ) + ( s-1 ) ( k-1 )}\end{array}

as the sign for the ( j,k )th element of the summation. This sign formula could simply be multiplied as another factor in the summation formula to make it more explicit, but it is implied by the notation that it be carried into the summation by multiplication with a partition value.

If r_{-} denotes an odd grade and r_{+} is an even grade, and similarly for s_{-} and s_{+}, then the four different combinations of even and/or odd grades of r and s give the following four possible sign formulas.

\begin{array}{rcl}
  \mathrm{sgn} ( r_{-} ,s_{-} ,j,k ) & = & ( -1 )^{( r_{-} -1 ) ( j-1 ) + (
  s_{-} -1 ) ( k-1 )}\\
  & = & ( -1 )^{2r' ( j-1 ) +2s' ( k-1 )}\\
  & = & ( -1 )^{2 ( r' ( j-1 ) +s' ( k-1 ) )}\\
  & = & 1\end{array}
\begin{array}{rcl}
  \mathrm{sgn} ( r_{+} ,s_{+} ,j,k ) & = & ( -1 )^{( r_{+} -1 ) ( j-1 ) + (
  s_{+} -1 ) ( k-1 )}\\
  & = & ( -1 )^{( 2r' -1 ) ( j-1 ) + ( 2s' -1 ) ( k-1 )}\\
  & = & ( -1 )^{2 ( r' ( j-1 ) +s' ( k-1 ) ) - ( j+k-2 )}\\
  & = & ( -1 )^{2- ( j+k )}\\
  & = & ( -1 )^{j+k}\end{array}
\begin{array}{rcl}
  \mathrm{sgn} ( r_{+} ,s_{-} ,j,k ) & = & ( -1 )^{( r_{+} -1 ) ( j-1 ) + (
  s_{-} -1 ) ( k-1 )}\\
  & = & ( -1 )^{( 2r' -1 ) ( j-1 ) +2s' ( k-1 )}\\
  & = & ( -1 )^{2 ( r' ( j-1 ) +s' ( k-1 ) ) - ( j-1 )}\\
  & = & ( -1 )^{j-1}\end{array}
\begin{array}{rcl}
  \mathrm{sgn} ( r_{-} ,s_{+} ,j,k ) & = & ( -1 )^{( r_{-} -1 ) ( j-1 ) + (
  s_{+} -1 ) ( k-1 )}\\
  & = & ( -1 )^{2r' ( j-1 ) + ( 2s' -1 ) ( k-1 )}\\
  & = & ( -1 )^{2 ( r' ( j-1 ) +s' ( k-1 ) ) - ( k-1 )}\\
  & = & ( -1 )^{k-1}\end{array}

We see that, when \mathbf{A}_{r} and \mathbf{B}_{s} are both odd grades, then the sign is always positive and signs can be ignored. When the grades are both even, the signs alternate according to a Laplace expansion signs pattern, the same as the sign of a cofactor. When \mathbf{A}_{r} is even and \mathbf{B}_{s} is odd, then for every odd j row the signs are all positive, and for every even j row the signs are all negative. When \mathbf{B}_{s} is even and \mathbf{A}_{r } is odd, then for every odd k column the signs are all positive, and for every even k column the signs are all negative. Note that row j and column k count from 1 and the first summation term, or row of terms, or column of terms is always positive, depending on the sign formula that matches the parities of the grades. Therefore, there is a simple pattern of the signs on summation terms depending on the parity of the grades if we follow the technique of cutting partitions on the cyclic permutations of the blades.

We can now demonstrate by some examples, to see that the formulas work as hoped.

For example, if r=3 and l=2, the partitionings of \mathbf{A}_{r} are

\begin{array}{rcl}
  ( 1,2 )_{j} \vdash \mathbf{A}_{3} & \in & \{ \{ \mathbf{a}_{1}
  ,\mathbf{a}_{2} \wedge \mathbf{a}_{3} \}_{j=1} , \{ \mathbf{a}_{2}
  ,\mathbf{a}_{3} \wedge \mathbf{a}_{1} \}_{j=2} , \{ \mathbf{a}_{3}
  ,\mathbf{a}_{1} \wedge \mathbf{a}_{2} \}_{j=3} \}\\
  \mathbf{A}_{3 ( 1 )_{j}} & \in & \{ \{ \mathbf{a}_{1} \}_{j=1} , \{
  \mathbf{a}_{2} \}_{j=2} , \{ \mathbf{a}_{3} \}_{j=3} \}\\
  \mathbf{A}_{3 ( 2 )_{j}} & \in & \{ \{ \mathbf{a}_{2} \wedge \mathbf{a}_{3}
  \}_{j=1} , \{ \mathbf{a}_{3} \wedge \mathbf{a}_{1} \}_{j=2} , \{
  \mathbf{a}_{1} \wedge \mathbf{a}_{2} \}_{j=3} \} .\end{array}

For s=3 and l=2, the partitionings of \mathbf{B}_{s} are

\begin{array}{rcl}
  ( 2,1 )_{k} \vdash \mathbf{B}_{3} & \in & \{ \{ \mathbf{b}_{1} \wedge
  \mathbf{b}_{2} ,\mathbf{b}_{3} \}_{k=1} , \{ \mathbf{b}_{2} \wedge
  \mathbf{b}_{3} ,\mathbf{b}_{1} \}_{k=2} , \{ \mathbf{b}_{3} \wedge
  \mathbf{b}_{1} ,\mathbf{b}_{2} \}_{k=3} \}\\
  \mathbf{B}_{3 ( 1 )_{k}} & \in & \{ \{ \mathbf{b}_{1} \wedge \mathbf{b}_{2}
  \}_{k=1} , \{ \mathbf{b}_{2} \wedge \mathbf{b}_{3} \}_{k=2} , \{
  \mathbf{b}_{3} \wedge \mathbf{b}_{1} \}_{k=3} \}\\
  \mathbf{B}_{3 ( 2 )_{k}} & \in & \{ \{ \mathbf{b}_{3} \}_{k=1} , \{
  \mathbf{b}_{1} \}_{k=2} , \{ \mathbf{b}_{2} \}_{k=3} \} .\end{array}

The summation holds the first partitioning of \mathbf{A}_{r}, \mathbf{A}_{3 ( 1 )_{1}} =\mathbf{a}_{1} and \mathbf{A}_{3 ( 2 )_{1}} =\mathbf{a}_{2} \wedge \mathbf{a}_{3}, and applies it with each of the three different partitionings of \mathbf{B}_{3}. This is repeated for the two other partitionings of \mathbf{A}_{3}, where each is also applied with each of the three partitionings of \mathbf{B}_{3}. For this example, the summation gives a sum of nine terms. Since both blades are odd, the sign formula is always 1.

This example expansion, with r=s=3 and l=2, produces a ( r+s-2l )-blade or 2-blade

\begin{array}{rcl}
  \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{r+s-2l} & = & \langle
  \mathbf{A}_{3} \mathbf{B}_{3} \rangle_{2} .\end{array}

Since \mathbf{A}_{r ( 2 )} and \mathbf{B}_{s ( 1 )} are the same grade l, their grade-0 scalar product \langle \mathbf{A}_{r ( 2 )} \mathbf{B}_{s ( 1 )} \rangle is their inner product \mathbf{A}_{r ( 2 )} \cdot \mathbf{B}_{s ( 1 )}.

This example expansion is

\begin{array}{rcl}
  \langle \mathbf{A}_{3} \mathbf{B}_{3} \rangle_{2} & = & \sum^{3,3}_{j=1,k=1}
  ( \mathbf{A}_{3 ( 2 )_{j}} \cdot \mathbf{B}_{3 ( 1 )_{k}} ) \mathbf{A}_{3 (
  1 )_{j}} \wedge \mathbf{B}_{3 ( 2 )_{k}} =\end{array}
\begin{array}{rcl}
  &  & \begin{array}{l}
    ( \mathbf{a}_{2} \wedge \mathbf{a}_{3} ) \cdot ( \mathbf{b}_{1} \wedge
    \mathbf{b}_{2} ) \mathbf{a}_{1} \wedge \mathbf{b}_{3} + ( \mathbf{a}_{2}
    \wedge \mathbf{a}_{3} ) \cdot ( \mathbf{b}_{2} \wedge \mathbf{b}_{3} )
    \mathbf{a}_{1} \wedge \mathbf{b}_{1} + ( \mathbf{a}_{2} \wedge
    \mathbf{a}_{3} ) \cdot ( \mathbf{b}_{3} \wedge \mathbf{b}_{1} )
    \mathbf{a}_{1} \wedge \mathbf{b}_{2} +\\
    ( \mathbf{a}_{3} \wedge \mathbf{a}_{1} ) \cdot ( \mathbf{b}_{1} \wedge
    \mathbf{b}_{2} ) \mathbf{a}_{2} \wedge \mathbf{b}_{3} + ( \mathbf{a}_{3}
    \wedge \mathbf{a}_{1} ) \cdot ( \mathbf{b}_{2} \wedge \mathbf{b}_{3} )
    \mathbf{a}_{2} \wedge \mathbf{b}_{1} + ( \mathbf{a}_{3} \wedge
    \mathbf{a}_{1} ) \cdot ( \mathbf{b}_{3} \wedge \mathbf{b}_{1} )
    \mathbf{a}_{2} \wedge \mathbf{b}_{2} +\\
    ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} ) \cdot ( \mathbf{b}_{1} \wedge
    \mathbf{b}_{2} ) \mathbf{a}_{3} \wedge \mathbf{b}_{3} + ( \mathbf{a}_{1}
    \wedge \mathbf{a}_{2} ) \cdot ( \mathbf{b}_{2} \wedge \mathbf{b}_{3} )
    \mathbf{a}_{3} \wedge \mathbf{b}_{1} + ( \mathbf{a}_{1} \wedge
    \mathbf{a}_{2} ) \cdot ( \mathbf{b}_{3} \wedge \mathbf{b}_{1} )
    \mathbf{a}_{3} \wedge \mathbf{b}_{2} .
  \end{array}\end{array}

As another example, consider the geometric product of bivectors \mathbf{A}_{2} \mathbf{B}_{2}. We know that bivectors in \mathcal{G}_{3} represent pseudovectors or quaternion vectors where

\begin{array}{rcl}
  \mathbf{A}_{2} \mathbf{B}_{2} & = & \mathbf{A}_{2} \cdot \mathbf{B}_{2}
  +\mathbf{A}_{2} \times \mathbf{B}_{2}\\
  \langle \mathbf{A}_{2} \mathbf{B}_{2} \rangle_{2} & = & \mathbf{A}_{2}
  \times \mathbf{B}_{2} .\end{array}

For r=s=2 and l=1, the partitionings are

\begin{array}{rcl}
  ( 1,1 )_{j} \vdash \mathbf{A}_{2} & \in & \{ \{ \mathbf{a}_{1}
  ,\mathbf{a}_{2} \}_{j=1} , \{ \mathbf{a}_{2} ,\mathbf{a}_{1} \}_{j=2} \}\\
  ( 1,1 )_{k} \vdash \mathbf{B}_{2} & \in & \{ \{ \mathbf{b}_{1}
  ,\mathbf{b}_{2} \}_{k=1} , \{ \mathbf{b}_{2} ,\mathbf{b}_{1} \}_{k=2} \} .\end{array}

Since the two blades are even, we can use the sign formula

\begin{array}{rcl}
  \mathrm{sgn} ( j,k ) & = & ( -1 )^{( j+k )} .\end{array}

The expansion formula for r=s=2 and l=1 gives

\begin{array}{rcl}
  \langle \mathbf{A}_{2} \mathbf{B}_{2} \rangle_{2} & = & \sum^{2,2}_{j=1,k=1}
  ( -1 )^{( j+k )} ( \mathbf{A}_{2 ( 2 )_{j}} \cdot \mathbf{B}_{2 ( 1 )_{k}} )
  \mathbf{A}_{2 ( 1 )_{j}} \wedge \mathbf{B}_{2 ( 2 )_{k}}\end{array}
\begin{array}{rcl}
  & = & ( -1 )^{( 1+1 )} ( \mathbf{a}_{2} \cdot \mathbf{b}_{1} )
  \mathbf{a}_{1} \wedge \mathbf{b}_{2} + ( -1 )^{( 1+2 )} ( \mathbf{a}_{2}
  \cdot \mathbf{b}_{2} ) \mathbf{a}_{1} \wedge \mathbf{b}_{1} +\\
  &  & ( -1 )^{( 2+1 )} ( \mathbf{a}_{1} \cdot \mathbf{b}_{1} )
  \mathbf{a}_{2} \wedge \mathbf{b}_{2} + ( -1 )^{( 2+2 )} ( \mathbf{a}_{1}
  \cdot \mathbf{b}_{2} ) \mathbf{a}_{2} \wedge \mathbf{b}_{1}\\
  & = & ( \mathbf{a}_{2} \cdot \mathbf{b}_{1} ) \mathbf{a}_{1} \wedge
  \mathbf{b}_{2} - ( \mathbf{a}_{2} \cdot \mathbf{b}_{2} ) \mathbf{a}_{1}
  \wedge \mathbf{b}_{1} - ( \mathbf{a}_{1} \cdot \mathbf{b}_{1} )
  \mathbf{a}_{2} \wedge \mathbf{b}_{2} + ( \mathbf{a}_{1} \cdot \mathbf{b}_{2}
  ) \mathbf{a}_{2} \wedge \mathbf{b}_{1} .\end{array}

Taking l=2 and then also using the recursive formula for the expansion of inner products of blades gives

\begin{array}{rcl}
  \langle \mathbf{A}_{2} \mathbf{B}_{2} \rangle &  & \end{array}
\begin{array}{rcl}
  & = & ( \mathbf{a}_{1} \wedge \mathbf{a}_{2} ) \cdot ( \mathbf{b}_{1}
  \wedge \mathbf{b}_{2} )\\
  & = & \mathbf{a}_{1} \cdot ( ( \mathbf{a}_{2} \cdot \mathbf{b}_{1} )
  \mathbf{b}_{2} - ( \mathbf{a}_{2} \cdot \mathbf{b}_{2} ) \mathbf{b}_{1} )\\
  & = & ( \mathbf{a}_{2} \cdot \mathbf{b}_{1} ) ( \mathbf{a}_{1} \cdot
  \mathbf{b}_{2} ) - ( \mathbf{a}_{2} \cdot \mathbf{b}_{2} ) ( \mathbf{a}_{1}
  \cdot \mathbf{b}_{1} ) .\end{array}

We can test these examples using the free software SymPy, for symbolic mathematics using python, which includes a Geometric Algebra Module and interactive calculator console isympy.

As a test sample for expanding the geometric product of bivectors, try the following.

\begin{array}{rcl}
  \mathbf{a}_{1} & = & 3\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}\\
  \mathbf{a}_{2} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}\\
  \mathbf{b}_{1} & = & 9\mathbf{e}_{1} +2\mathbf{e}_{2} +3\mathbf{e}_{3}\\
  \mathbf{b}_{2} & = & 6\mathbf{e}_{1} +5\mathbf{e}_{2} +8\mathbf{e}_{3}\\
  \mathbf{A}_{2} & = & \mathbf{a}_{1} \wedge \mathbf{a}_{2}\\
  \mathbf{B}_{2} & = & \mathbf{b}_{1} \wedge \mathbf{b}_{2}\end{array}
$isympy
>>> from sympy.galgebra.ga import *
>>> (e1,e2,e3) = MV.setup('e*1|2|3',metric='[1,1,1]')
>>> (a1,a2) = symbols('a1 a2')
>>> (b1,b2) = symbols('b1 b2')
>>> a1 = 3*e1 + 4*e2 + 5*e3
>>> a2 = 2*e1 + 4*e2 + 5*e3
>>> b1 = 9*e1 + 2*e2 + 3*e3
>>> b2 = 6*e1 + 5*e2 + 8*e3
>>> (A,B) = symbols('A B')
>>> A = a1^a2
>>> B = b1^b2
>>> A|B
-402
>>> (a2|b1)*(a1|b2)-(a2|b2)*(a1|b1)
-402
>>> Com(A,B)
-5*e_1^e_2 + 4*e_1^e_3 - 51*e_2^e_3
>>> Rational(1,2)*(A*B-B*A)
-5*e_1^e_2 + 4*e_1^e_3 - 51*e_2^e_3
>>> (a2|b1)*(a1^b2)-(a2|b2)*(a1^b1)-(a1|b1)*(a2^b2)+(a1|b2)*(a2^b1)
-5*e_1^e_2 + 4*e_1^e_3 - 51*e_2^e_3

To test the expansion of the geometric product of two 3-blades, try the following.

\begin{array}{rcl}
  \mathbf{a}_{1} & = & 3\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}
  +2\mathbf{e}_{4}\\
  \mathbf{a}_{2} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}
  +3\mathbf{e}_{4}\\
  \mathbf{a}_{3} & = & 9\mathbf{e}_{1} +6\mathbf{e}_{2} +9\mathbf{e}_{3}
  +4\mathbf{e}_{4}\\
  \mathbf{b}_{1} & = & 9\mathbf{e}_{1} +2\mathbf{e}_{2} +3\mathbf{e}_{3}
  +5\mathbf{e}_{4}\\
  \mathbf{b}_{2} & = & 6\mathbf{e}_{1} +5\mathbf{e}_{2} +8\mathbf{e}_{3}
  +6\mathbf{e}_{4}\\
  \mathbf{b}_{3} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +7\mathbf{e}_{3}
  +7\mathbf{e}_{4}\\
  \mathbf{A}_{3} & = & \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge
  \mathbf{a}_{3}\\
  \mathbf{B}_{3} & = & \mathbf{b}_{1} \wedge \mathbf{b}_{2} \wedge
  \mathbf{b}_{3}\end{array}
$isympy
>>> from sympy.galgebra.ga import *
>>> (e1,e2,e3,e4) = MV.setup('e*1|2|3|4',metric='[1,1,1,1]')
>>> (a1,a2,a3) = symbols('a1 a2 a3')
>>> (b1,b2,b3) = symbols('b1 b2 b3')
>>> a1 = 3*e1 + 4*e2 + 5*e3 + 2*e4
>>> a2 = 2*e1 + 4*e2 + 5*e3 + 3*e4
>>> a3 = 9*e1 + 6*e2 + 9*e3 + 4*e4
>>> b1 = 9*e1 + 2*e2 + 3*e3 + 5*e4
>>> b2 = 6*e1 + 5*e2 + 8*e3 + 6*e4
>>> b3 = 2*e1 + 4*e2 + 7*e3 + 7*e4
>>> (A,B) = symbols('A B')
>>> A = a1^a2^a3
>>> B = b1^b2^b3
>>> (A*B).grade(2)
-1196*e_1^e_2 + 874*e_1^e_3 - 162*e_1^e_4 -
 1472*e_2^e_3 + 656*e_2^e_4 - 280*e_3^e_4
>>> ((a2^a3)|(b1^b2))*(a1^b3) + \
... ((a2^a3)|(b2^b3))*(a1^b1) + \
... ((a2^a3)|(b3^b1))*(a1^b2) + \
... ((a3^a1)|(b1^b2))*(a2^b3) + \
... ((a3^a1)|(b2^b3))*(a2^b1) + \
... ((a3^a1)|(b3^b1))*(a2^b2) + \
... ((a1^a2)|(b1^b2))*(a3^b3) + \
... ((a1^a2)|(b2^b3))*(a3^b1) + \
... ((a1^a2)|(b3^b1))*(a3^b2)
-1196*e_1^e_2 + 874*e_1^e_3 - 162*e_1^e_4 -
 1472*e_2^e_3 + 656*e_2^e_4 - 280*e_3^e_4

The space was increased to four dimensions or else a product with any 3-blade pseudoscalar would result in a dual. In this case, the result would be a scalar. By going to four dimensions, the pseudoscalar is a 4-blade and the product of 3-blades gives a part of grade-2.

For an example of mixed grades, we can expand the geometric product of a 2-blade \mathbf{A}_{2} and a 3-blade \mathbf{B}_{3} to take the 3-vector part. To avoid \mathbf{B}_{3} from being a pseudoscalar, a base space of four dimensions is used again. For r=2, s=3, and l=1, the partitionings are

\begin{array}{rcl}
  ( 1,1 )_{j} \vdash \mathbf{A}_{2} & \in & \{ \{ \mathbf{a}_{1}
  ,\mathbf{a}_{2} \}_{j=1} , \{ \mathbf{a}_{2} ,\mathbf{a}_{1} \}_{j=2} \}\\
  ( 1,2 )_{k} \vdash \mathbf{B}_{3} & \in & \{ \{ \mathbf{b}_{1}
  ,\mathbf{b}_{2} \wedge \mathbf{b}_{3} \}_{k=1} , \{ \mathbf{b}_{2}
  ,\mathbf{b}_{3} \wedge \mathbf{b}_{1} \}_{k=2} , \{ \mathbf{b}_{3}
  ,\mathbf{b}_{1} \wedge \mathbf{b}_{2} \}_{k=3} \} .\end{array}

Since r is even and s is odd, we can use the sign formula

\begin{array}{rcl}
  \mathrm{sgn} ( j,k ) & = & ( -1 )^{( j-1 )}\\
  & = & \begin{array}{|l|l|l|l|}
    \hline
    \mathrm{sgn} ( j,k ) & 1 & 2 & 3\\
    \hline
    1 & +1 & +1 & +1\\
    \hline
    2 & -1 & -1 & -1\\
    \hline
  \end{array} .\end{array}

The expansion is

\begin{array}{rcl}
  \langle \mathbf{A}_{2} \mathbf{B}_{3} \rangle_{3} & = & \sum^{2,3}_{j=1,k=1}
  ( -1 )^{( j-1 )} ( \mathbf{A}_{2 ( 2 )_{j}} \cdot \mathbf{B}_{3 ( 1 )_{k}} )
  \mathbf{A}_{2 ( 1 )_{j}} \wedge \mathbf{B}_{3 ( 2 )_{k}} =\end{array}
\begin{array}{rcl}
  &  & ( \mathbf{a}_{2} \cdot \mathbf{b}_{1} ) \mathbf{a}_{1} \wedge
  \mathbf{b}_{2} \wedge \mathbf{b}_{3} + ( \mathbf{a}_{2} \cdot \mathbf{b}_{2}
  ) \mathbf{a}_{1} \wedge \mathbf{b}_{3} \wedge \mathbf{b}_{1} + (
  \mathbf{a}_{2} \cdot \mathbf{b}_{3} ) \mathbf{a}_{1} \wedge \mathbf{b}_{1}
  \wedge \mathbf{b}_{2}\\
  &  & - ( \mathbf{a}_{1} \cdot \mathbf{b}_{1} ) \mathbf{a}_{2} \wedge
  \mathbf{b}_{2} \wedge \mathbf{b}_{3} - ( \mathbf{a}_{1} \cdot \mathbf{b}_{2}
  ) \mathbf{a}_{2} \wedge \mathbf{b}_{3} \wedge \mathbf{b}_{1} - (
  \mathbf{a}_{1} \cdot \mathbf{b}_{3} ) \mathbf{a}_{2} \wedge \mathbf{b}_{1}
  \wedge \mathbf{b}_{2} .\end{array}

We can test this result as follows.

\begin{array}{rcl}
  \mathbf{a}_{1} & = & 3\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}
  +2\mathbf{e}_{4}\\
  \mathbf{a}_{2} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +5\mathbf{e}_{3}
  +3\mathbf{e}_{4}\\
  \mathbf{b}_{1} & = & 9\mathbf{e}_{1} +2\mathbf{e}_{2} +3\mathbf{e}_{3}
  +4\mathbf{e}_{4}\\
  \mathbf{b}_{2} & = & 6\mathbf{e}_{1} +5\mathbf{e}_{2} +8\mathbf{e}_{3}
  +5\mathbf{e}_{4}\\
  \mathbf{b}_{3} & = & 2\mathbf{e}_{1} +4\mathbf{e}_{2} +7\mathbf{e}_{3}
  +6\mathbf{e}_{4}\\
  \mathbf{A}_{2} & = & \mathbf{a}_{1} \wedge \mathbf{a}_{2}\\
  \mathbf{B}_{3} & = & \mathbf{b}_{1} \wedge \mathbf{b}_{2} \wedge
  \mathbf{b}_{3}\end{array}
$isympy
>>> from sympy.galgebra.ga import *
>>> (e1,e2,e3,e4) = MV.setup('e*1|2|3|4',metric='[1,1,1,1]')
>>> (a1,a2) = symbols('a1 a2')
>>> (b1,b2,b3) = symbols('b1 b2 b3')
>>> a1 = 3*e1 + 4*e2 + 5*e3 + 2*e4
>>> a2 = 2*e1 + 4*e2 + 5*e3 + 3*e4
>>> b1 = 9*e1 + 2*e2 + 3*e3 + 4*e4
>>> b2 = 6*e1 + 5*e2 + 8*e3 + 5*e4
>>> b3 = 2*e1 + 4*e2 + 7*e3 + 6*e4
>>> (A,B) = symbols('A B')
>>> A = a1^a2
>>> B = b1^b2^b3
>>> (A*B).grade(3)
-62*e_1^e_2^e_3 - 125*e_1^e_2^e_4 +
 100*e_1^e_3^e_4 - 187*e_2^e_3^e_4
>>> (a2|b1)*(a1^b2^b3) + \
... (a2|b2)*(a1^b3^b1) + \
... (a2|b3)*(a1^b1^b2) - \
... (a1|b1)*(a2^b2^b3) - \
... (a1|b2)*(a2^b3^b1) - \
... (a1|b3)*(a2^b1^b2)
-62*e_1^e_2^e_3 - 125*e_1^e_2^e_4 +
 100*e_1^e_3^e_4 - 187*e_2^e_3^e_4

As a fourth example to test the fourth pattern of signs, we can expand the geometric product of a 3-blade \mathbf{A}_{3} and a 2-blade \mathbf{B}_{2} to take the 3-vector part. To avoid \mathbf{A}_{3} from being a pseudoscalar, a base space of four dimensions is used again. For r=3, s=2, and l=1, the partitionings are

\begin{array}{rcl}
  ( 2,1 )_{j} \vdash \mathbf{A}_{3} & \in & \{ \{ \mathbf{a}_{1} \wedge
  \mathbf{a}_{2} ,\mathbf{a}_{3} \}_{j=1} , \{ \mathbf{a}_{2} \wedge
  \mathbf{a}_{3} ,\mathbf{a}_{1} \}_{j=2} , \{ \mathbf{a}_{3} \wedge
  \mathbf{a}_{1} ,\mathbf{a}_{2} \}_{j=3} \}\\
  ( 1,1 )_{k} \vdash \mathbf{B}_{2} & \in & \{ \{ \mathbf{b}_{1}
  ,\mathbf{b}_{2} \}_{k=1} , \{ \mathbf{b}_{2} ,\mathbf{b}_{1} \}_{k=2} \} .\end{array}

Since r is odd and s is even, we can use the sign formula

\begin{array}{rcl}
  \mathrm{sgn} ( j,k ) & = & ( -1 )^{( k-1 )}\\
  & = & \begin{array}{|l|l|l|}
    \hline
    \mathrm{sgn} ( j,k ) & 1 & 2\\
    \hline
    1 & +1 & -1\\
    \hline
    2 & +1 & -1\\
    \hline
    3 & +1 & -1\\
    \hline
  \end{array} .\end{array}

The expansion is

\begin{array}{rcl}
  \langle \mathbf{A}_{3} \mathbf{B}_{2} \rangle_{3} & = & \sum^{3,2}_{j=1,k=1}
  ( -1 )^{( k-1 )} ( \mathbf{A}_{3 ( 2 )_{j}} \cdot \mathbf{B}_{2 ( 1 )_{k}} )
  \mathbf{A}_{3 ( 1 )_{j}} \wedge \mathbf{B}_{2 ( 2 )_{k}}\end{array}
\begin{array}{rcl}
  & = & ( \mathbf{a}_{3} \cdot \mathbf{b}_{1} ) \mathbf{a}_{1} \wedge
  \mathbf{a}_{2} \wedge \mathbf{b}_{2} - ( \mathbf{a}_{3} \cdot \mathbf{b}_{2}
  ) \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{b}_{1} +\\
  &  & ( \mathbf{a}_{1} \cdot \mathbf{b}_{1} ) \mathbf{a}_{2} \wedge
  \mathbf{a}_{3} \wedge \mathbf{b}_{2} - ( \mathbf{a}_{1} \cdot \mathbf{b}_{2}
  ) \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge \mathbf{b}_{1} +\\
  &  & ( \mathbf{a}_{2} \cdot \mathbf{b}_{1} ) \mathbf{a}_{3} \wedge
  \mathbf{a}_{1} \wedge \mathbf{b}_{2} - ( \mathbf{a}_{2} \cdot \mathbf{b}_{2}
  ) \mathbf{a}_{3} \wedge \mathbf{a}_{1} \wedge \mathbf{b}_{1}\end{array}

We can test this result as follows.

\begin{array}{rcl}
  \mathbf{a}_{1} & = & 7\mathbf{e}_{1} +6\mathbf{e}_{2} +5\mathbf{e}_{3}
  +2\mathbf{e}_{4}\\
  \mathbf{a}_{2} & = & 3\mathbf{e}_{1} +2\mathbf{e}_{2} +8\mathbf{e}_{3}
  +3\mathbf{e}_{4}\\
  \mathbf{a}_{3} & = & 5\mathbf{e}_{1} +7\mathbf{e}_{2} +9\mathbf{e}_{3}
  +4\mathbf{e}_{4}\\
  \mathbf{b}_{1} & = & 3\mathbf{e}_{1} +5\mathbf{e}_{2} +4\mathbf{e}_{3}
  +5\mathbf{e}_{4}\\
  \mathbf{b}_{2} & = & 6\mathbf{e}_{1} +4\mathbf{e}_{2} +8\mathbf{e}_{3}
  +6\mathbf{e}_{4}\\
  \mathbf{A}_{3} & = & \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge
  \mathbf{a}_{3}\\
  \mathbf{B}_{2} & = & \mathbf{b}_{1} \wedge \mathbf{b}_{2}\end{array}
$isympy
>>> from sympy.galgebra.ga import *
>>> (e1,e2,e3,e4) = MV.setup('e*1|2|3|4',metric='[1,1,1,1]')
>>> (a1,a2,a3) = symbols('a1 a2 a3')
>>> (b1,b2) = symbols('b1 b2')
>>> a1 = 7*e1 + 6*e2 + 5*e3 + 2*e4
>>> a2 = 3*e1 + 2*e2 + 8*e3 + 3*e4
>>> a3 = 5*e1 + 7*e2 + 9*e3 + 4*e4
>>> b1 = 3*e1 + 5*e2 + 4*e3 + 5*e4
>>> b2 = 6*e1 + 4*e2 + 8*e3 + 6*e4
>>> (A,B) = symbols('A B')
>>> A = a1^a2^a3
>>> B = b1^b2
>>> (A*B).grade(3)
-348*e_1^e_2^e_3 + 1552*e_1^e_2^e_4 +
 448*e_1^e_3^e_4 + 1164*e_2^e_3^e_4
>>> (a3|b1)*(a1^a2^b2) - (a3|b2)*(a1^a2^b1) + \
... (a1|b1)*(a2^a3^b2) - (a1|b2)*(a2^a3^b1) + \
... (a2|b1)*(a3^a1^b2) - (a2|b2)*(a3^a1^b1)
-348*e_1^e_2^e_3 + 1552*e_1^e_2^e_4 +
 448*e_1^e_3^e_4 + 1164*e_2^e_3^e_4

The general expansion formula for the geometric product of two blades has been demonstrated, and the technique employed here seems to work. While being a little complicated, with practice it can get easier. There are some other expansion formulas that may be simpler or more specialized, but they often have some conditions on them that the general formula does not. The 2008 book by Hongbo Li, cited at the start of this subsection, contains details on many other expansion formulas, including a formula that further generalizes the expansion to the geometric product of more than two blades.

As a further explanation of why the expansion formula works, consider the following. See references to find formal proofs.

The expansion of an n-blade \mathbf{A}_{n} into a sum of geometric products of vectors is

\begin{array}{rcl}
  \mathbf{A}_{n} =\mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{n} & = &
  \frac{1}{n} \sum^{n}_{i=1} \langle ( -1 )^{( n-1 ) ( i-1 )} ( \mathbf{a}_{1}
  \cdots \mathbf{a}_{n} )^{\ll ( i-1 )} \rangle_{n} .\end{array}

If n is odd then the signs are always positive, else n is even and the signs alternate. For example,

\begin{array}{rcl}
  \mathbf{a}_{1} \wedge \mathbf{a}_{2} & = & \left\langle \frac{1}{2} (
  \mathbf{a}_{1} \mathbf{a}_{2} -\mathbf{a}_{2} \mathbf{a}_{1} )
  \right\rangle_{2}\\
  \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} & = &
  \left\langle \frac{1}{3} ( \mathbf{a}_{1} \mathbf{a}_{2} \mathbf{a}_{3}
  +\mathbf{a}_{2} \mathbf{a}_{3} \mathbf{a}_{1} +\mathbf{a}_{3} \mathbf{a}_{1}
  \mathbf{a}_{2} ) \right\rangle_{3}\\
  \mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \mathbf{a}_{3} \wedge
  \mathbf{a}_{4} & = & \left\langle \frac{1}{4} ( \mathbf{a}_{1}
  \mathbf{a}_{2} \mathbf{a}_{3} \mathbf{a}_{4} -\mathbf{a}_{2} \mathbf{a}_{3}
  \mathbf{a}_{4} \mathbf{a}_{1} +\mathbf{a}_{3} \mathbf{a}_{4} \mathbf{a}_{1}
  \mathbf{a}_{2} -\mathbf{a}_{4} \mathbf{a}_{1} \mathbf{a}_{2} \mathbf{a}_{3}
  ) \right\rangle_{4} .\end{array}

Notice that the grade can be taken on the sum, or it can be taken per term of the sum and added. Any scalar factor can be factored out of a grade selection, and constant scalars can be factored out of a summation.

Recall that, for grades r and s, the sign formula was written as

\begin{array}{rcl}
  \mathrm{sgn} ( j,k ) & = & ( -1 )^{( r-1 ) ( j-1 ) + ( s-1 ) ( k-1 )} .\end{array}

Using this expansion of an n-blade into a sum of geometric products of vectors gives

\begin{array}{rcl}
  &  & \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{r+s-2l} =\\
  &  & \left\langle \sum^{r,s}_{j=1,k=1} \frac{\mathrm{sgn} ( j,k )}{r s}_{}
  \langle ( \mathbf{a}_{1} \cdots \mathbf{a}_{r} )^{\ll ( j-1 )} \rangle_{r}
  \langle ( \mathbf{b}_{1} \cdots \mathbf{b}_{s} )^{\ll ( k-1 )} \rangle_{s}
  \right\rangle_{r+s-2l} .\end{array}

The vector products can be partitioned as

\begin{array}{rcl}
  \sum^{r,s}_{j=1,k=1} \frac{\mathrm{sgn} ( j,k )}{r s} \langle \langle A_{r (
  1 )_{j}} A_{r ( 2 )_{j}} \rangle_{r} \langle B_{s ( 1 )_{k}} B_{s ( 2 )_{k}}
  \rangle_{s} \rangle_{r+s-2l} &  & \end{array}

where A_{r} =\mathbf{a}_{1} \cdots \mathbf{a}_{r} and B_{s} =\mathbf{b}_{1} \cdots \mathbf{b}_{s} are multivectors (not blades), and are partitioned as

\begin{array}{rcl}
  ( r-l,l )_{j} \vdash A_{r} & = & \{ A_{r ( 1 )_{j}} ,A_{r ( 2 )_{j}} \}\\
  ( l,s-l )_{k} \vdash B_{s} & = & \{ B_{s ( 1 )_{k}} ,B_{s ( 2 )_{k}} \}\\
  A_{r ( 1 )_{1}} & = & \mathbf{a}_{1} \cdots \mathbf{a}_{r-l}\\
  A_{r ( 2 )_{1}} & = & \mathbf{a}_{r-l+1} \cdots \mathbf{a}_{r}\\
  B_{s ( 1 )_{1}} & = & \mathbf{b}_{1} \cdots \mathbf{b}_{l}\\
  B_{s ( 2 )_{1}} & = & \mathbf{b}_{l+1} \cdots \mathbf{b}_{s} .\end{array}

These multivectors are cyclically permutated as j and k increment through the summation and the partitions are taken on each permutation.

In this summation, there are nested grade selections. The inner grade selections take r and s grades and then multiply them geometrically. The outer grade selection takes grade r+s-2l. To make r+s-2l the maximum inner grade, we can take this other inner grade selection

\begin{array}{rcl}
  \sum^{r,s}_{j=1,k=1} \mathrm{sgn} ( j,k ) \langle A_{r ( 1 )_{j}} \langle
  A_{r ( 2 )_{j}} B_{s ( 1 )_{k}} \rangle B_{s ( 2 )_{k}} \rangle_{r+s-2l} & 
  & \end{array}

where the factor 1/r s is multiplied out by r s multiples of some average scalar product. This summation is in the form of a known corollary of the Fundamental Clifford expansion of the geometric product of vectors[7](258).

Changing geometric products to outer products in the multivectors A_{r} and B_{s} produces their blades \mathbf{A}_{r} and \mathbf{B}_{s } of maximum grades, and then the maximum grade r+s-2l in the summation is immediately given by

\begin{array}{rcl}
  &  & \sum^{r,s}_{j=1,k=1} \mathrm{sgn} ( j,k ) \mathbf{A}_{r ( 1 )_{j}}
  \wedge \langle \mathbf{A}_{r ( 2 )_{j}} \mathbf{B}_{s ( 1 )_{k}} \rangle
  \wedge \mathbf{B}_{s ( 2 )_{k}} =\\
  &  & \sum^{r,s}_{j=1,k=1} \mathrm{sgn} ( j,k ) \langle \mathbf{A}_{r ( 2
  )_{j}} \mathbf{B}_{s ( 1 )_{k}} \rangle \mathbf{A}_{r ( 1 )_{j}} \wedge
  \mathbf{B}_{s ( 2 )_{k}} =\\
  &  & \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{r+s-2l} .\end{array}

The two blades are

\begin{array}{rcl}
  \langle A_{r} \rangle_{r} =\mathbf{A}_{r} & = & \mathbf{a}_{1} \wedge \cdots
  \wedge \mathbf{a}_{r}\\
  \langle B_{s} \rangle_{s} =\mathbf{B}_{s} & = & \mathbf{b}_{1} \wedge \cdots
  \wedge \mathbf{b}_{s}\end{array}

which are the grade r and s parts of the multivectors A_{r} and B_{s}.

The two blades \mathbf{A}_{r} and \mathbf{B}_{s} are still partitioned like their multivectors as

\begin{array}{rcl}
  ( r-l,l )_{j} \vdash \mathbf{A}_{r} & = & \{ \mathbf{A}_{r ( 1 )_{j}}
  ,\mathbf{A}_{r ( 2 )_{j}} \}\\
  ( l,s-l )_{k} \vdash \mathbf{B}_{s} & = & \{ \mathbf{B}_{s ( 1 )_{k}}
  ,\mathbf{B}_{s ( 2 )_{k}} \} .\end{array}

This last summation is the expansion formula for the geometric product of blades.

Another informal derivation of the expansion formula can be made as follows, and gives some additional details.

The formula for the complete anti-symmetrization of vector products produces their anti-symmetric outer products in expanded forms

\begin{array}{rcl}
  \mathbf{A}_{r} =\mathbf{a}_{1} \wedge \mathbf{a}_{2} \wedge \cdots \wedge
  \mathbf{a}_{r} & = & \frac{1}{r!} \sum_{\sigma} \mathrm{sign} ( \sigma )
  \mathbf{a}_{\sigma ( 1 )} \mathbf{a}_{\sigma ( 2 )} \cdots
  \mathbf{a}_{\sigma ( r )}\\
  & = & \frac{1}{r!} \sum_{\sigma ( r-l,l ) \vdash A_{r}} \mathrm{sign} (
  \sigma ) A_{r ( 1 )} A_{r ( 2 )}\\
  \mathbf{B}_{s} =\mathbf{b}_{1} \wedge \mathbf{b}_{2} \wedge \cdots \wedge
  \mathbf{b}_{s} & = & \frac{1}{s!} \sum_{\sigma} \mathrm{sign} ( \sigma )
  \mathbf{b}_{\sigma ( 1 )} \mathbf{b}_{\sigma ( 2 )} \cdots
  \mathbf{b}_{\sigma ( s )}\\
  & = & \frac{1}{s!} \sum_{\sigma ( l,s-l ) \vdash B_{s}} \mathrm{sign} (
  \sigma ) B_{s ( 1 )} B_{s ( 2 )}\end{array}

where the \sigma (sigma) notation denotes the sum over all (not just cyclic) permutations to the order of multiplication of the vectors in the multivectors A_{r} and B_{s}. The value of \mathrm{sign} ( \sigma ) is -1 raised to the number of bivector reverses in the current permutation relative to the initial ordering of the vectors in the multivectors. The \sigma acting on the Sweedler’s notation denotes taking the partitions on each of the \sigma permutations of the vector products in the summation, which include more than just the usual (per this article) cyclic permutations. By summing over all the \sigma permutations, all of the symmetrical vector products cancel, leaving only the anti-symmetric outer product of the vectors in expanded or redundant form.

Using these complete anti-symmetrizations, we can write

\begin{array}{rcl}
  &  & \langle \mathbf{A}_{r} \mathbf{B}_{s} \rangle_{r+s-2l}\end{array}
\begin{array}{rcl}
  & = & \frac{1}{r!s!} \sum_{\sigma ( r-l,l ) \vdash A_{r} , \sigma ( l,s-l )
  \vdash B_{s}} \mathrm{sign} ( \sigma_{r} \sigma_{s} ) \langle A_{r ( 1 )}
  A_{r ( 2 )} B_{s ( 1 )} B_{s ( 2 )} \rangle_{r+s-2l}\\
  & = & \frac{1}{l!l!} \sum_{\sigma ( r-l,l ) \vdash A_{r} , \sigma ( l,s-l )
  \vdash B_{s}} \mathrm{sign} ( \sigma_{r} \sigma_{s} ) \langle A_{r ( 1 )}
  \langle A_{r ( 2 )} B_{s ( 1 )} \rangle B_{s ( 2 )} \rangle_{r+s-2l}\\
  & = & \sum_{( r-l,l ) \vdash A_{r} , ( l,s-l ) \vdash B_{s}} \langle A_{r (
  1 )} \langle A_{r ( 2 )} B_{s ( 1 )} \rangle B_{s ( 2 )} \rangle_{r+s-2l}\\
  & = & \sum_{( r-l,l ) \vdash \mathbf{A}_{r} , ( l,s-l ) \vdash
  \mathbf{B}_{s}} \mathbf{A}_{r ( 1 )} \wedge \langle \mathbf{A}_{r ( 2 )}
  \mathbf{B}_{s ( 1 )} \rangle \wedge \mathbf{B}_{s ( 2 )}\\
  & = & \sum^{r,s}_{j=1,k=1} \mathrm{sgn} ( j,k ) \langle \mathbf{A}_{r ( 2
  )_{j}} \mathbf{B}_{s ( 1 )_{k}} \rangle \mathbf{A}_{r ( 1 )_{j}} \wedge
  \mathbf{B}_{s ( 2 )_{k}} .\end{array}

The factor \mathrm{sign} ( \sigma_{r} \sigma_{s} ) is the multiplication of the two \mathrm{sign} ( \sigma ) factors from \mathbf{A}_{r} and \mathbf{B}_{s}. The first expression produces only one unique result, but there are r!s! copies of it which are averaged. The inner scalar product produces r!s!/l!l! unique terms that each occur l!l! times and are averaged. The maximum inner grade r+s-2l is selected immediately by switching geometric products to outer products. In the switch, the \sigma permutations are dropped and the partitions are then taken on only the r s cyclic permutations, as before. The cyclic permutations produce no copies in the scalar product and the factor 1/l!l! is also dropped. From there, the same expansion formula as before is obtained.

Definitions of products by graded parts of geometric product

The following are definitions of multivector products by associative, distributive, non-commutative multiplication of each component blade in A with each blade in B, followed by a grade selection (except for the geometric product). All products are based on selecting a certain grade of blades from the geometric product. The inner product has a special rule (to treat scalars as perpendicular to all values) that first loses or deletes any scalar part from the factors (to make sure they can’t be selected), and it produces results only of absolute grade difference | s-r |; a scalar results from inner product only when r=s, and 0 if the factors are perpendicular. The scalar product simply selects the scalar part of any geometric product. The outer product also produces a scalar in the special case of the outer product of two scalars or 0-blades, where the grades add as r+s=0+0=0. The outer product is zero if r+s>n where n is the number of vector units of the Clifford geometric algebra (in the case considered here, n=3 with vector units \mathbf{e}_{1} ,\mathbf{e}_{2} ,\mathbf{e}_{3}). The outer product is zero when the two blades multiplied have a common vector, since parallel vectors span zero area or volume.

Geometric product (evaluated using only rules of units; \mathbf{e}_{i} \mathbf{e}_{j} =-\mathbf{e}_{j} \mathbf{e}_{i} and \mathbf{e}_{i} \mathbf{e}_{i} =1):

\begin{array}{rcl}
  A B & = & \sum_{r,s} \langle A \rangle_{r} \langle B \rangle_{s} =A
  \bar{\times} B+A \times B\end{array}

Scalar product:

\begin{array}{rcl}
  A \ast B & = & \sum_{r,s} \langle \langle A \rangle_{r} \langle B
  \rangle_{s} \rangle_{0}\end{array}

Inner product (standard inner product, where \alpha \cdot B=0 for scalar \alpha):

\begin{array}{rcl}
  A \cdot B & = & \sum_{r \neq 0,s \neq 0} \langle \langle A \rangle_{r}
  \langle B \rangle_{s} \rangle_{| s-r |}\end{array}

Outer product (\alpha \wedge B= \alpha B for scalar \alpha; \langle X \rangle_{r+s} =0 if r+s>n of \mathcal{G}_{n}):

\begin{array}{rcl}
  A \wedge B & = & \sum_{r,s} \langle \langle A \rangle_{r} \langle B
  \rangle_{s} \rangle_{r+s}\end{array}

Commutator or anti-symmetric product:

\begin{array}{rcl}
  A \times B & = & \frac{1}{2} ( A B-B A ) =-B \times A\end{array}

Symmetric or anti-commutator[9](55) product:

\begin{array}{rcl}
  A \bar{\times} B & = & \frac{1}{2} ( A B+B A ) =B \bar{\times} A\end{array}

The following three products work together as a modification of the inner product.

Dot product (modified non-standard inner product, where \alpha \bullet B= \alpha B):

\begin{array}{rcl}
  A \bullet B & = & \sum_{r,s} \langle \langle A \rangle_{r} \langle B
  \rangle_{s} \rangle_{| s-r |}\end{array}

Left contraction (A contraction onto B; when r>s the result is 0):

\begin{array}{rcl}
  A \rfloor  B & = & \sum_{r,s} \langle \langle A \rangle_{r} \langle B
  \rangle_{s} \rangle_{s-r}\end{array}

Right contraction (A contraction by B; when s>r the result is 0):

\begin{array}{rcl}
  A \lfloor  B & = & \sum_{r,s} \langle \langle A \rangle_{r} \langle B
  \rangle_{s} \rangle_{r-s}\end{array}

There are many more identities elsewhere in the literature on Clifford geometric algebras. An important concept these formulas show is that the inner product lowers grade, and outer product increases grade in definite amounts. Recognizing when a complicated expression will reduce to a scalar can sometimes save significant work, as shown some in the next subsection on the triple vector cross product.

Identities: Inner products

First, we make use of the following in the identities of this subsection:

Let \mathbf{A}^{\sim}_r denote the reversion or reverse of an r-blade \mathbf{A}_r, where

\begin{array}{rcl}
  \mathbf{A}_r & = & \bigwedge^r_{i = 1} \mathbf{a}_i =\mathbf{a}_1 \wedge
  \cdots \wedge \mathbf{a}_{r - 1} \wedge \mathbf{a}_r\\
  \mathbf{A}^{\sim}_r & = & \bigwedge_{i = 1}^r \mathbf{a}_{r - i + 1}
  =\mathbf{a}_r \wedge \mathbf{a}_{r - 1} \wedge \cdots \wedge \mathbf{a}_1\\
  \mathbf{A}_r & = & (- 1)^{r (r - 1) / 2} \mathbf{A}^{\sim}_r .\end{array}

Properties of integer powers of - 1:

\begin{array}{rcl}
  (- 1)^a & = & (- 1)^{- a}\\
  (- 1)^a (- 1)^b & = & (- 1)^{a + b} = (- 1)^{- a - b}\\
  & = & (- 1)^{a - b} = (- 1)^{b - a} .\\
  (- 1)^{a b} & = & ((- 1)^a)^b = ((- 1)^b)^a\end{array}

Identity 1. Commutation of the inner product of blades. Given r-blade \mathbf{A}_r, s-blade \mathbf{B}_s, and the condition r \leq s, then the following identity holds good:

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s & = & (- 1)^{r (s - 1)} \mathbf{B}_s \cdot
  \mathbf{A}_r\\
  & = & \langle \mathbf{A}_r \mathbf{B}_s \rangle_{s - r} .\end{array}

The inner product of two l-blades is generally commutative: \mathbf{A}_l \cdot \mathbf{B}_l =\mathbf{B}_l \cdot \mathbf{A}_l. Either l is even or (l - 1) is even; therefore, the sign (- 1)^{l (l - 1)} is always positive.

Proof 1. Using reversion gives

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s & = & (- 1)^{(s - r) (s - r - 1) / 2 - r (r
  - 1) / 2 - s (s - 1) / 2} (\mathbf{A}^{\sim}_r \cdot
  \mathbf{B}_s^{\sim})^{\sim}\\
  & = & (- 1)^{(s^2 - 2 r s - s + r^2 + r - r^2 + r - s^2 + s) / 2}
  (\mathbf{A}^{\sim}_r \cdot \mathbf{B}_s^{\sim})^{\sim}\\
  & = & (- 1)^{r - r s} (\mathbf{A}^{\sim}_r \cdot
  \mathbf{B}_s^{\sim})^{\sim} = (- 1)^{r s - r} (\mathbf{A}^{\sim}_r \cdot
  \mathbf{B}_s^{\sim})^{\sim}\\
  & = & (- 1)^{r (s - 1)} (\mathbf{A}^{\sim}_r \cdot
  \mathbf{B}_s^{\sim})^{\sim} = (- 1)^{r (s + 1)} (\mathbf{A}^{\sim}_r \cdot
  \mathbf{B}_s^{\sim})^{\sim} .\end{array}

The last step, is to notice another useful identity (with no condition on it):

\begin{array}{rcl}
  (\mathbf{A}^{\sim}_r \cdot \mathbf{B}_s^{\sim})^{\sim} & = & \mathbf{B}_s
  \cdot \mathbf{A}_r .\end{array}

In this identity, the LHS and RHS inner products have the same pairing of vector inner products when recursively reduced, but they are reverses that may differ in sign. The LHS is reversed to match the sign of the RHS. This identity is also a known property of the reversion operation, usually stated generally for the entire geometric product (not just the inner product part) of any two multivectors as

\begin{array}{rcl}
  A & = & \mathbf{a}_1 \mathbf{a}_2 \ldots \mathbf{a}_r\\
  B & = & \mathbf{b}_1 \mathbf{b}_2 \ldots \mathbf{b}_s\\
  (A B)^{\sim} & = & B^{\sim} A^{\sim}\\
  (A^{\sim})^{\sim} & = & A\end{array}

therefore (A^{\sim} B^{\sim})^{\sim} = B A, with the inner product part included. \Box

Identity 2. Conditional associativity of the inner product of blades. Given r-blade \mathbf{A}_r, s-blade \mathbf{B}_s, t-blade \mathbf{C}_t, and the condition r + s \leq t, then the following identity holds good:

\begin{array}{rcl}
  (\mathbf{A}_r \cdot \mathbf{C}_t) \cdot \mathbf{B}_s & = & \mathbf{A}_r
  \cdot (\mathbf{C}_t \cdot \mathbf{B}_s)\\
  & = & \langle \mathbf{A}_r \mathbf{C}_t \mathbf{B}_s \rangle_{t - r - s} .\end{array}

Intuitively, it is equivalent to first contract \mathbf{A}_r then \mathbf{B}_s or first \mathbf{B}_s then \mathbf{A}_r on \mathbf{C}_t, provided that no factors commute in the change.

The product is zero if any vector in \mathbf{A}_r or in \mathbf{B}_s is orthogonal to all vectors in \mathbf{C}_t. If \mathbf{A}_r and \mathbf{B}_s have any common vector then the product is again zero.

It may be tempting to drop the parentheses and just write \mathbf{A}_r \cdot \mathbf{C}_t \cdot \mathbf{B}_s when the condition r + s \leq t is satisfied. However, if Identity 1 is applied as follows, then the conditional associativity must be explicity written again such as

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{C}_t \cdot \mathbf{B}_s & = & (- 1)^{s (t - 1)}
  \mathbf{A}_r \cdot (\mathbf{B}_s \cdot \mathbf{C}_t) .\end{array}

Therefore, writing \mathbf{A}_r \cdot \mathbf{C}_t \cdot \mathbf{B}_s is conditionally correct but generally incorrect and a choice of the association should be made with parentheses to avoid mistakes.

Proof 2. Using inner product commutation (Identity 1) gives

\begin{array}{rcl}
  (\mathbf{A}_r \cdot \mathbf{C}_t) \cdot \mathbf{B}_s &  & \end{array}
\begin{array}{rcl}
  & = & ((- 1)^{r (t - 1)} \mathbf{C}_t \cdot \mathbf{A}_r) \cdot
  \mathbf{B}_s\end{array}

then using inner product reduction (Identity 3) in reverse gives

\begin{array}{rcl}
  & = & (- 1)^{r (t - 1)} \mathbf{C}_t \cdot (\mathbf{A}_r \wedge
  \mathbf{B}_s)\end{array}

then using inner product commutation again gives

\begin{array}{rcl}
  & = & (- 1)^{(r + s) (t - 1)} (- 1)^{r (t - 1)} (\mathbf{A}_r \wedge
  \mathbf{B}_s) \cdot \mathbf{C}_t\\
  & = & (- 1)^{s (t - 1)} (\mathbf{A}_r \wedge \mathbf{B}_s) \cdot
  \mathbf{C}_t\end{array}

then using inner product reduction gives

\begin{array}{rcl}
  & = & (- 1)^{s (t - 1)} \mathbf{A}_r \cdot (\mathbf{B}_s \cdot
  \mathbf{C}_t)\end{array}

and finally, using inner product commutation again gives

\begin{array}{rcl}
  & = & (- 1)^{s (t - 1)} (- 1)^{s (t - 1)} \mathbf{A}_r \cdot (\mathbf{C}_t
  \cdot \mathbf{B}_s)\\
  & = & \mathbf{A}_r \cdot (\mathbf{C}_t \cdot \mathbf{B}_s)\end{array}

which was to be shown (Q.E.D.). \Box

Another proof of this identity is given by Perwass[9](76) using grade projection (selection) operations.

Identity 3. Reduction of the inner product of blades. Given r-blade \mathbf{A}_r, s-blade \mathbf{B}_s, t-blade \mathbf{C}_t, and condition r + s \leq t, then the following identity holds good:

\begin{array}{rcl}
  (\mathbf{A}_r \wedge \mathbf{B}_s) \cdot \mathbf{C}_t & = & \mathbf{A}_r
  \cdot (\mathbf{B}_s \cdot \mathbf{C}_t) .\end{array}

A proof of this identity is given by Perwass[9](75) using grade projections.

For r \leq s, this identity, applied recursively, produces the nested inner products identity

\begin{array}{rcl}
  \mathbf{A}_r \cdot \mathbf{B}_s & = & (\mathbf{a}_1 \wedge \ldots \wedge
  \mathbf{a}_{r - 1} \wedge \mathbf{a}_r) \cdot \mathbf{B}_s\\
  & = & \mathbf{a}_1 \cdot (\ldots \cdot (\mathbf{a}_{r - 1} \cdot
  (\mathbf{a}_r \cdot \mathbf{B}_s)) \ldots) .\end{array}

Triple vector cross product

The triple vector cross product

\begin{array}{rcl}
  \mathbf{a} \times ( \mathbf{b} \times \mathbf{c} ) & = & ( \mathbf{a} \wedge
  [ ( \mathbf{b} \wedge \mathbf{c} ) /\mathbf{I} ] ) /\mathbf{I}\\
  & = & ( [ ( \mathbf{c} \wedge \mathbf{b} ) \mathbf{I} ] \wedge \mathbf{a} )
  \cdot \mathbf{I}\\
  & = & [ ( \mathbf{c} \wedge \mathbf{b} ) \mathbf{I} ] \cdot ( \mathbf{a}
  \cdot \mathbf{I} )\\
  & = & [ ( \mathbf{c} \wedge \mathbf{b} ) \mathbf{I} ] \cdot (
  \mathbf{I}\mathbf{a} )\\
  & = & \langle ( \mathbf{c} \wedge \mathbf{b} ) \mathbf{I}
  \mathbf{I}\mathbf{a} \rangle_{| 1-2 |}\\
  & = & \langle ( \mathbf{b} \wedge \mathbf{c} ) \mathbf{a} \rangle_{| 1-2
  |}\\
  & = & ( \mathbf{b} \wedge \mathbf{c} ) \cdot \mathbf{a}\\
  & = & ( \mathbf{a} \cdot \mathbf{c} ) \mathbf{b}- ( \mathbf{a} \cdot
  \mathbf{b} ) \mathbf{c}\end{array}

is one of the more confusing products to evaluate in vector calculus. Here, it is converted into geometric algebra, where the inner product of blades is used to derive the expanded identity. It may be hard to see this, but the pseudoscalar \mathbf{I} commutes in the geometric product with any other value, and it also commutes across scalar, inner, and outer product symbols if it is next to the symbol. Perhaps this can be seen easier when the inner product is viewed as the geometric product (wherein \mathbf{I} clearly commutes) followed by the grade selection.

The triple cross product can also be seen as two rejections and two scaled rotations in the quaternion dual mapping where the final result is taken undual back to a Euclidean vector as

\begin{array}{rcl}
  \mathbf{b} \times \mathbf{c} & = & \left( | \mathbf{b} | e^{\frac{\pi}{2}
  \frac{\mathbf{b}/\mathbf{I}}{| \mathbf{b} |}} \mathbf{c}^{\bot \mathbf{b}}
  /\mathbf{I} \right) \mathbf{I}= ( \mathbf{b}/\mathbf{I} ) [ ( \mathbf{c}
  \wedge \mathbf{b} ) \mathbf{b}^{-1} /\mathbf{I} ] \mathbf{I}\\
  & = & \mathbf{b} ( \mathbf{b} \wedge \mathbf{c} ) \mathbf{b}^{-1}
  \mathbf{I}\\
  \mathbf{a} \times ( \mathbf{b} \times \mathbf{c} ) & = & \mathbf{a} (
  \mathbf{a} \wedge [ \mathbf{b} ( \mathbf{b} \wedge \mathbf{c} )
  \mathbf{b}^{-1} \mathbf{I} ] ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & \mathbf{a} ( \mathbf{a} \wedge [ ( ( \mathbf{b} \cdot \mathbf{b} )
  \mathbf{c}-\mathbf{b} ( \mathbf{b} \cdot \mathbf{c} ) ) \mathbf{b}^{-1}
  \mathbf{I} ] ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & \mathbf{a} ( \mathbf{a} \wedge [ ( \mathbf{c}\mathbf{b}-\mathbf{b}
  \cdot \mathbf{c} ) \mathbf{I} ] ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & \mathbf{a} ( \mathbf{a} \wedge [ ( \mathbf{c} \wedge \mathbf{b} )
  \cdot \mathbf{I} ] ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & \mathbf{a} ( \mathbf{a} \wedge [ \mathbf{c} \cdot ( \mathbf{b} \cdot
  \mathbf{I} ) ] ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & \mathbf{a} ( \mathbf{a} \wedge [ \mathbf{c} \cdot (
  \mathbf{b}\mathbf{I} ) ] ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & ( ( \mathbf{a} \cdot \mathbf{a} ) [ \mathbf{c} \cdot (
  \mathbf{b}\mathbf{I} ) ] -\mathbf{a} ( \mathbf{a} \cdot [ \mathbf{c} \cdot (
  \mathbf{b}\mathbf{I} ) ] ) ) \mathbf{a}^{-1} \mathbf{I}\\
  & = & ( [ \mathbf{c} \cdot ( \mathbf{b}\mathbf{I} ) ] \cdot \mathbf{a}+ [
  \mathbf{c} \cdot ( \mathbf{b}\mathbf{I} ) ] \wedge \mathbf{a}-\mathbf{a}
  \cdot [ \mathbf{c} \cdot ( \mathbf{b}\mathbf{I} ) ] ) \mathbf{I}\\
  & = & ( [ \mathbf{c} \cdot ( \mathbf{b}\mathbf{I} ) ] \wedge \mathbf{a} )
  \cdot \mathbf{I}\\
  & = & ( ( \mathbf{c} \wedge \mathbf{b} ) \cdot \mathbf{I} ) \cdot (
  \mathbf{a} \cdot \mathbf{I} )\\
  & = & ( ( \mathbf{c} \wedge \mathbf{b} ) \mathbf{I} ) \cdot (
  \mathbf{I}\mathbf{a} )\\
  & = & ( \mathbf{b} \wedge \mathbf{c} ) \cdot \mathbf{a}\\
  & = & \mathbf{b} ( \mathbf{c} \cdot \mathbf{a} ) - ( \mathbf{b} \cdot
  \mathbf{a} ) \mathbf{c}.\end{array}

Perhaps the above are overly-complicated ways to evaluate the triple cross product, but demonstrate different ways to view the expression. The simple way to evaluate the triple cross product is to use the recursive formula for the inner product of blades and the identity that the geometric product with a pseudoscalar is always just an inner product. Let’s also continue to assume a 3D space.

\begin{array}{rcl}
  \mathbf{I} & = & \mathbf{e}_{1} \wedge \mathbf{e}_{2} \wedge \mathbf{e}_{3}\end{array}
\begin{array}{rcl}
  &  & \mathbf{a} \times ( \mathbf{b} \times \mathbf{c} )\end{array}
\begin{array}{rcl}
  & = & ( \mathbf{a} \wedge ( ( \mathbf{b} \wedge \mathbf{c} )
  \mathbf{I}^{-1} ) ) \mathbf{I}^{-1}\\
  & = & ( \mathbf{a} \wedge ( ( \mathbf{b} \wedge \mathbf{c} ) \cdot
  \mathbf{I}^{-1} ) ) \cdot \mathbf{I}^{-1}\\
  & = & \mathbf{a} \cdot ( ( ( \mathbf{b} \wedge \mathbf{c} ) \cdot
  \mathbf{I}^{-1} ) \cdot \mathbf{I}^{-1} )\\
  & = & \mathbf{a} \cdot ( ( \mathbf{b} \wedge \mathbf{c} ) \mathbf{I}^{-1}
  \mathbf{I}^{-1} )\\
  & = & \mathbf{a} \cdot ( \mathbf{c} \wedge \mathbf{b} )\\
  & = & ( \mathbf{a} \cdot \mathbf{c} ) \mathbf{b}- ( \mathbf{a} \cdot
  \mathbf{b} ) \mathbf{c}\end{array}

Rotation of blades

Rotating a blade is the same as rotating each vector in the blade as

\begin{array}{rcl}
  R^{\theta}_{\mathbf{N}} \mathbf{A}_{\langle k \rangle} & = & e^{\frac{1}{2}
  \theta \mathbf{N}} ( \mathbf{a}_{1} \wedge \cdots \wedge \mathbf{a}_{i}
  \wedge \cdots \wedge \mathbf{a}_{k} ) e^{- \frac{1}{2} \theta \mathbf{N}}\\
  & = & R^{\theta}_{\mathbf{N}} \mathbf{a}_{1} \wedge \cdots \wedge
  R^{\theta}_{\mathbf{N}} \mathbf{a}_{i} \wedge \cdots \wedge
  R^{\theta}_{\mathbf{N}} \mathbf{a}_{k}\end{array}

where unit bivector \mathbf{N}=\mathbf{n}/\mathbf{I} is the dual of a Euclidean unit vector rotation axis \mathbf{n}, or is some other unit bivector \mathbf{N}= \frac{\mathbf{b} \wedge \mathbf{a}}{| \mathbf{b} \wedge \mathbf{a} |}, representing a quaternion rotation axis or plane of rotation.

This result, a kind of outermorphism called versor outermorphism[9](92), is true since rotations preserve lengths and angles in rotated objects. Blade objects are rotated as rigid bodies. As an object, a blade represents a k-parallelotope, or a k-simplex if scaled by ( 1/k! ).

In the previous section, this formula was not assumed and we had

\begin{array}{rcl}
  \mathbf{b} \times \mathbf{c} & = & \mathbf{b} ( \mathbf{b} \wedge \mathbf{c}
  ) \mathbf{b}^{-1} \mathbf{I}\end{array}

as a rotation of a 2-blade. This can be evaluated and simplified as

\begin{array}{rcl}
  \mathbf{b} \times \mathbf{c} & = & \mathbf{b} ( \mathbf{b} \wedge \mathbf{c}
  ) \mathbf{b}^{-1} \mathbf{I}\\
  & = & ( \mathbf{b}\mathbf{b}\mathbf{b}^{-1} ) \wedge (
  \mathbf{b}\mathbf{c}\mathbf{b}^{-1} ) \mathbf{I}\\
  & = & ( \mathbf{b} \wedge [ \mathbf{b} ( \mathbf{c}^{||\mathbf{b}}
  +\mathbf{c}^{\bot \mathbf{b}} ) \mathbf{b}^{-1} ] ) \mathbf{I}\\
  & = & ( \mathbf{b} \wedge [ \mathbf{c}^{||\mathbf{b}} -\mathbf{c}^{\bot
  \mathbf{b}} ] ) \mathbf{I}\\
  & = & ( -\mathbf{b} \wedge \mathbf{c}^{\bot \mathbf{b}} ) \mathbf{I}\\
  & = & ( -\mathbf{b} \wedge \mathbf{c} ) \mathbf{I}\\
  & = & ( \mathbf{b} \wedge \mathbf{c} ) /\mathbf{I}\end{array}

giving the known formula for the vector cross product as the dual of the outer product.

References

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Hamilton, Sir William Rowan (1853). Lectures on Quaternions: Containing a Systematic Statement of a New Mathematical Method; of which the Principles Were Communicated in 1843 to the Royal Irish Academy; and which Has Since Formed the Subject of Successive Courses of Lectures, Delivered in 1848 and Subsequent Years, in the Halls of Trinity College, Dublin: with Numerous Illustrative Diagrams, and with Some Geometrical and Physical Applications. Dublin: Hodges and Smith, Grafton-Street, Booksellers to the University. London: Whittaker & Co., Ave-Maria Lane. Cambridge: Macmillan & Co.
  2. J. W. Gibbs, E. B. Wilson (1929). Vector Analysis, a text-book for the use of students of mathematics and physics, founded upon the lectures of J. W. Gibbs (Sixth ed.). New Haven: Yale University Press. pp. XXII + 436.
  3. Gerald Sommer, ed. (2001). Geometric Computing with Clifford Algebras, Theoretical Foundations and Applications in Computer Vision and Robotics. Berlin: Springer. pp. xviii + 551.
  4. 4.0 4.1 David Hestenes, Garret Sobczyk (1984). Clifford Algebra to Geometric Calculus, A Unified Language for Mathematics and Physics. Fundamental Theories of Physics 5. Dordrecht-Boston-Lancaster: D. Reidel Publishing Company, a Member of the Kluwer Academic Publishers Group.
  5. W.K. Clifford (1882). Applications of Grassmann’s Extensive Algebra. Mathematical Papers by William Kingdon Clifford (London: Macmillan and Co.). pp. 266–276.
  6. W.K. Clifford (1882). On The Classification of Geometric Algebras. Mathematical Papers by William Kingdon Clifford (London: Macmillan and Co.). pp. 397–401.
  7. 7.0 7.1 7.2 7.3 7.4 Hongbo Li (2008). Invariant Algebras and Geometric Reasoning. Hackensack, NJ: World Scientific. pp. xiv + 518.
  8. 8.0 8.1 David Hestenes (1999). New Foundations for Classical Mechanics. Fundamental Theories of Physics 99 (Second ed.). Dordrecht: Kluwer Academic Publishers. pp. xi + 703.
  9. 9.0 9.1 9.2 9.3 Christian Perwass (2009). Geometric Algebra with Applications in Engineering. Geometry and Computing 4. Springer.