| rcliff | R Documentation | 
Random Clifford algebra elements, intended as quick
“get you going” examples of clifford objects
rcliff(n=9, d=6, g=4, include.fewer=TRUE)
rclifff(n=100,d=20,g=10,include.fewer=TRUE)
rblade(d=7, g=3)
| n | Number of terms | 
| d | Dimensionality of underlying vector space | 
| g | Maximum grade of any term | 
| include.fewer | Boolean, with  | 
Function rcliff() gives a quick nontrivial Clifford object,
typically with terms having a range of grades (see ‘grade.Rd’);
argument include.fewer=FALSE ensures that all terms are of the
same grade.  Function rclifff() is the same but returns a more
complicated object by default.
Function rblade() gives a Clifford object that is a
blade (see ‘term.Rd’).  It returns the wedge product of a
number of 1-vectors, for example
\left(e_1+2e_2\right)\wedge\left(e_1+3e_5\right).
Perwass gives the following lemma:
Given blades A_{\langle r\rangle}, B_{\langle s\rangle},
    C_{\langle t\rangle}, then
    \langle
    A_{\langle r\rangle}
    B_{\langle s\rangle}
    C_{\langle t\rangle}
    \rangle_0
    =
    \langle
    C_{\langle t\rangle}
    A_{\langle r\rangle}
    B_{\langle s\rangle}
    \rangle_0
  
In the proof he notes in an intermediate step that
    \langle
    A_{\langle r\rangle}
    B_{\langle s\rangle}
    \rangle_t * 
    C_{\langle t\rangle}
    =
    C_{\langle t\rangle} * 
    \langle
    A_{\langle r\rangle}
    B_{\langle s\rangle}
    \rangle_t
    = 
    \langle
    C_{\langle t\rangle}
    A_{\langle r\rangle}
    B_{\langle s\rangle}
    \rangle_0.
  
Package idiom is shown in the examples.
If the grade exceeds the dimensionality, g>d, then
the result is arguably zero; rcliff() returns an error.
Robin K. S. Hankin
term,grade
rcliff()
rcliff(d=3,g=2)
rcliff(3,10,7)
rcliff(3,10,7,include=TRUE)
x1 <- rcliff()
x2 <- rcliff()
x3 <- rcliff()
x1*(x2*x3) == (x1*x2)*x3  # should be TRUE
rblade()
# We can invert blades easily:
a <- rblade()
ainv <- rev(a)/scalprod(a)
zap(a*ainv)  # 1 (to numerical precision)
zap(ainv*a)  # 1 (to numerical precision)
# Perwass 2009, lemma 3.9:
A <- rblade(d=9,g=4)  
B <- rblade(d=9,g=5)  
C <- rblade(d=9,g=6)  
grade(A*B*C,0)-grade(C*A*B,0)   # zero to numerical precision
# Intermediate step
x1 <- grade(A*B,3) %star% C
x2 <- C %star% grade(A*B,3)
x3 <- grade(C*A*B,0)
max(x1,x2,x3) - min(x1,x2,x3)   # zero to numerical precision
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.