Purpose
We use
F : \B{R}^n \rightarrow \B{R}^m
to denote the
AD function
corresponding to
the operation sequence stored in
f
.
Fix
R \in \B{R}^{\ell \times m}
and define the function
J(x) = R * F^{(1)} ( x )
Given the sparsity pattern
for
R
,
rev_jac_sparsity computes a sparsity pattern for
J(x)
.
x
Note that the sparsity pattern
J(x)
corresponds to the
operation sequence stored in
f
and does not depend on
the argument
x
.
(The operation sequence may contain
CondExp
and VecAD
operations.)
pattern_in
The argument
pattern_in
has prototype
const sparse_rc<SizeVector>& pattern_in
see sparse_rc
.
If
transpose
it is false (true),
pattern_in
is a sparsity pattern for
R
(
R^\R{T}
).
internal_bool
If this is true, calculations are done with sets represented by a vector
of boolean values. Otherwise, a vector of sets of integers is used.
pattern_out
This argument has prototype
sparse_rc<SizeVector>& pattern_out
This input value of
pattern_out
does not matter.
If
transpose
it is false (true),
upon return
pattern_out
is a sparsity pattern for
J(x)
(
J(x)^\R{T}
).
If
dependency
is true,
pattern_out
is a
dependency pattern
instead of sparsity pattern.
Sparsity for Entire Jacobian
Suppose that
R
is the
m \times m
identity matrix.
In this case,
pattern_out
is a sparsity pattern for
F^{(1)} ( x )
(
F^{(1)} (x)^\R{T}
)
if
transpose
is false (true).
Example
The file
rev_jac_sparsity.cpp
contains an example and test of this operation.
Input File: include/cppad/core/rev_jac_sparsity.hpp