24 for (i = 0; i <
NHEAP; i++)
35 for (
int i = 0; i <
NHEAP; i++)
39 while (inresult->
next !=
nullptr) inresult = inresult->
next;
69 if (cmp < 0)
return -1;
70 if (cmp > 0)
return 1;
77 cmp =
M->compare(f->
lcm, g->
lcm);
81 if (f->
first ==
nullptr || g->
first ==
nullptr)
return 0;
83 if (cmp > 0)
return 1;
84 if (cmp < 0)
return -1;
87 cmp =
M->compare(f->
lcm, g->
lcm);
91 if (f->
first ==
nullptr || g->
first ==
nullptr)
return 0;
93 if (cmp > 0)
return 1;
94 if (cmp < 0)
return -1;
97 if (f->
first !=
nullptr && g->
first !=
nullptr)
100 if (cmp < 0)
return -1;
101 if (cmp > 0)
return 1;
106 if (cmp < 0)
return -1;
107 if (cmp > 0)
return 1;
109 cmp =
M->compare(f->
lcm, g->
lcm);
110 if (cmp != 0)
return cmp;
111 if (f->
first ==
nullptr || g->
first ==
nullptr)
return 0;
113 if (cmp > 0)
return 1;
114 if (cmp < 0)
return -1;
126 if (g ==
nullptr)
return f;
127 if (f ==
nullptr)
return g;
130 while (1)
switch (
compare(f, g))
158 if (
p ==
nullptr ||
p->next ==
nullptr)
return;
168 if (
p ==
nullptr)
break;
191 std::cerr <<
"too many spairs: aborting" << std::endl;
192 std::cerr <<
"n_in_heap[" << i <<
"]=" <<
n_in_heap[i - 1]
198 heap[i - 1] =
nullptr;
218 heap[i - 1] =
nullptr;
228 if (
nelems == 0)
return nullptr;
237 if (
heap[i] ==
nullptr)
continue;
242 smallest =
heap[first];
248 smallest->
next =
nullptr;
274#warning "should we display anything in spair text_out, stats?"
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
void sort_list(s_pair *&p) const
s_pair_heap(const Monoid *M)
int compare(s_pair *f, s_pair *g) const
s_pair * merge(s_pair *f, s_pair *g) const
s_pair * grab_remaining_pairs()
void text_out(buffer &o) const
void put_back(s_pair *&p)
VALGRIND_MAKE_MEM_DEFINED & result(result)
static const int spair_heap_size[NHEAP]
gb_elem / s_pair / s_pair_heap — basis-element record, S-pair work unit, and S-pair priority queue fo...