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

◆ index_of_var()

int PolyRing::index_of_var ( const ring_elem a) const
virtual

Implements PolynomialRing.

Definition at line 319 of file poly.cpp.

320{
321 Nterm *f = a;
322 if (f == nullptr || f->next != nullptr) return -1;
323 if (!K_->is_equal(f->coeff, K_->from_long(1))) return -1;
324 int result = -1;
326 M_->to_expvector(f->monom, EXP1);
327 for (int i = 0; i < n_vars(); i++)
328 if (EXP1[i] > 1)
329 return -1;
330 else if (EXP1[i] == 1)
331 {
332 if (result >= 0) return -1;
333 result = i;
334 }
335 return result;
336}
exponents::Exponents exponents_t
const Ring * K_
Definition polyring.hpp:123
const Monoid * M_
Definition polyring.hpp:124
int n_vars() const
Definition polyring.hpp:196
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
Nterm * next
Definition ringelem.hpp:157
ring_elem coeff
Definition ringelem.hpp:158
int monom[1]
Definition ringelem.hpp:160

References ALLOCATE_EXPONENTS, Nterm::coeff, PolynomialRing::exp_size, PolynomialRing::K_, PolynomialRing::M_, Nterm::monom, PolynomialRing::n_vars(), Nterm::next, and result().