grade {clifford} | R Documentation |

## The grade of a clifford object

### Description

The grade of a term is the number of basis vectors in it.

### Usage

```
grade(C, n, drop=TRUE)
grade(C,n) <- value
grades(x)
gradesplus(x)
gradesminus(x)
gradeszero(x)
```

### Arguments

`C` , `x` |
Clifford object |

`n` |
Integer vector specifying grades to extract |

`value` |
Replacement value, a numeric vector |

`drop` |
Boolean, with default |

### Details

A term is a single expression in a Clifford object. It has a coefficient and is described by the basis vectors it comprises. Thus \(4e_{234}\) is a term but \(e_3 + e_5\) is not.

The grade of a term is the number of basis vectors in it. Thus the grade of \(e_1\) is 1, and the grade of \(e_{125}=e_1e_2e_5\) is 3. The grade operator \(\left\langle\cdot\right\rangle_r\) is used to extract terms of a particular grade, with

\[ A=\left\langle A\right\rangle_0 + \left\langle A\right\rangle_1 + \left\langle A\right\rangle_2 + \cdots = \sum_r\left\langle A\right\rangle_r \]for any Clifford object *A*. Thus \(\left\langle
A\right\rangle_r\) is said to be homogenous of grade *r*.
Hestenes sometimes writes subscripts that specify grades using an
overbar as in \(\left\langle
A\right\rangle_{\overline{r}}\). It is conventional to denote
the zero-grade object \(\left\langle A\right\rangle_0\) as
simply \(\left\langle A\right\rangle\).

We have

\[ \left\langle A+B\right\rangle_r=\left\langle A\right\rangle_r + \left\langle B\right\rangle_r\qquad \left\langle\lambda A\right\rangle_r=\lambda\left\langle A\right\rangle_r\qquad \left\langle\left\langle A\right\rangle_r\right\rangle_s=\left\langle A\right\rangle_r\delta_{rs}. \]Function `grades()`

returns an (unordered) vector specifying the
grades of the constituent terms. Function `grades<-()`

allows
idiom such as `grade(x,1:2) <- 7`

to operate as expected [here to
set all coefficients of terms with grades 1 or 2 to value 7].

Function `gradesplus()`

returns the same but counting only basis
vectors that square to *+1*, and `gradesminus()`

counts only
basis vectors that square to *-1*. Function `signature()`

controls which basis vectors square to *+1* and which to *-1*.

From Perwass, page 57, given a bilinear form

\[\left\langle{\mathbf x},{\mathbf x}\right\rangle=x_1^2+x_2^2+\cdots +x_p^2-x_{p+1}^2-\cdots -x_{p+q}^2 \]and a basis blade \(e_\mathbb{A}\) with \(\mathbb{A}\subseteq\left\lbrace 1,\ldots,p+q\right\rbrace\), then

\[ \mathrm{gr}(e_\mathbb{A}) = \left|\left\lbrace a\in\mathbb{A}\colon 1\leq a\leq p+q\right\rbrace\right| \] \[ \mathrm{gr}_{+}(e_\mathbb{A}) = \left|\left\lbrace a\in\mathbb{A}\colon 1\leq a\leq p\right\rbrace\right| \] \[ \mathrm{gr}_{-}(e_\mathbb{A}) = \left|\left\lbrace a\in\mathbb{A}\colon p < a\leq p+q\right\rbrace\right| \]Function `gradeszero()`

counts only the basis vectors squaring to
zero (I have not seen this anywhere else, but it is a logical
suggestion).

If the signature is zero, then the Clifford algebra reduces to a
Grassman algebra and products match the wedge product of exterior
calculus. In this case, functions `gradesplus()`

and
`gradesminus()`

return `NA`

.

Function `grade(C,n)`

returns a clifford object with just the
elements of grade `g`

, where `g %in% n`

.

The zero grade term, `grade(C,0)`

, is given more naturally by
`const(C)`

.

Function `c_grade()`

is a helper function that is documented at
`Ops.clifford.Rd`

.

### Note

In the C code, “term” has a slightly different meaning, referring to the vectors without the associated coefficient.

### Author(s)

Robin K. S. Hankin

### References

C. Perwass 2009. “Geometric algebra with applications in engineering”. Springer.

### See Also

### Examples

```
a <- clifford(sapply(seq_len(7),seq_len),seq_len(7))
a
grades(a)
grade(a,5)
signature(2,2)
x <- rcliff()
drop(gradesplus(x) + gradesminus(x) + gradeszero(x) - grades(x))
a <- rcliff()
a == Reduce(`+`,sapply(unique(grades(a)),function(g){grade(a,g)}))
```

*clifford*version 1.0-8 Index]