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

◆ marked_remainder()

void MarkedGB::marked_remainder ( POLY & f,
bool use_denom,
ring_elem & denom,
gbvector * marked_lead_term )

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

134{
135 gbvector head;
136 gbvector *frem = &head;
137 frem->next = nullptr;
138 POLY h = f;
139 exponents_t EXP = ALLOCATE_EXPONENTS(R->exponent_byte_size());
140
141 while (!R->gbvector_is_zero(h.f))
142 {
143 if (h.f != marked_lead_term)
144 {
145 R->gbvector_get_lead_exponents(F, h.f, EXP);
146 int x = h.f->comp;
147 int w = T->find_divisor(EXP, x);
148 if (w >= 0)
149 {
150 POLY g = polys[w];
151 R->gbvector_reduce_with_marked_lead_term(F,
152 Fsyz,
153 head.next,
154 h.f,
155 h.fsyz,
156 leadterms[w],
157 g.f,
158 g.fsyz,
159 use_denom,
160 denom);
161 continue;
162 }
163 }
164 frem->next = h.f;
165 frem = frem->next;
166 h.f = h.f->next;
167 frem->next = nullptr;
168 }
169
170 h.f = head.next;
171 f.f = h.f;
172 f.fsyz = h.fsyz;
173 R->gbvector_sort(F, f.f);
174 R->gbvector_sort(Fsyz, f.fsyz);
175}
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
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
volatile int x
#define POLY(q)
Definition poly.cpp:23
gbvector * fsyz
Definition gbring.hpp:99
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, POLY::fsyz, leadterms, gbvector::next, POLY, ReducedGB::R, T, and x.

Referenced by auto_reduce(), and remainder().