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

◆ normal_form()

void QRingInfo_field_QQ::normal_form ( ring_elem & f) const
virtual

Reimplemented from QRingInfo.

Definition at line 212 of file qring.cpp.

215{
217
218 const Monoid *M = R->getMonoid();
219 Nterm head;
220 Nterm *result = &head;
221 Nterm *t = f;
222 while (t != nullptr)
223 {
224 M->to_expvector(t->monom, EXP1);
225 Bag *b;
226 if (Rideal->search_expvector(EXP1, b))
227 {
228 Nterm *s = quotient_element(b->basis_elem());
229 // Now we must replace t with
230 // t + c*m*s, where in(t) = in(c*m*s), and c is 1 or -1.
232 }
233 else
234 {
235 result->next = t;
236 t = t->next;
237 result = result->next;
238 }
239 }
240 result->next = nullptr;
241 f = head.next;
242}
exponents::Exponents exponents_t
void to_expvector(const_monomial m, exponents_t result_exp) const
Definition monoid.cpp:747
void reduce_lead_term_QQ(Nterm *&f, const Nterm *g) const
Definition qring.cpp:188
MonomialIdeal * Rideal
Definition qring.hpp:153
Nterm * quotient_element(int i) const
Definition qring.hpp:98
const PolyRing * R
Definition qring.hpp:83
size_t exp_size
Definition qring.hpp:86
int basis_elem() const
Definition int-bag.hpp:66
int_bag Bag
Definition int-bag.hpp:70
void size_t s
Definition m2-mem.cpp:271
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
Nterm * next
Definition ringelem.hpp:157
int monom[1]
Definition ringelem.hpp:160

References ALLOCATE_EXPONENTS, int_bag::basis_elem(), QRingInfo::exp_size, Nterm::monom, Nterm::next, QRingInfo::quotient_element(), QRingInfo::R, reduce_lead_term_QQ(), result(), QRingInfo_field::Rideal, s, and Monoid::to_expvector().