134{
135 size_t n_spairs = 0;
137 {
139 auto toBeProcessed = degSet.second;
141 {
142 buffer o;
143 o <<
"[" << degSet.first <<
"](" << toBeProcessed->
size() <<
")";
145 }
146 while(!toBeProcessed->empty())
147 {
148 auto overlap = toBeProcessed->front();
149
150
152 {
153 toBeProcessed->pop_front();
155 {
156 std::cout << "Reduction avoided using 2nd criterion." << std::endl;
157 std::cout << "table after pop:";
159 }
160
161 continue;
162 }
164
165 n_spairs++;
167 delete overlapPoly;
168
170 {
174 }
175 else
176 {
177
179 {
180 std::cout << "Overlap " << overlap << " reduced to zero."
181 << std::endl;
182 }
183 }
184 toBeProcessed->pop_front();
185 }
186
188 }
190 {
191 buffer o;
192 o << "[NCGB] number of spair reductions: " << n_spairs;
194 }
195}
auto twoSidedReduction(const ConstPolyList &reducees) const -> ConstPolyList
void updateOverlaps(const Poly *toAdd)
void autoreduceByLastElement()
auto isOverlapNecessary(Overlap o) const -> bool
OverlapTable mOverlapTable
static auto createOverlapPoly(const FreeAlgebra &A, const PolyList &polyList, int polyIndex1, int polyIndex2, int overlapIndex) -> Poly *
const FreeAlgebra & freeAlgebra() const
void addToGroebnerBasis(Poly *toAdd)
void emit_line(const char *s)