lines 668-753 of file: lib/cplusplus/sparse.cpp {xrst_begin cpp_sparsity} {xrst_spell bool } Hessian Sparsity Patterns ######################### Syntax ****** | *f*\ ``.for_hes_sparsity`` ( *select_domain* , *select_range* , *pattern_out* ) | *f*\ ``.rev_hes_sparsity`` ( *select_domain* , *select_range* , *pattern_out* ) Purpose ******* We use :math:`F : \B{R}^n \rightarrow \B{R}^m` to denote the function corresponding to the operation sequence stored in *f* . Fix a diagonal matrix :math:`D \in \B{R}^{n \times n}`, fix a vector :math:`r \in \B{R}^m`, and define .. math:: H(x) = D (r^\R{T} F)^{(2)} ( x ) D Given a sparsity pattern for :math:`D` and :math:`r`, these routines compute a sparsity pattern for :math:`H(x)`. x * Note that a sparsity pattern for :math:`H(x)` corresponds to the operation sequence stored in *f* and does not depend on the argument *x* . f * The object *f* has prototype | |tab| ``d_fun`` *f* select_domain ************* The argument *select_domain* has prototype | |tab| ``const vec_bool&`` *select_domain* It has size *n* and is a sparsity pattern for the diagonal of :math:`D`; i.e., *select_domain* [ *j* ] is true if and only if :math:`D_{j,j}` is possibly non-zero. select_range ************ The argument *select_range* has prototype | |tab| ``const vec_bool&`` *select_range* It has size *m* and is a sparsity pattern for the vector :math:`r`; i.e., *select_range* [ *i* ] is true if and only if :math:`r_i` is possibly non-zero. pattern_out *********** This argument has prototype | |tab| ``sparse_rc<``\ *SizeVector*\ ``>&`` *pattern_out* This input value of *pattern_out* does not matter. Upon return *pattern_out* is a sparsity pattern for :math:`J(x)`. Sparsity for Component Wise Hessian *********************************** Suppose that :math:`D` is the identity matrix, and only the *i*-th component of *r* is possibly non-zero. In this case, *pattern_out* is a sparsity pattern for :math:`F_i^{(2)} ( x )`. {xrst_toc_hidden example/cplusplus/sparse_hes_pattern_xam.cpp } Example ******* :ref:`c++` {xrst_end cpp_sparsity}