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

◆ get_lead_term()

const vecterm * vecHeap::get_lead_term ( )
inline

Definition at line 120 of file geovec.hpp.

121{
122 int lead_so_far = -1;
123 for (int i = 0; i <= top_of_heap; i++)
124 {
125 if (heap[i] == NULL) continue;
126 if (lead_so_far < 0)
127 {
128 lead_so_far = i;
129 continue;
130 }
131 int cmp = compare(heap[lead_so_far], heap[i]);
132 if (cmp == GT) continue;
133 if (cmp == LT)
134 {
135 lead_so_far = i;
136 continue;
137 }
138 // At this point we have equality
139 K->add_to(heap[lead_so_far]->coeff, heap[i]->coeff);
140 vecterm *tmp = heap[i];
141 heap[i] = tmp->next;
142 tmp->next = NULL;
143 K->remove_vec(tmp);
144
145 if (K->is_zero(heap[lead_so_far]->coeff))
146 {
147 // Remove, and start over
148 tmp = heap[lead_so_far];
149 heap[lead_so_far] = tmp->next;
150 tmp->next = NULL;
151 K->remove_vec(tmp);
152 lead_so_far = -1;
153 i = -1;
154 }
155 }
156 mLead = lead_so_far;
157 if (lead_so_far < 0) return NULL;
158 vecterm *result = heap[lead_so_far];
159 return result;
160}
int mLead
Definition geovec.hpp:55
const Ring * K
Definition geovec.hpp:52
vecterm * heap[GEOHEAP_SIZE]
Definition geovec.hpp:53
int top_of_heap
Definition geovec.hpp:54
static int compare(const vecterm *t, const vecterm *s)
Definition geovec.hpp:112
VALGRIND_MAKE_MEM_DEFINED & result(result)
const int GT
Definition style.hpp:41
const int LT
Definition style.hpp:39

References compare(), GT, heap, K, LT, mLead, vec::next, result(), and top_of_heap.

Referenced by remove_lead_term().