50% off: Unlimited data and AI learning.
The State of Data & AI Literacy 2025

clifford (version 1.0-8)

rcliff: Random clifford objects

Description

Random Clifford algebra elements, intended as quick “get you going” examples of clifford objects

Usage

rcliff(n=9, d=6, g=4, include.fewer=TRUE)
rblade(d=7, g=3)

Arguments

n

Number of terms

d

Dimensionality of underlying vector space

g

Maximum grade of any term

include.fewer

Boolean, with FALSE meaning to return a clifford object comprising only terms of grade g, and default TRUE meaning to include terms with grades less than g (including a term of grade zero, that is, a scalar)

Author

Robin K. S. Hankin

Details

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 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 (e_1+2e_2)(e_1+3e_5)(e1+2e2)^(e1+3e5).

Perwass gives the following lemma:

Given blades A_ r, B_ s, C_ tsee PDF, then

A_ r B_ s C_ t _0 = C_ t A_ r B_ s _0 omitted; see PDF

In the proof he notes in an intermediate step that

A_ r B_ s _t * C_ t = C_ t * A_ r B_ s _t = C_ t A_ r B_ s _0. omitted; see PDF

Package idiom is shown in the examples.

See Also

term,grade

Examples

Run this code

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

Run the code above in your browser using DataLab