1 #ifndef CPPAD_CG_DECLARE_CG_LOOPS_INCLUDED 2 #define CPPAD_CG_DECLARE_CG_LOOPS_INCLUDED 27 using SizeN1stIt = std::pair<size_t, size_t>;
29 using pairss = std::pair<size_t, size_t>;
31 class JacobianWithLoopsRowInfo;
62 inline std::vector<CG<Base> > createIndexedIndependents(
CodeHandler<Base>& handler,
67 inline std::vector<CG<Base> > createLoopIndependentVector(
CodeHandler<Base>& handler,
69 const std::vector<
CG<Base> >& indexedIndeps,
70 const std::vector<
CG<Base> >& nonIndexedIndeps,
71 const std::vector<
CG<Base> >& nonIndexedTmps);
74 inline std::vector<CG<Base> > createLoopDependentVector(
CodeHandler<Base>& handler,
101 const std::map<SizeN1stIt, std::pair<
size_t, std::set<size_t> > >& first2Iterations);
103 inline std::vector<size_t> createIndexConditionExpression(
const std::set<size_t>& iterations,
104 const std::set<size_t>& usedIter,
109 const std::set<size_t>& iterations,
110 const std::set<size_t>& usedIter,
115 inline void determineForRevUsagePatterns(
const std::map<
LoopModel<Base>*, std::map<
size_t, std::map<
size_t, std::set<size_t> > > >& loopGroups,
116 const std::map<
size_t, std::vector<std::set<size_t> > >& userElLocation,
117 const std::map<size_t, bool>& ordered,
118 std::map<
size_t, std::map<
LoopModel<Base>*, std::map<size_t, ArrayGroup*> > >& loopCalls,
122 void generateFunctionDeclarationSourceLoopForRev(std::ostringstream& cache,
124 const std::string& modelName,
125 const std::string& keyName,
126 const std::map<
LoopModel<Base>*, std::map<
size_t, std::map<
size_t, std::set<size_t> > > >& _loopRev2Groups,
127 void (*generateFunctionNameLoopRev2)(std::ostringstream& cache,
const std::string& modelName,
const LoopModel<Base>& loop,
size_t g));
132 const std::vector<std::vector<
CG<Base> > >& vw,
134 const std::vector<std::set<size_t> >& jacSparsity,
135 const std::vector<std::set<size_t> >& jacEvalSparsity,
136 std::vector<std::map<
size_t,
CG<Base> > >& jac,
137 const std::vector<std::set<size_t> >& hesSparsity,
138 const std::vector<std::set<size_t> >& hesEvalSparsity,
139 std::vector<std::map<
size_t, std::map<
size_t,
CG<Base> > > >& vhess,
140 bool constainsAtomics);