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

◆ remainder() [1/2]

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

Implements ReducedGB.

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

183{
184 // return geo_remainder(f,use_denom,denom);
185 gbvector *zero = nullptr;
186 gbvector head;
187 gbvector *frem = &head;
188 frem->next = nullptr;
189 gbvector *h = f;
190 exponents_t EXP = ALLOCATE_EXPONENTS(R->exponent_byte_size());
191
192 while (!R->gbvector_is_zero(h))
193 {
194 R->gbvector_get_lead_exponents(F, h, EXP);
195 int x = h->comp;
196 int w = T->find_divisor(EXP, x);
197 if (w < 0)
198 {
199 frem->next = h;
200 frem = frem->next;
201 h = h->next;
202 frem->next = nullptr;
203 }
204 else
205 {
206 POLY g = polys[w];
207 R->gbvector_reduce_with_marked_lead_term(F,
208 Fsyz,
209 head.next,
210 h,
211 zero,
212 leadterms[w],
213 g.f,
214 zero,
215 use_denom,
216 denom);
217 }
218 }
219 h = head.next;
220 f = h;
221 R->gbvector_sort(F, f);
222}
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 ALLOCATE_EXPONENTS, gbvector::comp, ReducedGB::F, POLY::f, ReducedGB::Fsyz, leadterms, gbvector::next, POLY, ReducedGB::R, T, x, and zero.