signature | 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 \mjteqnR^n\mathbbR^nR^n \mjeqn\left\langle\cdot,\cdot\right\rangle<.,.>, usually written

\mjdeqn\left\langle\mathbfx,\mathbf x\right\rangle=x_1^2+x_2^2+\cdots +x_p^2-x_p+1^2-\cdots -x_p+q^2 <x,x>=x_1^2+...+x_p^2-x_p+1^2-...-x_p+q^2

where \mjeqnp+q=np+q=n. With this quadratic form the vector space is denoted \mjteqnR^p,q\mathbbR^p,qR^p,q and we say that \mjseqn(p,q) is the signature of the bilinear form \mjeqn\left\langle\cdot,\cdot\right\rangle<.,.>. This gives rise to the Clifford algebra \mjeqnC_p,qC_p,q.

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

\mjdeqne_i e_i = \cases
+1 & if $1\leq i\leq p$

-1 & if $p+1\leq i\leq p+q$

0 & if $i>p+q$.

omitted

Note that \mjseqn(p,0) corresponds to a positive-semidefinite quadratic form in which \mjeqne_ie_i=+1omitted for all \mjeqni\leq pi<=p and \mjeqne_ie_i=0omitted for all \mjseqni > p. Similarly, \mjseqn(0,q) corresponds to a negative-semidefinite quadratic form in which \mjeqne_ie_i=-1omitted for all \mjeqni\leq qi<=q and \mjeqne_ie_i=0omitted for all \mjseqni > q.

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

If we specify \mjeqne_ie_i=0omitted for all \mjseqni, then the operation reduces to the wedge product of a Grassman algebra. Package idiom for this is to set \mjseqnp=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” \mjseqnp or \mjseqnq.

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)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.