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

◆ geo_remainder()

void MarkedGB::geo_remainder ( gbvector *& f,
bool use_denom,
ring_elem & denom )

Definition at line 224 of file reducedgb-marked.cpp.

225{
226 gbvector head;
227 gbvector *frem = &head;
228 (void) use_denom;
229 (void) denom;
230 frem->next = nullptr;
231
232 gbvectorHeap fb(R, F);
233 gbvectorHeap zero(R, Fsyz);
234 fb.add(f);
235
236 const gbvector *lead;
237 exponents_t EXP = ALLOCATE_EXPONENTS(R->exponent_byte_size());
238 while ((lead = fb.get_lead_term()) != nullptr)
239 {
240 R->gbvector_get_lead_exponents(F, lead, EXP);
241 int x = lead->comp;
242 int w = T->find_divisor(EXP, x);
243 if (w < 0)
244 {
245 frem->next = fb.remove_lead_term();
246 frem = frem->next;
247 frem->next = nullptr;
248 }
249 else
250 {
251 POLY g = polys[w];
252 R->reduce_marked_lead_term_heap(
253 F, Fsyz, lead, EXP, head.next, fb, zero, leadterms[w], g.f, nullptr);
254 }
255 }
256 f = head.next;
257 R->gbvector_sort(F, f);
258}
exponents::Exponents exponents_t
MonomialTable * T
gbvector ** leadterms
const FreeModule * Fsyz
Definition reducedgb.hpp:67
GBRing * R
Definition reducedgb.hpp:64
const FreeModule * F
Definition reducedgb.hpp:66
int zero
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
volatile int x
#define POLY(q)
Definition poly.cpp:23
gbvector * f
Definition gbring.hpp:98
gbvector * next
Definition gbring.hpp:80
int comp
Definition gbring.hpp:82

References gbvectorHeap::add(), ALLOCATE_EXPONENTS, gbvector::comp, ReducedGB::F, POLY::f, ReducedGB::Fsyz, gbvectorHeap::get_lead_term(), leadterms, gbvector::next, POLY, ReducedGB::R, gbvectorHeap::remove_lead_term(), T, x, and zero.