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

◆ remove_unneeded_pairs()

void gbA::remove_unneeded_pairs ( int id)
private

Definition at line 638 of file gb-default.cpp.

639{
640 /* Removes all pairs from C->S that are not needed */
641 if (over_ZZ()) return;
642 spair head;
643 spair *p = &head;
644 gbelem *m = gb[id];
645
646 head.next = S->heap;
647 while (p->next != nullptr)
648 if (pair_not_needed(p->next, m))
649 {
651 spair *tmp = p->next;
652 p->next = tmp->next;
653 tmp->next = nullptr;
654 if (M2_gbTrace >= 10)
655 {
656 buffer o;
657 o << "removing unneeded ";
658 spair_text_out(o, tmp);
659 emit_line(o.str());
660 }
661 spair_delete(tmp);
662 S->nelems--;
663 }
664 else
665 p = p->next;
666 S->heap = head.next;
667}
char * str()
Definition buffer.hpp:72
void spair_delete(spair *&p)
void spair_text_out(buffer &o, spair *p)
bool over_ZZ() const
bool pair_not_needed(spair *p, gbelem *m)
SPairSet * S
void gb(IntermediateBasis &F, int n)
static unsigned long nsaved_unneeded
int p
int M2_gbTrace
Definition m2-types.cpp:52
void emit_line(const char *s)
Definition text-io.cpp:47

References emit_line(), gb(), M2_gbTrace, gbA::spair::next, nsaved_unneeded, over_ZZ(), p, pair_not_needed(), S, spair_delete(), spair_text_out(), and buffer::str().

Referenced by update_pairs().