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

◆ next()

bool binomial_s_pair_set::next ( const int * d,
binomial_s_pair & result,
int & result_deg )

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

576{
577 if (_pairs->next == nullptr) return false;
578 if (d != nullptr && _pairs->next->deg > *d) return false;
579 s_pair_degree_list *thisdeg = _pairs->next;
580 s_pair_lcm_list *thislcm = thisdeg->pairs;
581 s_pair_elem *s = thislcm->pairs;
582 result_deg = thisdeg->deg;
583
584 thisdeg->n_elems--;
585 _n_elems--;
586 _npairs[2 * (thisdeg->deg) + 1]--;
587
588 result = binomial_s_pair(s->f1, s->f2, thislcm->lcm);
589
590 thislcm->pairs = s->next;
591 if (thislcm->pairs == nullptr)
592 {
593 // Now we must remove this set
594 thisdeg->pairs = thislcm->next;
595 R->remove_monomial(_prev_lcm);
596 _prev_lcm = thislcm->lcm;
597 thislcm->lcm = nullptr;
598 freemem(thislcm);
599
600 if (thisdeg->pairs == nullptr)
601 {
602 // Now we must remove this larger degree list
603 _pairs->next = thisdeg->next;
604 freemem(thisdeg);
605 }
606 }
607
608 freemem(s);
609 return true;
610}
const binomial_ring * R
Definition gb-toric.hpp:196
gc_vector< int > _npairs
Definition gb-toric.hpp:204
s_pair_degree_list * _pairs
Definition gb-toric.hpp:198
void freemem(void *s)
Definition m2-mem.cpp:103
void size_t s
Definition m2-mem.cpp:271
VALGRIND_MAKE_MEM_DEFINED & result(result)

References _n_elems, _npairs, _pairs, _prev_lcm, binomial_s_pair_set::s_pair_degree_list::deg, freemem(), binomial_s_pair_set::s_pair_lcm_list::lcm, binomial_s_pair_set::s_pair_degree_list::n_elems, binomial_s_pair_set::s_pair_degree_list::next, binomial_s_pair_set::s_pair_lcm_list::next, binomial_s_pair_set::s_pair_degree_list::pairs, binomial_s_pair_set::s_pair_lcm_list::pairs, R, result(), and s.