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

◆ add()

void polyheap::add ( Nterm * p)
inline

Definition at line 84 of file geopoly.hpp.

85{
86 int len = F->n_terms(p);
87 int i = 0;
88 while (len >= heap_size[i]) i++;
89
90 ring_elem tmp1 = heap[i];
91 ring_elem tmp2 = p;
92 F->add_to(tmp1, tmp2);
93 heap[i] = tmp1;
94
95 len = F->n_terms(heap[i]);
96 p = NULL;
97 while (len >= heap_size[i])
98 {
99 i++;
100
101 tmp1 = heap[i];
102 tmp2 = heap[i - 1];
103 F->add_to(tmp1, tmp2);
104 heap[i] = tmp1;
105
106 len = F->n_terms(heap[i]);
107 heap[i - 1] = NULL;
108 }
109 if (i > top_of_heap) top_of_heap = i;
110}
const PolynomialRing * F
Definition geopoly.hpp:49
Nterm * heap[GEOHEAP_SIZE]
Definition geopoly.hpp:51
int top_of_heap
Definition geopoly.hpp:52
const int heap_size[GEOHEAP_SIZE]
Definition engine.cpp:53
int p

References F, heap, heap_size, p, and top_of_heap.

Referenced by PolyRing::diff(), and PolyRing::mult().