Learn R Programming

RTMB (version 1.6)

ADcomplex: AD complex numbers

Description

A limited set of complex number operations can be used when constructing AD tapes. The available methods are listed in this help page.

Usage

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)

Value

Object of class "adcomplex".

Arguments

real

Real part

imag

Imaginary part

z

An object of class 'adcomplex'

object

An object of class 'adcomplex'

x

An object of class 'adcomplex'

value

Replacement value

...

As [

y

An object of class 'adcomplex'

base

Not implemented

inverse

As fft

mode

As as.vector

a

matrix

b

matrix, vector or missing

e1

Left operand

e2

Right operand

Functions

  • 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

Examples

Run this code
## 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