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

◆ normal_form()

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

Reimplemented from QRingInfo.

Definition at line 119 of file qring.cpp.

122{
124
125 const Monoid *M = R->getMonoid();
126 Nterm head;
127 Nterm *result = &head;
128 Nterm *t = f;
129 while (t != nullptr)
130 {
131 M->to_expvector(t->monom, EXP1);
132 Bag *b;
133 if (Rideal->search_expvector(EXP1, b))
134 {
135 Nterm *s = quotient_element(b->basis_elem());
136 // Now we must replace t with
137 // t + c*m*s, where in(t) = in(c*m*s), and c is 1 or -1.
139 }
140 else
141 {
142 result->next = t;
143 t = t->next;
144 result = result->next;
145 }
146 }
147 result->next = nullptr;
148 f = head.next;
149}
exponents::Exponents exponents_t
void to_expvector(const_monomial m, exponents_t result_exp) const
Definition monoid.cpp:747
void reduce_lead_term_basic_field(Nterm *&f, const Nterm *g) const
Definition qring.cpp:95
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_basic_field(), result(), QRingInfo_field::Rideal, s, and Monoid::to_expvector().