CppAD: A C++ Algorithmic Differentiation Package  20171217
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
template<class Vector_set >
void CppAD::local::reverse_sparse_hessian_addsub_op ( size_t  i_z,
const addr_t *  arg,
bool *  jac_reverse,
const Vector_set &  for_jac_sparsity,
Vector_set &  rev_hes_sparsity 
)
inline

Reverse mode Hessian sparsity pattern for add and subtract operators.

The C++ source code corresponding to a unary operation has the form

     z = x op y

where op is + or - and x, y are variables.

This routine is given the sparsity patterns the Hessian of a function G(z, y, x, ... ) and it uses them to compute the sparsity patterns for the Hessian of

     H( y, x, w , u , ... ) = G[ z(x,y) , y , x , w , u , ... ]
Template Parameters
Vector_setis the type used for vectors of sets. It can be either sparse_pack or sparse_list.
Parameters
i_zvariable index corresponding to the result for this operation; i.e. the row index in sparsity corresponding to z.
argarg[0] variable index corresponding to the left operand for this operator; i.e. the set with index arg[0] in var_sparsity is the spasity pattern correspoding to x.

arg[1] variable index corresponding to the right operand for this operator; i.e. the row index in sparsity patterns corresponding to y.
jac_reversejac_reverse[i_z] is false (true) if the Jacobian of G with respect to z is always zero (may be non-zero).

jac_reverse[ arg[0] ] is false (true) if the Jacobian with respect to x is always zero (may be non-zero). On input, it corresponds to the function G, and on output it corresponds to the function H.

jac_reverse[ arg[1] ] is false (true) if the Jacobian with respect to y is always zero (may be non-zero). On input, it corresponds to the function G, and on output it corresponds to the function H.
for_jac_sparsityThe set with index arg[0] in for_jac_sparsity for the is the forward Jacobian sparsity pattern for x.

The set with index arg[1] in for_jac_sparsity is the forward sparsity pattern for y.
rev_hes_sparsityThe set wiht index i_x in rev_hes_sparsity is the Hessian sparsity pattern for the function G where one of the partial derivatives is with respect to z.

The set with index arg[0] in rev_hes_sparsity is the Hessian sparsity pattern where one of the partial derivatives is with respect to x. On input, it corresponds to the function G, and on output it correspondst to H.

The set with index arg[1] in rev_hes_sparsity is the Hessian sparsity pattern where one of the partial derivatives is with respect to y. On input, it corresponds to the function G, and on output it correspondst to H.
Checked Assertions:
  • arg[0] < i_z
  • arg[1] < i_z

Definition at line 183 of file sparse_binary_op.hpp.

Referenced by rev_hes_sweep().