Prev Next

@(@\newcommand{\B}[1]{ {\bf #1} } \newcommand{\R}[1]{ {\rm #1} }@)@
Forward Mode AD

Syntax
yp = af.forward(pxp)

Taylor Coefficient
For a function @(@ g(t) @)@ of a scalar argument @(@ t \in \B{R} @)@, the p-th order Taylor coefficient is its p-th order derivative divided by p factorial and evaluated at @(@ t = 0 @)@; i.e., @[@ g^{(p)} (0) / p ! @]@

af
This object has prototype
     a_fun 
af
Note that its state is changed by this operation because it keeps all the Taylor coefficient that it calculates for every variable in recording it stored. See more discussion of this fact under the heading p below.

f(x)
We use the notation @(@ f: \B{R}^n \rightarrow \B{R}^m @)@ for the function corresponding to af . Note that n is the size of ax and m is the size of ay in to the constructor for af .

X(t)
We use the notation @(@ X : \B{R} \rightarrow \B{R}^n @)@ for a function that the calling routine chooses.

Y(t)
We define the function @(@ Y : \B{R} \rightarrow \B{R}^n @)@ by @(@ Y(t) = f(X(t)) @)@.

p
This argument has prototype
     int 
p
i.e., it is a positive integer. Its value is the order of the Taylor coefficient being calculated. If there was no call to forward for this af , the value of p must be zero. Otherwise, it must be between zero and one greater that its value for the previous call using this af . After this call, the Taylor coefficients for orders zero though p , and for every variable in the recording, will be stored in af .

xp
This argument has prototype
     const vec_double& 
xp
and its size must be n . It specifies the p-th order Taylor coefficients for X(t) .

yp
The result has prototype
     vec_double 
yp
and its size is m . It is the p-th order Taylor coefficients for @(@ Y(t) @)@.

Example
C++ , Octave , Perl , Python .
Input File: lib/a_fun.cpp