Prev Next

First Order Reverse Mode

Syntax
dw = f.Reverse(1, w)

Purpose
We use  F : B^n \rightarrow B^m to denote the AD function corresponding to f. The function  W : B^n \rightarrow B is defined by  \[
     W(x) = w_0 * F_0 ( x ) + \cdots + w_{m-1} * F_{m-1} (x)
\] 
The result of this operation is the derivative  dw = W^{(1)} (x) ; i.e.,  \[
     dw = w_0 * F_0^{(1)} ( x ) + \cdots + w_{m-1} * F_{m-1}^{(1)} (x)
\] 
Note that if  w is the i-th elementary vector ,  dw = F_i^{(1)} (x) .

f
The object f has prototype
     const ADFun<
Basef
Before this call to Reverse, the value returned by
     
f.size_taylor()
must be greater than or equal one (see size_taylor ).

x
The vector x in expression for dw above corresponds to the previous call to ForwardZero using this ADFun object f; i.e.,
     
f.Forward(0, x)
If there is no previous call with the first argument zero, the value of the independent variables during the recording of the AD sequence of operations is used for x.

w
The argument w has prototype
     const 
Vector &w
(see Vector below) and its size must be equal to m, the dimension of the range space for f.

dw
The result dw has prototype
     
Vector dw
(see Vector below) and its value is the derivative  W^{(1)} (x) . The size of dw is equal to n, the dimension of the domain space for f.

Vector
The type Vector must be a SimpleVector class with elements of type Base. The routine CheckSimpleVector will generate an error message if this is not the case.

Example
The file reverse_one.cpp contains an example and test of this operation. It returns true if it succeeds and false otherwise.
Input File: omh/reverse.omh