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

◆ multi_degree()

bool PolyRing::multi_degree ( const ring_elem f,
monomial d ) const
virtual

Implements PolynomialRing.

Definition at line 553 of file poly.cpp.

554{
555 auto D = degree_monoid();
556 if (begin(f) == end(f) || M_->n_vars() == 0)
557 {
558 D->one(degf);
559 return true;
560 }
561 bool result = true;
562 Nterm& t = *begin(f);
563 M_->multi_degree(t.monom, degf);
564 for (Nterm& t : f)
565 {
566 auto e = D->make_one();
567 M_->multi_degree(t.monom, e);
568 if (EQ != D->compare(degf, e))
569 {
570 result = false;
571 D->lcm(degf, e, degf);
572 }
573 }
574 // for (int i = 0; i < D->monomial_size(); i++)
575 // std::cout << degf[i] << " , ";
576 // std::cout << std::endl;
577 return result;
578}
const Monoid * M_
Definition polyring.hpp:124
const Monoid * degree_monoid() const
Definition ring.cpp:13
VALGRIND_MAKE_MEM_DEFINED & result(result)
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::M_, Nterm::monom, monomial, and result().