| Prev | Next |  |  |  |  |  |  |

Forward Mode Hessian Sparsity Patterns
Syntax
`f.for_hes_sparsity(
select_domain, select_range, internal_bool, pattern_out
)`
Purpose
We use F : R n → R m to denote the AD function corresponding to the operation sequence stored in `f` . Fix a diagonal matrix D ∈ R n × n , a vector s ∈ R m and define the function H ( x ) = D ( s T F ) ( 2 ) ( x ) D Given the sparsity for D and s , `for_hes_sparsity` computes a sparsity pattern for H ( x ) .
x
Note that the sparsity pattern H ( x ) corresponds to the operation sequence stored in `f` and does not depend on the argument `x` .
BoolVector
The type `BoolVector` is a SimpleVector class with elements of type `bool`.
SizeVector
The type `SizeVector` is a SimpleVector class with elements of type `size_t`.
f
The object `f` has prototype `
ADFun<Base> f
`
select_domain
The argument `select_domain` has prototype `
const BoolVector& select_domain
` It has size n and specifies which components of the diagonal of D are non-zero; i.e., `select_domain[j]` is true if and only if D j , j is possibly non-zero.
select_range
The argument `select_range` has prototype `
const BoolVector& select_range
` It has size m and specifies which components of the vector s are non-zero; i.e., `select_range[i]` is true if and only if s i is possibly non-zero.
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. Upon return `pattern_out` is a sparsity pattern for H ( x ) .
Sparsity for Entire Hessian
Suppose that R is the n × n identity matrix. In this case, `pattern_out` is a sparsity pattern for ( s T F ) F ( 2 ) ( x ) .
Algorithm
See Algorithm II in Computing sparse Hessians with automatic differentiation by Andrea Walther. Note that `s` provides the information so that 'dead ends' are not included in the sparsity pattern.
Example
The file for_hes_sparsity.cpp contains an example and test of this operation. It returns true if it succeeds and false otherwise.

Input File: cppad/core/for_hes_sparsity.hpp