Prev Next

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@
Construct an ADFun Object and Stop Recording

g = f

The AD<Base> object f can store an AD of Base operation sequence . It can then be used to calculate derivatives of the corresponding AD function @[@ F : B^n \rightarrow B^m @]@ where @(@ B @)@ is the space corresponding to objects of type Base .

If the argument x is present, it has prototype
VectorAD &x
It must be the vector argument in the previous call to Independent . Neither its size, or any of its values, are allowed to change between calling

If the argument y is present, it has prototype
VectorAD &y
The sequence of operations that map x to y are stored in the ADFun object f .

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

Default Constructor
The default constructor
creates an AD<Base> object with no corresponding operation sequence; i.e.,
returns the value zero (see size_var ).

Sequence Constructor
The sequence constructor
creates the AD<Base> object f , stops the recording of AD of Base operations corresponding to the call
and stores the corresponding operation sequence in the object f . It then stores the zero order Taylor coefficients (corresponding to the value of x ) in f . This is equivalent to the following steps using the default constructor:
  1. Create f with the default constructor
  2. Stop the tape and storing the operation sequence using
    (see Dependent ).
  3. Calculate the zero order Taylor coefficients for all the variables in the operation sequence using
    with p equal to zero and the elements of x_p equal to the corresponding elements of x (see Forward ).

Copy Constructor
It is an error to attempt to use the ADFun<Base> copy constructor; i.e., the following syntax is not allowed:
where f is an ADFun<Base> object. Use its default constructor instead and its assignment operator.

Assignment Operator
The ADFun<Base> assignment operation
g = f
makes a copy of the operation sequence currently stored in f in the object g . The object f is not affected by this operation and can be const. All of information (state) stored in f is copied to g and any information originally in g is lost.

Taylor Coefficients
The Taylor coefficient information currently stored in f (computed by f.Forward ) is copied to g . Hence, directly after this operation
g.size_order() == f.size_order()

Sparsity Patterns
The forward Jacobian sparsity pattern currently stored in f (computed by f.ForSparseJac ) is copied to g . Hence, directly after this operation
g.size_forward_bool() == f.size_forward_bool()
g.size_forward_set()  == f.size_forward_set()

Parallel Mode
The call to Independent, and the corresponding call to
f.Dependent( xy)
or abort_recording , must be preformed by the same thread; i.e., thread_alloc::thread_num must be the same.


Sequence Constructor
The file independent.cpp contains an example and test of the sequence constructor. It returns true if it succeeds and false otherwise.

Default Constructor
The files fun_check.cpp and hes_lagrangian.cpp contain an examples and tests using the default constructor. They return true if they succeed and false otherwise.

Assignment Operator
The file fun_assign.cpp contains an example and test of the ADFun<Base> assignment operator. It returns true if it succeeds and false otherwise.
Input File: cppad/core/fun_construct.hpp