A limited set of complex number operations can be used when constructing AD tapes. The available methods are listed in this help page.
adcomplex(real, imag = rep(advector(0), length(real)))# S3 method for adcomplex
Re(z)
# S3 method for adcomplex
Im(z)
# S4 method for adcomplex
show(object)
# S3 method for adcomplex
dim(x)
# S3 method for adcomplex
dim(x) <- value
# S3 method for adcomplex
[(x, ...)
# S3 method for adcomplex
[(x, ...) <- value
# S3 method for adcomplex
t(x)
# S3 method for adcomplex
length(x)
# S3 method for adcomplex
Conj(z)
# S3 method for adcomplex
Mod(z)
# S3 method for adcomplex
Arg(z)
# S3 method for adcomplex
+(x, y)
# S3 method for adcomplex
-(x, y)
# S3 method for adcomplex
*(x, y)
# S3 method for adcomplex
/(x, y)
# S3 method for adcomplex
exp(x)
# S3 method for adcomplex
log(x, base)
# S3 method for adcomplex
sqrt(x)
# S4 method for adcomplex
fft(z, inverse = FALSE)
# S4 method for advector
fft(z, inverse = FALSE)
# S3 method for adcomplex
rep(x, ...)
# S3 method for adcomplex
as.vector(x, mode = "any")
# S3 method for adcomplex
is.matrix(x)
# S3 method for adcomplex
as.matrix(x, ...)
# S4 method for adcomplex,ANY
%*%(x, y)
# S4 method for adcomplex,ANY
solve(a, b)
# S4 method for adcomplex
colSums(x)
# S4 method for adcomplex
rowSums(x)
# S4 method for adcomplex,ANY,ANY
diag(x)
# S4 method for advector,adcomplex
Ops(e1, e2)
# S4 method for adcomplex,advector
Ops(e1, e2)
Object of class "adcomplex".
Real part
Imaginary part
An object of class 'adcomplex'
An object of class 'adcomplex'
An object of class 'adcomplex'
Replacement value
As [
An object of class 'adcomplex'
Not implemented
As fft
As as.vector
matrix
matrix, vector or missing
Left operand
Right operand
adcomplex(): Construct adcomplex vector
Re(adcomplex): As complex
Im(adcomplex): As complex
show(adcomplex): Print method
dim(adcomplex): As dim
dim(adcomplex) <- value: As dim
[: As [
`[`(adcomplex) <- value: As [<-
t(adcomplex): As t
length(adcomplex): As length
Conj(adcomplex): As complex
Mod(adcomplex): As complex
Arg(adcomplex): As complex
+ : As complex
- : As complex
* : As complex
/ : As complex
exp(adcomplex): As complex
log(adcomplex): As complex
sqrt(adcomplex): As complex
fft(adcomplex): Fast Fourier Transform equivalent to fft. Notably this is the multivariate transform when x is an array.
fft(advector): If real input is supplied it is first converted to complex.
rep(adcomplex): As rep
as.vector(adcomplex): Apply for each of real/imag
is.matrix(adcomplex): Apply for real
as.matrix(adcomplex): Apply for each of real/imag
x %*% y: Complex matrix multiply
solve(a = adcomplex, b = ANY): Complex matrix inversion and solve
colSums(adcomplex): Apply for each of real/imag
rowSums(adcomplex): Apply for each of real/imag
diag(x = adcomplex, nrow = ANY, ncol = ANY): Apply for each of real/imag
Ops(e1 = advector, e2 = adcomplex): Mixed real/complex arithmetic
Ops(e1 = adcomplex, e2 = advector): Mixed real/complex arithmetic
## Tape using complex operations
F <- MakeTape(function(x) {
x <- as.complex(x)
y <- exp( x * ( 1 + 2i ) )
c(Re(y), Im(y))
}, numeric(1))
F
F(1)
## Complex FFT on the tape
G <- MakeTape(function(x) sum(Re(fft(x))), numeric(3))
G$simplify()
G$print()
Run the code above in your browser using DataLab