std::cout << "computeIdealQuotient(" << lev << "," << begin << "," << elem << ")" << std::endl;
483{
486
488 std::vector<PreElement*> elements;
489 if (
ring().isSkewCommutative())
490 {
493
494 for (int i = 0; i < a; ++i)
495 {
502
503 elements.push_back(vp);
504 }
505 delete[] skewvars;
506 }
511
512#if 0
513 std::cout << " #pre elements = " << elements.size() << std::endl;
514 for (auto i=elements.begin(); i != elements.end(); ++i)
515 {
517 fprintf(stdout, "\n");
518 }
519#endif
520 PreElementSorter C;
521 std::stable_sort(elements.begin(), elements.end(), C);
522
524 for (auto i = elements.begin(); i != elements.end(); ++i)
525 {
526 int32_t not_used;
527 bool inideal = montab.find_one_divisor_vp(0, (*i)->vp, not_used);
528 if (inideal) continue;
529
530 montab.insert_minimal_vp(0, (*i)->vp, 0);
534
536 monom,
538 monoid().get_component(monom)));
539 n_elems++;
540 }
541
542 return n_elems;
543}
static void elem_text_out(buffer &o, ConstExponents m, bool p_one=true)
static const Exponent length(ConstExponents m)
int skew_vars(const SkewMultiplication *skew, res_const_packed_monomial m, int *skewvars) const
void from_varpower_monomial(res_const_varpower_monomial m, component_index comp, res_packed_monomial result) const
void variable_as_vp(int v, res_varpower_monomial result) const
int degree_of_vp(res_const_varpower_monomial a) const
const ResMonoid & monoid() const
int degree(int lev, component_index component) const
const ResMonoid & monoid() const
ResMemoryBlock< res_monomial_word > & monomialBlock()
ResMemoryBlock< PreElement > mPreElements
ResMemoryBlock< res_varpower_word > mVarpowers
SchreyerFrameTypes::PreElement PreElement
void insertBasic(int lev, res_packed_monomial monom, int degree)
const ResPolyRing & ring() const
PreElement * createQuotientElement(res_packed_monomial m1, res_packed_monomial m)
F4MonomialLookupTableT< int32_t > MonomialLookupTable
res_monomial_word * res_packed_monomial
TermIterator< Nterm > begin(Nterm *ptr)