Bivectors from a computational angle? I am a computer scientist, not a mathematician. I am trying to understand multivectors from an applied sense.
I am reading the wiki entry:
https://en.m.wikipedia.org/wiki/Bivector
So in order to define a bivector we first need to define the geometric product.
The issue I have is, the geometric product is defined in terms of its algebraic properties, but not in terms of its computation. Same with the Scalar product and Exterior product.
If I pick a basis and I have say 3D vectors $(x,y,z)$, $(u,v,w)$ what exactly do I do? I.e. how do I manipulate these elements to produce the output of each of the geometric, scalar and exterior product?
 A: A vector is a linear combination of the basis vectors $e_1,e_2,e_3,\cdots,e_n$. With $n=3$, you have $(x,y,z)=xe_1+ye_2+ze_3$.
A multivector is a linear combination of the basis multivectors, which correspond to the subsets of the set $\{1,2,3,\cdots,n\}$. A basis multivector is the product of all of the basis vectors whose indices are in the subset.
$$\begin{align}\text{grade }0:\quad\{1\};\qquad&\text{total}:\quad\binom{n}{0}=1 \\ \text{grade }1:\quad\{e_1,\;e_2,\;e_3,\;\cdots\;,\;e_n\};\qquad&\text{total}:\quad\binom{n}{1}=n \\ \text{grade }2:\quad\{e_1e_2,\;e_1e_3,\;e_2e_3,\;\cdots\;,\;e_{n-1}e_n\};\qquad&\text{total}:\quad\binom{n}{2}=n(n-1)/2 \\ \text{grade }3:\quad\{e_1e_2e_3,\;\cdots\;,\;e_{n-2}e_{n-1}e_n\};\qquad&\text{total}:\quad\binom{n}{3}=n(n-1)(n-2)/6 \\ \vdots& \\ \text{grade }n:\quad\{e_1e_2e_3\cdots e_n\};\qquad&\text{total}:\quad\binom{n}{n}=1\end{align}$$
Any basis multivector can be written in the form $e_1^{s_1}e_2^{s_2}e_3^{s_3}\cdots e_n^{s_n}$, where each exponent $s_i$ is either $1$ or $0$; the vector is there in the product, or it isn't there. We could also write this as $e_S$, where $S$ is a subset of $\{1,2,3,\cdots,n\}$. The total number of these is $2^n$.
Thus, any multivector $A$ can be expressed (uniquely) as
$$A=\sum_{S\subseteq\{1,\cdots,n\}}a_Se_S,$$
or as an array of $2^n$ real numbers $a_S$. The grade $k$ projection of $A$ is
$$\langle A\rangle_k=\sum_{S\subseteq\{1,\cdots,n\},\\|S|=k}a_Se_S.$$
Now let's consider the geometric product of two arbitrary multivectors $A$ and $B$. Since the product is bilinear, we only need to know how to multiply the $2^{2n}$ pairs of basis multivectors:
$$AB=\left(\sum_{S\subseteq\{1,\cdots,n\}}a_Se_S\right)\left(\sum_{S\subseteq\{1,\cdots,n\}}b_Se_S\right)$$
$$=\sum_{S\subseteq\{1,\cdots,n\},\\T\subseteq\{1,\cdots,n\}}(a_Sb_T)(e_Se_T)$$
We know how to multiply real numbers $a_Sb_T$. So what is $e_Se_T$?
I'm assuming that the basis vectors are orthogonal: $e_i\cdot e_j=0$ for $i\neq j$. (It's always possible to find an orthogonal basis, for any "dot product" (symmetric bilinear form) over any field (with characteristic not $2$).) They don't have to be normalized; let's just write $e_i\cdot e_i=g_i$, so the dot product is described by the list of numbers $g_1,g_2,g_3,\cdots,g_n$. The Euclidean dot product has $g_1=g_2=g_3=\cdots=g_n=1$.
Now here's the formula for the product. (I won't derive this here. In fact, it can be taken as a definition.) Let $S\cap T$ be the intersection of the two sets, $S\oplus T$ their symmetric difference ("xor"), and $S\times T$ their Cartesian product.
$$e_Se_T=(-1)^x\left(\prod_{i\in S\cap T}g_i\right)e_{S\oplus T},$$
where the sign exponent is
$$x=\sum_{i\in S,\\j\in T,\\i>j}(1)=\Big|\big\{(i,j)\in S\times T\mid i>j\big\}\Big|,$$
or, letting $s_i=1$ or $0$ according as $i\in S$,
$$x=\sum_{i\in\{1,\cdots,n\},\\j\in\{1,\cdots,n\},\\i>j}s_it_j.$$
(Note that we only need $x$ modulo $2$, so this sum is also "xor".)
The other products are defined in terms of the geometric product and grade projection:
$$e_S\wedge e_T=\langle e_Se_T\rangle_{|S|+|T|}=\begin{cases}e_Se_T,\quad\text{if}\;S\cap T=\{\} \\ 0,\quad\text{otherwise}\end{cases}$$
$$e_S\,\lrcorner\,e_T=\langle e_Se_T\rangle_{-|S|+|T|}=\begin{cases}e_Se_T,\quad\text{if}\;S\subseteq T\quad \\ 0,\quad\text{otherwise}\end{cases}$$
$$e_S\,\llcorner\,e_T=\langle e_Se_T\rangle_{|S|-|T|}=\begin{cases}e_Se_T,\quad\text{if}\;S\supseteq T\quad \\ 0,\quad\text{otherwise}\end{cases}$$
$$e_S\bullet e_T=\langle e_Se_T\rangle_{\big||S|-|T|\big|}=\begin{cases}e_Se_T,\quad\text{if}\;S\subseteq T\;\text{or}\;S\supseteq T \\ 0,\quad\text{otherwise}\end{cases}$$
$$e_S\circ e_T=\langle e_Se_T\rangle_0=\begin{cases}e_Se_T,\quad\text{if}\;S=T\qquad \\ 0,\quad\text{otherwise}\end{cases}$$
$$e_S\times e_T=\frac{e_Se_T-e_Te_S}{2}=\begin{cases}e_Se_T,\quad\text{if}\;|S||T|-|S\cap T|\;\text{is odd} \\ 0,\quad\text{otherwise}\end{cases}$$
$$e_S\odot e_T=\frac{e_Se_T+e_Te_S}{2}=\begin{cases}e_Se_T,\quad\text{if}\;|S||T|-|S\cap T|\;\text{is even} \\ 0,\quad\text{otherwise}\end{cases}$$
