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

◆ index_of_var()

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

Reimplemented from Ring.

Definition at line 84 of file M2FreeAlgebra.cpp.

85{
86 // This function is needed at top level to be able to determine if a ring element is a variable
87 //const Poly* f = reinterpret_cast<Poly*>(a.poly_val);
88 auto f = reinterpret_cast<const Poly*>(a.get_Poly());
89
90 // f is a variable iff: #terms is 1, monomial is [3,1,v], coeff is 1
91 if (f->numTerms() != 1) return -1;
92 auto i = f->cbegin();
93 if (!coefficientRing()->is_equal(coefficientRing()->one(), i.coeff())) return -1;
94 return monoid().index_of_variable(i.monom());
95}
Polynomial< CoefficientRingType > Poly
int index_of_variable(const Monom &m) const
virtual bool is_equal(const ring_elem f, const ring_elem g) const
const Ring * coefficientRing() const
const FreeMonoid & monoid() const
ring_elem one() const
Definition ring.hpp:357
const void * get_Poly() const
Definition ringelem.hpp:128

References coefficientRing(), ring_elem::get_Poly(), FreeMonoid::index_of_variable(), is_equal(), monoid(), and Ring::one().

Referenced by M2FreeAlgebraQuotient::index_of_var().