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

◆ gbvector_normal_form() [2/2]

void QRingInfo_field_QQ::gbvector_normal_form ( const FreeModule * F,
gbvector *& f,
bool use_denom,
ring_elem & denom ) const
virtual

Reimplemented from QRingInfo.

Definition at line 275 of file qring.cpp.

279{
281
282 GBRing *GR = R->get_gb_ring();
283 gbvector head;
284 gbvector *result = &head;
285 result->next = nullptr;
286 gbvector *t = f;
287 while (t != nullptr)
288 {
289 GR->gbvector_get_lead_exponents(F, t, EXP1);
290 int x = ringtable->find_divisor(EXP1, 1);
291 if (x >= 0)
292 {
293 const gbvector *r = quotient_gbvector(x);
294 gbvector *zero = nullptr;
296 F, F, head.next, t, zero, r, zero, use_denom, denom);
297 }
298 else
299 {
300 result->next = t;
301 t = t->next;
302 result = result->next;
303 result->next = nullptr;
304 }
305 }
306 f = head.next;
307}
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.