\(\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}} }\)
atomic_two_rev_sparse_jac¶
View page sourceAtomic Reverse Jacobian Sparsity Patterns¶
Syntax¶
rev_sparse_jac
( q , rt , st , x )Deprecated 2016-06-27¶
ok = afun .
rev_sparse_jac
( q , rt , st )
Purpose¶
This function is used by RevSparseJac to compute Jacobian sparsity patterns. If you are using RevSparseJac , one of the versions of this virtual function must be defined by the atomic_user class.
For a fixed matrix \(R \in \B{R}^{q \times m}\), the Jacobian of \(R * f( x )\) with respect to \(x \in \B{R}^n\) is
Given a Sparsity Pattern for \(R\),
rev_sparse_jac
computes a sparsity pattern for \(S(x)\).
Implementation¶
If you are using RevSparseJac or ForSparseHes , this virtual function must be defined by the atomic_user class.
q¶
The argument q has prototype
size_t
q
It specifies the number of rows in \(R \in \B{R}^{q \times m}\) and the Jacobian \(S(x) \in \B{R}^{q \times n}\).
rt¶
This argument has prototype
const
atomic_sparsity & rt
and is a atomic_sparsity pattern for \(R^\R{T} \in \B{R}^{m \times q}\).
st¶
This argument has prototype
atomic_sparsity & st
The input value of its elements are not specified (must not matter). Upon return, s is a atomic_sparsity pattern for \(S(x)^\R{T} \in \B{R}^{n \times q}\).
x¶
The argument has prototype
const CppAD::vector<
Base >& x
and size is equal to the n . This is the Value corresponding to the parameters in the vector ax (when the atomic function was called). To be specific, if
if
( Parameter
( ax [ i ]) == true
)Value
( ax [ i ] );else
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.