Prev | Next | Faq |
Independent(u);
v = u[0];
behave differently from the code sequence
v = u[0];
Independent(u);
Before the call to Independent
,
u[0]
is a parameter
and after the call it is a variable.
Thus in the first case,
v
is a variable
and in the second case it is a parameter.
bug/template.sh
for a template that you can
edit for that purpose.
The smaller the program, the better the bug report.
NDEBUG
is true,
you will get an error message stating that
CompareChange
is not a member of the
ADFun
template class.
AD< std::complex<Base> >
std::complex< AD<Base> >
The complex abs function
is differentiable
with respect to its real and imaginary parts,
but it is not complex differentiable.
Thus one would prefer to use
std::complex< AD<Base> >
On the other hand, the C++ standard only specifies
std::complex<Type>
where
Type
is
float
, double
, or lone double
.
The effect of instantiating the template complex for any other type
is unspecified.
The examples are also used to test the correctness of CppAD
and to check your installation.
For these two uses, it is helpful to run all the tests
and to know which ones failed.
The actual code in CppAD uses the ErrorHandler
utility
to signal exceptions.
Specifications for redefining this action are provided.
Yes (see forward_zero
).
In general, the best mode depends on the number of domain and range
components in the function that your are differentiating.
Each call to Forward
computes the derivative of all
the range directions with respect to one domain direction.
Each call to Reverse
computes the derivative of one
range direction with respect to all the domain directions.
The times required for (speed of)
calls Forward
and Reverse
are about equal.
The Parameter
function can be used to quickly determine that
some range directions have derivative zero.
CPPAD_TESTVECTOR
instead of a namespace for
the CppAD testvector
class ?
The preprocessor symbol
CPPAD_TESTVECTOR
determines which
SimpleVector
template class is used for extensive testing.
The default definition for CPPAD_TESTVECTOR
is the
CppAD::vector
template class, but it can be changed.
Note that all the preprocessor symbols that are defined or used
by CppAD begin with either CPPAD
(some old deprecated symbols begin with CppAD
).
NDEBUG
defined.
(The speed_cppad
tests do this.)
Note that defining NDEBUG
will turn off all of the error checking and reporting that
is done using ErrorHandler
.
hold_memory
with
value
equal to true.
CppAD uses memory to store a different tape for recording operations
for each
AD<Base>
type that is used.
If you have a very large number calculations that are recorded
on a tape, the tape will keep growing to hold the necessary information.
Eventually, virtual memory may be used to store the tape
and the calculations may slow down because of necessary disk access.