Macaulay2 Engine
Loading...
Searching...
No Matches

◆ minimalize_and_insert()

void binomialGB::minimalize_and_insert ( binomial_gb_elem * f)

Definition at line 681 of file gb-toric.cpp.

684{
685 monomial m = f->f.lead;
686 gbmin_elem *fm = new gbmin_elem(f, R->mask(m));
687 gbmin_elem head, *p;
688 head.next = first;
689 int deg = R->degree(m);
690 if (deg > _max_degree) _max_degree = deg;
691 for (p = &head; p->next != nullptr; p = p->next)
692 {
693 if (R->graded_compare(m, p->next->elem->f.lead) == LT) break;
694 }
695 fm->next = p->next;
696 p->next = fm;
697 first = head.next;
698
699 p = fm;
700 while (p->next != nullptr)
701 {
702 if (R->degree(p->next->elem->f.lead) > deg &&
703 R->divides(m, p->next->elem->f.lead))
704 {
705 // remove this element
706 gbmin_elem *q = p->next;
707 binomial_gb_elem *qe = q->elem;
708 p->next = q->next;
709 q->next = nullptr;
710 qe->smaller = f;
711 }
712 else
713 {
714 reduce_monomial(p->next->elem->f.tail);
715 p = p->next;
716 }
717 }
718}
void reduce_monomial(monomial0 m) const
Definition gb-toric.cpp:877
const binomial_ring * R
Definition gb-toric.hpp:252
int _max_degree
Definition gb-toric.hpp:254
gbmin_elem * first
Definition gb-toric.hpp:253
#define monomial
Definition gb-toric.cpp:11
int p
binomial_gb_elem * smaller
Definition gb-toric.hpp:61
monomial0 lead
Definition gb-toric.hpp:51
const int LT
Definition style.hpp:39

References _max_degree, binomialGB::gbmin_elem::elem, binomial_gb_elem::f, first, binomial::lead, LT, monomial, binomialGB::gbmin_elem::next, p, R, reduce_monomial(), and binomial_gb_elem::smaller.