Purpose
This function is used by ForSparseJac
to compute
Jacobian sparsity patterns.
For a fixed matrix @(@
R \in B^{n \times q}
@)@,
the Jacobian of @(@
f( x + R * u)
@)@ with respect to @(@
u \in B^q
@)@ is
@[@
S(x) = f^{(1)} (x) * R
@]@
Given a sparsity pattern
for @(@
R
@)@,
for_sparse_jac computes a sparsity pattern for @(@
S(x)
@)@.
q
The argument
q
has prototype
size_t q
It specifies the number of columns in
@(@
R \in B^{n \times q}
@)@ and the Jacobian
@(@
S(x) \in B^{m \times q}
@)@.
r
This argument has prototype
const atomic_sparsity& r
and is a atomic_sparsity
pattern for
@(@
R \in B^{n \times q}
@)@.
s
This argument has prototype
atomic_sparsity& s
The input values of its elements
are not specified (must not matter).
Upon return,
s
is a
atomic_sparsity
pattern for
@(@
S(x) \in B^{m \times q}
@)@.
x
The argument has prototype
const CppAD::vector<Base>& x
and size is equal to the
n
.
This is the Value
value corresponding to the parameters in the
vector ax
(when the atomic function was called).
To be specific, if
if( Parameter(ax[i]) == true ) x[i] = Value( ax[i] );
else x[i] = CppAD::numeric_limits<Base>::quiet_NaN();
The version of this function with out the
x
argument is deprecated;
i.e., you should include the argument even if you do not use it.
ok
The return value
ok
has prototype
bool ok
If it is true, the corresponding evaluation succeeded,
otherwise it failed.
Examples
The file atomic_for_sparse_jac.cpp
contains an example and test
that uses this routine.
It returns true if the test passes and false if it fails.
Input File: cppad/core/atomic_base.hpp