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

◆ remainder() [1/2]

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

Implements ReducedGB.

Reimplemented in ReducedGB_Field_Local.

Definition at line 177 of file reducedgb-field.cpp.

178{
179 gbvector *zero = nullptr;
180 gbvector head;
181 gbvector *frem = &head;
182 frem->next = nullptr;
183 gbvector *h = f;
184 exponents_t EXP = ALLOCATE_EXPONENTS(R->exponent_byte_size());
185 while (!R->gbvector_is_zero(h))
186 {
187 R->gbvector_get_lead_exponents(F, h, EXP);
188 int x = h->comp;
189 Bag *b;
190 if (Rideal != nullptr && Rideal->search_expvector(EXP, b))
191 {
192 const gbvector *g = originalR->quotient_gbvector(b->basis_elem());
193 R->gbvector_reduce_lead_term(
194 F, Fsyz, head.next, h, zero, g, zero, use_denom, denom);
195 }
196 else
197 {
198 int w = T->find_divisor(EXP, x);
199 if (w < 0)
200 {
201 frem->next = h;
202 frem = frem->next;
203 h = h->next;
204 frem->next = nullptr;
205 }
206 else
207 {
208 POLY g = polys[w];
209 R->gbvector_reduce_lead_term(
210 F, Fsyz, head.next, h, zero, g.f, zero, use_denom, denom);
211 }
212 }
213 }
214 h = head.next;
215 // R->gbvector_remove_content(h, 0, use_denom, denom);
216 f = h;
217}
exponents::Exponents exponents_t
const MonomialIdeal * Rideal
MonomialTable * T
const FreeModule * Fsyz
Definition reducedgb.hpp:67
GBRing * R
Definition reducedgb.hpp:64
const PolynomialRing * originalR
Definition reducedgb.hpp:65
const FreeModule * F
Definition reducedgb.hpp:66
int basis_elem() const
Definition int-bag.hpp:66
int zero
int_bag Bag
Definition int-bag.hpp:70
#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, int_bag::basis_elem(), gbvector::comp, ReducedGB::F, POLY::f, ReducedGB::Fsyz, gbvector::next, ReducedGB::originalR, POLY, ReducedGB::R, Rideal, T, x, and zero.