Prev Next

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

Syntax
xq = af.reverse(qyq)

af
This object has prototype
     a_fun 
af
Note that it is effectively const, but some details that are not visible to the user may change, so it is not declared const.

Notation

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), S
This is the same function as X(t) in the previous call to af.forward . We use @(@ S \in \B{R}^{n \times q} @)@ to denote the Taylor coefficients of @(@ X(t) @)@.

Y(t), T
This is the same function as Y(t) in the previous call to af.forward . We use @(@ T \in \B{R}^{m \times q} @)@ to denote the Taylor coefficients of @(@ Y(t) @)@. We also use the notation @(@ T(S) @)@ to express the fact that the Taylor coefficients for @(@ Y(t) @)@ are a function of the Taylor coefficients of @(@ X(t) @)@.

G(T)
We use the notation @(@ G : \B{R}^{m \times p} \rightarrow \B{R} @)@ for a function that the calling routine chooses.

q
This argument has prototype
     int 
q
Its value is the number of the Taylor coefficient (for each variable) that we are computing the derivative with respect to. It must be greater than zero, and less than or equal p + 1 , the number of Taylor coefficient stored in af . (The number of Taylor coefficients is equal to p+1 where p is the order for the previous forward call using af .)

yq
This argument has prototype
     const vec_double& 
yq
and its size must be m*q . For 0 <= i < m and 0 <= k < q , yqi * q + k ] is the partial derivative of @(@ G(T) @)@ with respect to the k-th order Taylor coefficient for the i-th component function; i.e., the partial derivative of @(@ G(T) @)@ w.r.t. @(@ Y_i^{(k)} (t) / k ! @)@.

xq
The result has prototype
     vec_double 
xq
and its size is n*q . For 0 <= j < n and 0 <= k < q , yqj * q + k ] is the partial derivative of @(@ G(T(S)) @)@ with respect to the k-th order Taylor coefficient for the j-th component function; i.e., the partial derivative of @(@ G(T(S)) @)@ w.r.t. @(@ S_j^{(k)} (t) / k ! @)@.

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