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

◆ divide_by_var()

ring_elem PolyRing::divide_by_var ( int n,
int d,
const ring_elem a ) const
virtual

Implements PolynomialRing.

Definition at line 2149 of file poly.cpp.

2153{
2154 if (d == 0) return a;
2155 Nterm head;
2156 Nterm *result = &head;
2158 for (Nterm& t : a)
2159 {
2160 M_->to_expvector(t.monom, exp);
2161 if (exp[n] >= d)
2162 exp[n] -= d;
2163 else
2164 continue;
2165 result->next = new_term();
2166 result = result->next;
2167 result->coeff = t.coeff;
2168 M_->from_expvector(exp, result->monom);
2169 }
2170 freemem(exp);
2171 result->next = nullptr;
2172 return head.next;
2173}
exponents::Exponents exponents_t
Nterm * new_term() const
Definition poly.cpp:146
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)
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
#define newarray_atomic(T, len)
Definition newdelete.hpp:91
Nterm * next
Definition ringelem.hpp:157

References freemem(), PolynomialRing::M_, PolynomialRing::n_vars(), new_term(), newarray_atomic, Nterm::next, and result().