1#ifndef CPPAD_CG_ATOMIC_GENERIC_MODEL_INCLUDED
2#define CPPAD_CG_ATOMIC_GENERIC_MODEL_INCLUDED
40 atomic_base<Base>(model.getName()),
42 this->
option(CppAD::atomic_base<Base>::set_sparsity_enum);
47 template <
class ADVector>
49 this->atomic_base<Base>::operator()(
ax,
ay,
id);
52 bool forward(
size_t q,
69 bool reverse(
size_t p,
85 bool for_sparse_jac(
size_t q,
89 return for_sparse_jac(
q,
r, s);
92 bool for_sparse_jac(
size_t q,
96 size_t m = model_.
Range();
97 for (
size_t i = 0;
i < m;
i++) {
101 const std::vector<std::set<size_t> >
jacSparsity = model_.JacobianSparsitySet();
109 bool rev_sparse_jac(
size_t q,
113 return rev_sparse_jac(
q,
rT,
sT);
116 bool rev_sparse_jac(
size_t q,
120 size_t m = model_.
Range();
121 for (
size_t i = 0;
i <
n;
i++) {
125 const std::vector<std::set<size_t> >
jacSparsity = model_.JacobianSparsitySet();
141 return rev_sparse_hes(
vx, s,
t,
q,
r,
u, v);
152 size_t m = model_.
Range();
154 for (
size_t i = 0;
i <
n;
i++) {
158 const std::vector<std::set<size_t> >
jacSparsity = model_.JacobianSparsitySet();
164 CppAD::cg::multMatrixTransMatrixSparsity(
jacSparsity,
u, v, m,
n,
q);
168 for (
size_t i = 0;
i < m;
i++) {
182 for (
size_t i = 0;
i < m;
i++) {
193 for (
size_t i = 0;
i < m;
i++) {
CGAtomicGenericModel(GenericModel< Base > &model)
bool rev_sparse_hes(const CppAD::vector< bool > &vx, const CppAD::vector< bool > &s, CppAD::vector< bool > &t, size_t q, const CppAD::vector< std::set< size_t > > &r, const CppAD::vector< std::set< size_t > > &u, CppAD::vector< std::set< size_t > > &v) override
virtual size_t Range() const =0
VectorBase ForwardZero(const VectorBase &x)
VectorBase ReverseTwo(const VectorBase &tx, const VectorBase &ty, const VectorBase &py)
VectorBase ReverseOne(const VectorBase &tx, const VectorBase &ty, const VectorBase &py)
virtual size_t Domain() const =0
virtual std::vector< std::set< size_t > > HessianSparsitySet()=0
VectorBase ForwardOne(const VectorBase &tx)
bool GreaterThanZero(const cg::CG< Base > &x)