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

◆ multi_degree()

bool FreeAlgebra::multi_degree ( const Poly & f,
monomial already_allocated_degree_vector ) const

Definition at line 838 of file FreeAlgebra.cpp.

840{
841 monomial degVec = already_allocated_degree_vector;
842 bool ishomog = true;
843 auto i = f.cbegin();
844 monoid().multi_degree(i.monom(), degVec);
846 for (++i; i != f.cend(); ++i)
847 {
848 monoid().multi_degree(i.monom(), e);
849 if (not degreeMonoid().is_equal(degVec, e))
850 {
851 ishomog = false;
852 degreeMonoid().lcm(degVec, e, degVec);
853 }
854 }
855 degreeMonoid().remove(e);
856 return ishomog;
857}
const Monoid & degreeMonoid() const
const FreeMonoid & monoid() const
bool is_equal(const Poly &f, const Poly &g) const
void multi_degree(const Monom &m, monomial already_allocated_degree_vector) const
void lcm(const_monomial m, const_monomial n, monomial result) const
Definition monoid.cpp:561
monomial make_one() const
Definition monoid.cpp:455
void remove(monomial d) const
Definition monoid.cpp:462
#define monomial
Definition gb-toric.cpp:11

References degreeMonoid(), is_equal(), Monoid::lcm(), Monoid::make_one(), monoid(), monomial, FreeMonoid::multi_degree(), and Monoid::remove().

Referenced by degree(), and M2FreeAlgebra::multi_degree().