Reimplemented from ReducedGB_Field.
Definition at line 492 of file reducedgb-field-local.cpp.
493{
495 buffer o;
498 }
499 if (f.
f ==
nullptr)
return;
501 gbvector head;
502 gbvector *frem = &head;
503 frem->
next =
nullptr;
506 int h_alpha, g_alpha;
507 int h_deg =
wt->gbvector_weight(f.
f);
508 while (!
R->gbvector_is_zero(h.
f))
509 {
512 R->gbvector_get_lead_exponents(
F, h.
f, h_exp);
513 int h_comp = h.
f->
comp;
514
516 {
517 buffer o;
518 o << "\nreducing ";
519 R->gbvector_text_out(o,
F, h.
f);
521 }
522
524 h_comp,
525 h_deg,
526 h_alpha,
527 g,
528 g_alpha))
529 {
531 {
532 buffer o;
533 o << " h_alpha " << h_alpha << " g_alpha "
534 << g_alpha;
535
536
538 }
539 if (g_alpha > h_alpha)
540 {
541 if (head.
next !=
nullptr)
542 {
543
544
545
547 break;
548 }
549
550
554 h_deg += g_alpha - h_alpha;
555 h_exp =
R->exponents_make();
556 }
557 R->gbvector_reduce_lead_term(
559 }
560 else
561 {
565 frem->
next =
nullptr;
566 }
567 }
568
571 R->exponents_delete(h_exp);
573}
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)
virtual void text_out(buffer &o) const
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, ReducedGB::text_out(), and wt.
Referenced by minimalize().