1 # ifndef CPPAD_CORE_REV_HES_SPARSITY_HPP
2 # define CPPAD_CORE_REV_HES_SPARSITY_HPP
163 template <
class Base>
164 template <
class BoolVector,
class SizeVector>
166 const BoolVector& select_range ,
170 {
size_t n = Domain();
174 size_t( select_range.size() ) == m,
175 "rev_hes_sparsity: size of select_range is not equal to "
176 "number of dependent variables"
181 for(
size_t i = 0; i < num_var_tape_; i++)
182 rev_jac_pattern[i] =
false;
185 for(
size_t i = 0; i < m; i++)
186 rev_jac_pattern[ dep_taddr_[i] ] = select_range[i];
191 for_jac_sparse_pack_.n_set() > 0,
192 "rev_hes_sparsity: previous call to for_jac_sparsity did not "
193 "use bool for interanl sparsity patterns."
196 size_t ell = for_jac_sparse_pack_.end();
201 internal_hes.
resize(num_var_tape_, ell);
208 for_jac_sparse_pack_,
209 rev_jac_pattern.
data(),
215 transpose, ind_taddr_, internal_hes, pattern_out
220 for_jac_sparse_set_.n_set() > 0,
221 "rev_hes_sparsity: previous call to for_jac_sparsity did not "
222 "use bool for interanl sparsity patterns."
225 size_t ell = for_jac_sparse_set_.end();
230 internal_hes.
resize(num_var_tape_, ell);
238 rev_jac_pattern.
data(),
244 transpose, ind_taddr_, internal_hes, pattern_out
void rev_hes_sparsity(const BoolVector &select_range, bool transpose, bool internal_bool, sparse_rc< SizeVector > &pattern_out)
Reverse Hessian sparsity patterns.
#define CPPAD_ASSERT_KNOWN(exp, msg)
Check that exp is true, if not print msg and terminate execution.
Vector of sets of positive integers, each set stored as a singly linked list.
void get_internal_sparsity(bool transpose, const vector< size_t > &internal_index, const InternalSparsity &internal_pattern, sparse_rc< SizeVector > &pattern_out)
Get sparsity pattern for a sub-set of variables.
void rev_hes_sweep(const local::player< Base > *play, size_t n, size_t numvar, const Vector_set &for_jac_sparse, bool *RevJac, Vector_set &rev_hes_sparse)
Given the forward Jacobian sparsity pattern for all the variables, and the reverse Jacobian sparsity ...
Vector of sets of postivie integers, each set stored as a packed boolean array.
sparsity pattern for a matrix with indices of type size_t
Type * data(void)
current data pointer is no longer valid after any of the following: extend, erase, operator=, and ~pod_vector. Take extreem care when using this function.
void resize(size_t n_set, size_t end)
Start a new vector of sets.
File used to define the ADFun<Base> class.
Routines that enable code to be independent of which internal spasity pattern is used.
void resize(size_t n_set, size_t end)
Change number of sets, set end, and initialize all sets as empty.