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

◆ is_homogeneous()

bool PolyRing::is_homogeneous ( const ring_elem f) const
virtual

Implements PolynomialRing.

Definition at line 533 of file poly.cpp.

534{
535 if (!is_graded()) return false;
536 if (begin(f) == end(f)) return true;
537 auto D = degree_monoid();
538 auto degf = D->make_one();
539 Nterm& t = *begin(f);
540 M_->multi_degree(t.monom, degf);
541 for (Nterm& t : f)
542 {
543 auto e = D->make_one();
544 M_->multi_degree(t.monom, e);
545 if (EQ != D->compare(degf, e))
546 return false;
547 }
548 return true;
549}
const Monoid * M_
Definition polyring.hpp:124
bool is_graded() const
Definition polyring.hpp:185
const Monoid * degree_monoid() const
Definition ring.cpp:13
TermIterator< Nterm > begin(Nterm *ptr)
Definition ringelem.cpp:4
TermIterator< Nterm > end(Nterm *)
Definition ringelem.cpp:5
int monom[1]
Definition ringelem.hpp:160
const int EQ
Definition style.hpp:40

References begin(), Ring::degree_monoid(), end(), EQ, PolynomialRing::is_graded(), PolynomialRing::M_, and Nterm::monom.

Referenced by PolynomialRing::setQuotientInfo().