Reimplemented from ReducedGB_Field.
Definition at line 575 of file reducedgb-field-local.cpp.
578{
579 if (f == nullptr) return;
580
582 gbvector *
zero =
nullptr;
583 gbvector head;
584 gbvector *frem = &head;
585 frem->
next =
nullptr;
590 int h_alpha, g_alpha;
591 int h_deg =
wt->gbvector_weight(f);
592 while (!
R->gbvector_is_zero(h.
f))
593 {
596 R->gbvector_get_lead_exponents(
F, h.
f, h_exp);
597 int h_comp = h.
f->
comp;
598
600 {
601 buffer o;
602 o << "\nreducing ";
603 R->gbvector_text_out(o,
F, h.
f);
605 }
606
608 h_comp,
609 h_deg,
610 h_alpha,
611 g,
612 g_alpha))
613 {
615 {
616 buffer o;
617 o << " h_alpha " << h_alpha << " g_alpha "
618 << g_alpha;
619
620
622 }
623 if (g_alpha > h_alpha)
624 {
625 if (head.
next !=
nullptr)
626 {
627
628
629
631 break;
632 }
633
637 h_deg += g_alpha - h_alpha;
638 h_exp =
R->exponents_make();
639 }
640 R->gbvector_reduce_lead_term(
642 }
643 else
644 {
648 frem->
next =
nullptr;
649 }
650 }
651
653 R->exponents_delete(h_exp);
655}
exponents::Exponents exponents_t
static MonomialTable * make(int nvars)
bool find_good_divisor(exponents_t h_exp, int h_comp, int h_deg, int &h_alpha, POLY &result_g, int &result_g_alpha)
void store_in_table(const POLY &h, exponents_t h_exp, int h_comp, int h_alpha)
void emit_wrapped(const char *s)
References gbvector::comp, emit(), emit_wrapped(), ReducedGB::F, POLY::f, find_good_divisor(), ReducedGB::Fsyz, POLY::fsyz, M2_gbTrace, MonomialTable::make(), gbvector::next, POLY, ReducedGB::R, reset_table(), store_in_table(), buffer::str(), T1, wt, and zero.