--- title: "Function `getcoeffs()` in the `clifford` package" author: "Robin K. S. Hankin" output: html_vignette bibliography: clifford.bib vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{getcoeffs} %\usepackage[utf8]{inputenc} --- ```{r setup, include=FALSE} library("clifford") options(rmarkdown.html_vignette.check_title = FALSE) knitr::opts_chunk$set(echo = TRUE) knit_print.function <- function(x, ...){dput(x)} registerS3method( "knit_print", "function", knit_print.function, envir = asNamespace("knitr") ) ``` ```{r out.width='15%', out.extra='style="float:right; padding:10px"',echo=FALSE} knitr::include_graphics(system.file("help/figures/clifford.png", package = "clifford")) ``` ```{r showgetcoeffs} getcoeffs ``` To cite the `clifford` package in publications please use @hankin2022_clifford. This short document discusses function `getcoeffs()` in the `clifford` R package which, as its name suggests, retrieves specific coefficients from a clifford object. It is a relatively low-level helper function that is a wrapper for a `C` routine. It takes as arguments a clifford object and a list of terms: ```{r use_getcoeffs} set.seed(0) (a <- rcliff()) getcoeffs(a,list(1:2, 0, c(2,5), c(1,5,6), c(2,6), 1:2)) ``` Note that the first and last element of the returned vector are both the coefficient of $e_{12}$, _viz._ `-9`. The coefficients are returned in the form of a numeric vector [not a `disord` object: the order of the elements is determined by the order of argument `B`]. Compare standard extraction, e.g. `a[index]`, which returns a `clifford` object. Also, compare `coeffs()` which extracts _all_ coefficients of a clifford object: ```{r showcoeffs} coeffs(a) ``` The index for the constant is formally `list(numeric(0))`, but this is a pain to type, so there is special dispensation for argument `B` having list elements of zero, which are translated by helper function `list_modifier()` to `numeric(0)` and listified if necessary. The upshot is that a zero list element in argument `B` works as expected extracting the constant. Also, passing `B=0` works as expected, returning the constant (there is no need to coerce to a list: coercion is performed by `list_modifier)`. A similar scheme is used in the square bracket extraction and replacement methods Attempting to extract a coefficient of a term that includes a negative index will throw an error. The coefficient of a term including an index larger than indicated by `maxyterm()` will return zero. # References