1 #ifndef CPPAD_CG_DECLARE_EXTRA_INCLUDED
2 #define CPPAD_CG_DECLARE_EXTRA_INCLUDED
18 #include <cppad/local/define.hpp>
19 #include <cppad/local/cppad_assert.hpp>
20 #include <cppad/local/base_cond_exp.hpp>
30 class SparseForjacHessianWorkJac;
31 class SparseForjacHessianWorkHes;
32 class SparseForjacHessianWork;
34 template<
class Base,
class VectorBase,
class VectorSet,
class VectorSize>
35 size_t sparseForJacHessian(ADFun<Base>& fun,
39 const VectorSet& jac_p,
40 const VectorSize& jac_row,
41 const VectorSize& jac_col,
43 const VectorSet& hes_p,
44 const VectorSize& hes_row,
45 const VectorSize& hes_col,
47 SparseForjacHessianWork& work);
49 template<
class Base,
class VectorBase,
class VectorVectorBase,
class VectorSet,
class VectorSize>
50 size_t sparseForJacHessian(ADFun<Base>& fun,
52 const VectorVectorBase& w,
54 const VectorSet& jac_p,
55 const VectorSize& jac_row,
56 const VectorSize& jac_col,
58 const VectorSet& hes_p,
59 const VectorSize& hes_row,
60 const VectorSize& hes_col,
61 VectorVectorBase& hes,
62 SparseForjacHessianWork& work);
68 template<
class VectorBool,
class Base>
69 inline VectorBool jacobianForwardSparsity(ADFun<Base>& fun);
71 template<
class VectorBool,
class Base>
72 inline VectorBool jacobianReverseSparsity(ADFun<Base>& fun);
74 template<
class VectorSet,
class Base>
75 inline VectorSet jacobianForwardSparsitySet(ADFun<Base>& fun);
77 template<
class VectorSet,
class Base>
78 inline VectorSet jacobianReverseSparsitySet(ADFun<Base>& fun);
80 template<
class VectorBool,
class Base>
81 inline VectorBool jacobianSparsity(ADFun<Base>& fun);
83 template<
class VectorSet,
class Base>
84 inline VectorSet jacobianSparsitySet(ADFun<Base>& fun);
86 inline bool estimateBestJacobianADMode(
const std::vector<size_t>& jacRows,
87 const std::vector<size_t>& jacCols);
89 template<
class VectorBool,
class Base>
90 inline VectorBool hessianSparsity(ADFun<Base>& fun,
91 bool transpose =
false);
93 template<
class VectorSet,
class Base>
94 inline VectorSet hessianSparsitySet(ADFun<Base>& fun,
95 const std::set<size_t>& w,
96 bool transpose =
false);
98 template<
class VectorSet,
class Base>
99 inline VectorSet hessianSparsitySet(ADFun<Base>& fun,
100 bool transpose =
false);
102 template<
class VectorBool,
class Base>
103 inline VectorBool hessianSparsity(ADFun<Base>& fun,
105 bool transpose =
false);
107 template<
class VectorSet,
class Base>
108 inline VectorSet hessianSparsitySet(ADFun<Base>& fun,
110 bool transpose =
false);
116 template<
class VectorBool,
class VectorSize>
117 inline void generateSparsityIndexes(
const VectorBool& sparsity,
123 template<
class VectorSet,
class VectorSize>
124 inline void generateSparsityIndexes(
const VectorSet& sparsity,
128 template<
class VectorSet,
class VectorSize>
129 inline void generateSparsitySet(
const VectorSize& row,
130 const VectorSize& col,
131 VectorSet& sparsity);