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

◆ gbvector_normal_form() [1/2]

void QRingInfo_field_QQ::gbvector_normal_form ( const FreeModule * F,
gbvector *& f ) const
virtual

Reimplemented from QRingInfo.

Definition at line 244 of file qring.cpp.

246{
248
249 GBRing *GR = R->get_gb_ring();
250 gbvector head;
251 gbvector *result = &head;
252 result->next = nullptr;
253 gbvector *t = f;
254 while (t != nullptr)
255 {
256 GR->gbvector_get_lead_exponents(F, t, EXP1);
257 int x = ringtable->find_divisor(EXP1, 1);
258 if (x >= 0)
259 {
260 const gbvector *r = quotient_gbvector(x);
261 gbvector *zero = nullptr;
262 GR->gbvector_reduce_lead_term(F, F, head.next, t, zero, r, zero);
263 }
264 else
265 {
266 result->next = t;
267 t = t->next;
268 result = result->next;
269 result->next = nullptr;
270 }
271 }
272 f = head.next;
273}
exponents::Exponents exponents_t
void gbvector_get_lead_exponents(const FreeModule *F, const gbvector *f, int *result)
Definition gbring.cpp:541
void gbvector_reduce_lead_term(const FreeModule *F, const FreeModule *Fsyz, gbvector *flead, gbvector *&f, gbvector *&fsyz, const gbvector *g, const gbvector *gsyz, bool use_denom, ring_elem &denom)
Definition gbring.cpp:944
MonomialTable * ringtable
Definition qring.hpp:154
const PolyRing * R
Definition qring.hpp:83
size_t exp_size
Definition qring.hpp:86
const gbvector * quotient_gbvector(int i) const
Definition qring.hpp:99
int zero
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
volatile int x
gbvector * next
Definition gbring.hpp:80

References ALLOCATE_EXPONENTS, QRingInfo::exp_size, GBRing::gbvector_get_lead_exponents(), GBRing::gbvector_reduce_lead_term(), gbvector::next, QRingInfo::quotient_gbvector(), QRingInfo::R, result(), QRingInfo_field::ringtable, x, and zero.