ADvector {RTMB} | R Documentation |
The AD vector and its methods
Description
An advector
is a class used behind the scenes to replace
normal R numeric objects during automatic differentiation. An
advector
has a 'temporary lifetime' and therefore you do not
see / need to know it as a normal user.
Usage
advector(x)
## S3 method for class 'advector'
Ops(e1, e2)
## S3 method for class 'advector'
Math(x, ...)
## S3 method for class 'advector'
as.vector(x, mode = "any")
## S3 method for class 'advector'
as.complex(x, ...)
## S3 method for class 'advector'
aperm(a, perm, ...)
## S3 method for class 'advector'
c(...)
## S3 method for class 'advector'
x[...]
## S3 replacement method for class 'advector'
x[...] <- value
## S3 method for class 'advector'
x[[...]]
## S3 method for class 'advector'
rep(x, ...)
## S3 method for class 'advector'
sum(x, ..., na.rm = FALSE)
## S3 method for class 'advector'
mean(x, ...)
## S3 method for class 'advector'
prod(x, ..., na.rm)
## S3 method for class 'advector'
is.numeric(x)
## S3 method for class 'advector'
as.double(x, ...)
## S3 method for class 'advector'
Complex(z)
## S3 method for class 'advector'
Summary(..., na.rm = FALSE)
## S3 method for class 'advector'
diff(x, lag = 1L, differences = 1L, ...)
## S3 method for class 'advector'
print(x, ...)
## S4 method for signature 'num,ad,ad'
ifelse(test, yes, no)
## S4 method for signature 'num,num,num'
ifelse(test, yes, no)
## S4 method for signature 'advector,advector,missing'
outer(X, Y)
Arguments
x |
numeric or advector |
e1 |
advector |
e2 |
advector |
... |
Additional arguments |
mode |
FIXME might not be handled correctly by |
a |
advector with dimension attribute |
perm |
Permutation as in |
value |
Replacement value implicitly converted to AD |
na.rm |
Must be FALSE (default) |
z |
Complex (not allowed) |
lag |
As diff |
differences |
As diff |
test |
|
yes |
|
no |
|
X |
As outer |
Y |
As outer |
Details
An AD vector (class='advector') is an atomic R vector of 'codes' that are internally interpretable as 'AD scalars'. A substantial part of R's existing S3 matrix and array functionality can be re-used for AD vectors.
Value
Object of class "advector"
.
Functions
-
advector()
: Construct a new advector -
Ops(advector)
: Binary operations -
Math(advector)
: Unary operations -
as.vector(advector)
: Makesarray(x)
work. -
as.complex(advector)
: Convert to ADcomplex. Note that dimensions are dropped for consistency with base R. -
aperm(advector)
: Equivalent of aperm -
c(advector)
: Equivalent of c. However note the limitation for mixed types: Ifx
is an AD type,c(x,1)
works whilec(1,x)
does not! -
[
: Equivalent of [ -
`[`(advector) <- value
: Equivalent of [<- -
[[
: Equivalent of [[ -
rep(advector)
: Equivalent of rep. Makesouter(x,x,...)
work. -
sum(advector)
: Equivalent of sum.na.rm=TRUE
is allowed, but note that this feature assumes correct propagation of NAs via C-level arithmetic. -
mean(advector)
: Equivalent of mean except no arguments beyondx
are supported. -
prod(advector)
: Equivalent of prod exceptna.rm
not allowed. -
is.numeric(advector)
: Makescov2cor()
work. FIXME: Any unwanted side-effects with this? -
as.double(advector)
: Makesas.numeric()
work. -
Complex(advector)
: Complex operations are not allowed and will throw an error. -
Summary(advector)
: Non differentiable Summary operations (e.g.min
max
) are not allowed and will throw an error. -
diff(advector)
: Equivalent of diff -
print(advector)
: Print method -
ifelse(test = num, yes = ad, no = ad)
: Equivalent of ifelse -
ifelse(test = num, yes = num, no = num)
: Default method -
outer(X = advector, Y = advector, FUN = missing)
: Equivalent of outer
Examples
x <- advector(1:9)
a <- array(x, c(3,3)) ## as an array
outer(x, x, "+") ## Implicit via 'rep'
rev(x) ## Implicit via '['