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>
30class SparseForjacHessianWorkJac;
31class SparseForjacHessianWorkHes;
32class SparseForjacHessianWork;
34template<
class Base,
class VectorBase,
class VectorSet,
class VectorSize>
35size_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);
49template<
class Base,
class VectorBase,
class VectorVectorBase,
class VectorSet,
class VectorSize>
50size_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);
68template<
class VectorBool,
class Base>
69inline VectorBool jacobianForwardSparsity(ADFun<Base>& fun);
71template<
class VectorBool,
class Base>
72inline VectorBool jacobianReverseSparsity(ADFun<Base>& fun);
74template<
class VectorSet,
class Base>
75inline VectorSet jacobianForwardSparsitySet(ADFun<Base>& fun);
77template<
class VectorSet,
class Base>
78inline VectorSet jacobianReverseSparsitySet(ADFun<Base>& fun);
80template<
class VectorBool,
class Base>
81inline VectorBool jacobianSparsity(ADFun<Base>& fun);
83template<
class VectorSet,
class Base>
84inline VectorSet jacobianSparsitySet(ADFun<Base>& fun);
86inline bool estimateBestJacobianADMode(
const std::vector<size_t>& jacRows,
87 const std::vector<size_t>& jacCols);
89template<
class VectorBool,
class Base>
90inline VectorBool hessianSparsity(ADFun<Base>& fun,
91 bool transpose =
false);
93template<
class VectorSet,
class Base>
94inline VectorSet hessianSparsitySet(ADFun<Base>& fun,
95 const std::set<size_t>& w,
96 bool transpose =
false);
98template<
class VectorSet,
class Base>
99inline VectorSet hessianSparsitySet(ADFun<Base>& fun,
100 bool transpose =
false);
102template<
class VectorBool,
class Base>
103inline VectorBool hessianSparsity(ADFun<Base>& fun,
105 bool transpose =
false);
107template<
class VectorSet,
class Base>
108inline VectorSet hessianSparsitySet(ADFun<Base>& fun,
110 bool transpose =
false);
116template<
class VectorBool,
class VectorSize>
117inline void generateSparsityIndexes(
const VectorBool& sparsity,
123template<
class VectorSet,
class VectorSize>
124inline void generateSparsityIndexes(
const VectorSet& sparsity,
128template<
class VectorSet,
class VectorSize>
129inline void generateSparsitySet(
const VectorSize& row,
130 const VectorSize& col,
131 VectorSet& sparsity);