1 #ifndef CPPAD_CG_EQUATION_GROUP_INCLUDED 2 #define CPPAD_CG_EQUATION_GROUP_INCLUDED 41 std::set<EquationPattern<Base>*> linkedEquationsByNonIndexed;
53 inline void findReferenceIteration() {
54 CPPADCG_ASSERT_UNKNOWN(!iterationDependents.empty());
56 for (
size_t it = 0; it < iterationDependents.size(); it++) {
57 if (iterationDependents[it].size() == equations.size()) {
63 CPPADCG_ASSERT_UNKNOWN(
false);
66 inline long findIndexedLinkedDependent(
size_t dep)
const {
67 size_t size = linkedDependents.size();
68 for (
size_t pos = 0; pos < size; pos++) {
69 const std::set<size_t>& sameIndex = linkedDependents[pos];
70 if (sameIndex.find(dep) != sameIndex.end()) {
78 inline size_t getLinkedEquationsByNonIndexedCount()
const {
79 return linkedEquationsByNonIndexed.size();
83 size_t size = linkedEquationsByNonIndexedRel.size();
84 for (
size_t pos = 0; pos < size; pos++) {
85 if (linkedEquationsByNonIndexedRel[pos].find(eq) != linkedEquationsByNonIndexedRel[pos].end()) {
95 linkedEquationsByNonIndexed.insert(eq1);
96 linkedEquationsByNonIndexed.insert(eq2);
98 size_t size = linkedEquationsByNonIndexedRel.size();
101 for (
size_t pos = 0; pos < size; pos++) {
102 if (linkedEquationsByNonIndexedRel[pos].find(eq1) != linkedEquationsByNonIndexedRel[pos].end()) {
107 for (
size_t pos = 0; pos < size; pos++) {
108 if (linkedEquationsByNonIndexedRel[pos].find(eq2) != linkedEquationsByNonIndexedRel[pos].end()) {
116 linkedEquationsByNonIndexedRel.resize(size + 1);
117 linkedEquationsByNonIndexedRel[size].insert(eq1);
118 linkedEquationsByNonIndexedRel[size].insert(eq2);
120 }
else if (pos1 < size) {
123 linkedEquationsByNonIndexedRel[pos1].insert(linkedEquationsByNonIndexedRel[pos2].begin(), linkedEquationsByNonIndexedRel[pos2].end());
124 linkedEquationsByNonIndexedRel.erase(linkedEquationsByNonIndexedRel.begin() + pos2);
126 linkedEquationsByNonIndexedRel[pos1].insert(eq2);
130 CPPADCG_ASSERT_UNKNOWN(pos2 < size);
131 linkedEquationsByNonIndexedRel[pos2].insert(eq1);
std::vector< std::set< size_t > > linkedDependents
std::vector< std::set< size_t > > iterationDependents
std::vector< std::set< EquationPattern< Base > * > > linkedEquationsByNonIndexedRel
std::set< EquationPattern< Base > * > equations