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

◆ divide_by_expvector()

ring_elem PolyRing::divide_by_expvector ( const_exponents exp,
const ring_elem a ) const
virtual

Reimplemented from Ring.

Definition at line 2175 of file poly.cpp.

2176{
2177 Nterm *result = nullptr;
2178 exponents_t exp0 = newarray_atomic(int, n_vars());
2179 for (Nterm& t : a)
2180 {
2181 M_->to_expvector(t.monom, exp0);
2182 exponents::quotient(n_vars(), exp0, exp, exp0);
2183 Nterm *u = new_term();
2184 u->coeff = t.coeff;
2185 M_->from_expvector(exp0, u->monom);
2186 u->next = result;
2187 result = u;
2188 }
2189 freemem(exp0);
2190 sort(result);
2191 return result;
2192}
exponents::Exponents exponents_t
static void quotient(int nvars, ConstExponents a, ConstExponents b, Exponents result)
Nterm * new_term() const
Definition poly.cpp:146
void sort(Nterm *&f) const
Definition poly.cpp:2077
const Monoid * M_
Definition polyring.hpp:124
int n_vars() const
Definition polyring.hpp:196
void freemem(void *s)
Definition m2-mem.cpp:103
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define newarray_atomic(T, len)
Definition newdelete.hpp:91
Nterm * next
Definition ringelem.hpp:157
ring_elem coeff
Definition ringelem.hpp:158
int monom[1]
Definition ringelem.hpp:160

References Nterm::coeff, freemem(), PolynomialRing::M_, Nterm::monom, PolynomialRing::n_vars(), new_term(), newarray_atomic, Nterm::next, ExponentVector< int, true >::quotient(), result(), and sort().