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.
advector(x)# S3 method for advector
Ops(e1, e2)
# S3 method for advector
Math(x, ...)
# S3 method for advector
as.vector(x, mode = "any")
# S3 method for advector
as.complex(x, ...)
# S3 method for advector
aperm(a, perm, ...)
# S3 method for advector
c(...)
# S3 method for advector
[(x, ...)
# S3 method for advector
[(x, ...) <- value
# S3 method for advector
[[(x, ...)
# S3 method for advector
rep(x, ...)
# S3 method for advector
is.nan(x)
# S3 method for advector
is.finite(x)
# S3 method for advector
is.infinite(x)
# S3 method for advector
is.na(x)
# S3 method for advector
sum(x, ..., na.rm = FALSE)
# S3 method for advector
mean(x, ...)
# S3 method for advector
prod(x, ..., na.rm)
# S3 method for advector
is.numeric(x)
# S3 method for advector
as.double(x, ...)
# S3 method for advector
Complex(z)
# S3 method for advector
Summary(..., na.rm = FALSE)
# S3 method for advector
diff(x, lag = 1L, differences = 1L, ...)
# S3 method for advector
print(x, ...)
# S4 method for num,ad,ad
ifelse(test, yes, no)
# S4 method for num,num,num
ifelse(test, yes, no)
Object of class "advector"
.
numeric or advector
advector
advector
Additional arguments
FIXME might not be handled correctly by as.vector
advector with dimension attribute
Permutation as in aperm
Replacement value implicitly converted to AD
Must be FALSE (default)
Complex (not allowed)
As diff
As diff
logical
vector
advector
advector
advector()
: Construct a new advector
Ops(advector)
: Binary operations
Math(advector)
: Unary operations
as.vector(advector)
: Makes array(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: If x
is an AD type, c(x,1)
works while c(1,x)
does not!
[
: Equivalent of [
`[`(advector) <- value
: Equivalent of [<-
[[
: Equivalent of [[
rep(advector)
: Equivalent of rep. Makes outer(x,x,...)
work.
is.nan(advector)
: Equivalent of is.nan. Check NaN status of a constant advector
expression. If not constant throw an error.
is.finite(advector)
: Equivalent of is.finite. Check finite status of a constant advector
expression. If not constant throw an error.
is.infinite(advector)
: Equivalent of is.infinite. Check infinity status of a constant advector
expression. If not constant throw an error.
is.na(advector)
: Equivalent of is.na. Check NA status of an advector
. NAs can only occur directly (as constants) or indirectly as the result of an operation with NA operands. For a tape built with non-NA parameters the NA status of any expression is constant and can therefore safely be used as part of the calculations. (assuming correct propagation of NAs via C-level arithmetic).
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 beyond x
are supported.
prod(advector)
: Equivalent of prod except na.rm
not allowed.
is.numeric(advector)
: Makes cov2cor()
work. FIXME: Any unwanted side-effects with this?
as.double(advector)
: Makes as.numeric()
work.
Complex(advector)
: Complex operations are redirected to adcomplex.
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
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.
x <- advector(1:9)
a <- array(x, c(3,3)) ## as an array
outer(x, x, "+") ## Implicit via 'rep'
rev(x) ## Implicit via '['
Run the code above in your browser using DataLab