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

◆ setNegativeExponentMonomial()

std::vector< int > PolyRing::setNegativeExponentMonomial ( Nterm * f) const
protected

Create an exponent vector whose i-th value is the minimum of the exponents of that variable, if that variable is a Laurent variable (i.e. allows negative exponents).

Definition at line 1401 of file poly.cpp.

1402{
1403 exponents_t exp = new int[n_vars()];
1404 std::vector<int> result(n_vars(), 0);
1405 Nterm* t = f;
1406 getMonoid()->to_expvector(t->monom, exp);
1407 for (int i=0; i<n_vars(); i++)
1408 if (getMonoid()->isLaurentVariable(i))
1409 result[i] = exp[i];
1410
1411 for (t = t->next; t != nullptr; t = t->next)
1412 {
1413 getMonoid()->to_expvector(t->monom, exp);
1414 for (int i=0; i<n_vars(); i++)
1415 if (getMonoid()->isLaurentVariable(i) and exp[i] < result[i])
1416 result[i] = exp[i];
1417 }
1418 delete [] exp;
1419 return result;
1420}
exponents::Exponents exponents_t
void to_expvector(const_monomial m, exponents_t result_exp) const
Definition monoid.cpp:747
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
int n_vars() const
Definition polyring.hpp:196
VALGRIND_MAKE_MEM_DEFINED & result(result)
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
Nterm * next
Definition ringelem.hpp:157
int monom[1]
Definition ringelem.hpp:160

References PolynomialRing::getMonoid(), Nterm::monom, PolynomialRing::n_vars(), Nterm::next, result(), and Monoid::to_expvector().

Referenced by division_algorithm_with_laurent_variables().