signature {clifford} | R Documentation |

Getting and setting the signature of the Clifford algebra

```
signature(p,q=0)
is_ok_sig(s)
showsig(s)
## S3 method for class 'sigobj'
print(x,...)
```

`s` , `p` , `q` |
Integers, specifying number of positive elements on the
diagonal of the quadratic form, with |

`x` |
Object of class |

`...` |
Further arguments, currently ignored |

The signature functionality is modelled on `lorentz::sol()`

which
gets and sets the speed of light.

Clifford algebras require a bilinear form on \(\mathbb{R}^n\) \(\left\langle\cdot,\cdot\right\rangle\), usually written

\[\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 \]where \(p+q=n\). With this quadratic form the vector space is denoted \(\mathbb{R}^{p,q}\) and we say that \((p,q)\) is the signature of the bilinear form \(\left\langle\cdot,\cdot\right\rangle\). This gives rise to the Clifford algebra \(C_{p,q}\).

If the signature is \((p,q)\), then we have

\[ e_i e_i = +1\, (\mbox{if } 1\leq i\leq p), -1\, (\mbox{if } p+1\leq i\leq p+q), 0\, (\mbox{if } i>p+q). \]Note that \((p,0)\) corresponds to a positive-semidefinite quadratic form in which \(e_ie_i=+1\) for all \(i\leq p\) and \(e_ie_i=0\) for all \(i > p\). Similarly, \((0,q)\) corresponds to a negative-semidefinite quadratic form in which \(e_ie_i=-1\) for all \(i\leq q\) and \(e_ie_i=0\) for all \(i > q\).

Package idiom for a strictly positive-definite quadratic form would be to specify infinite \(p\) [in which case \(q\) is irrelevant] and for a strictly negative-definite quadratic form we would need \(p=0,q=\infty\).

If we specify \(e_ie_i=0\) for all \(i\), then the operation reduces to the wedge product of a Grassman algebra. Package idiom for this is to set \(p=q=0\), but this is not recommended: use the stokes package for Grassman algebras, which is much more efficient and uses nicer idiom.

Function `signature(p,q)`

returns the signature silently; but
setting option `show_signature`

to `TRUE`

makes
`signature()`

have the side-effect of calling `showsig()`

,
which changes the default prompt to display the signature, much like
`showSOL`

in the `lorentz`

package. There is special
dispensation for “infinite” \(p\) or \(q\).

Calling `signature()`

[that is, with no arguments] returns an
object of class `sigobj`

with elements corresponding to `p`

and
`q`

. The `sigobj`

class ensures that a near-infinite integer
such as `.Machine$integer.max`

will be printed as
“`Inf`

” rather than, for example,
“`2147483647`

”.

Function `is_ok_sig()`

is a helper function that checks for a
proper signature.

Robin K. S. Hankin

```
signature()
e(1)^2
e(2)^2
signature(1)
e(1)^2
e(2)^2 # note sign
signature(3,4)
sapply(1:10,function(i){drop(e(i)^2)})
signature(Inf) # restore default
# Nice mapping from Cl(0,2) to the quaternions (loading clifford and
# onion simultaneously is discouraged):
# library("onion")
# signature(0,2)
# Q1 <- rquat(1)
# Q2 <- rquat(1)
# f <- function(H){Re(H)+i(H)*e(1)+j(H)*e(2)+k(H)*e(1:2)}
# f(Q1)*f(Q2) - f(Q1*Q2) # zero to numerical precision
# signature(Inf)
```

[Package *clifford* version 1.0-8 Index]