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

◆ vec_is_homogeneous()

bool Ring::vec_is_homogeneous ( const FreeModule * F,
const vec f ) const

Definition at line 832 of file ring-vecs.cpp.

833{
834 if (!this->is_graded()) return false;
835 if (f == nullptr) return true;
838 bool result = multi_degree(f->coeff, d);
839 if (result)
840 {
841 degree_monoid()->mult(d, F->degree(f->comp), d);
842 for (vecterm *t = f->next; (t != nullptr) && result; t = t->next)
843 {
844 bool ishom = multi_degree(t->coeff, e);
845 result = result && ishom;
846 if (result)
847 {
848 degree_monoid()->mult(e, F->degree(t->comp), e);
849 if (0 != degree_monoid()->compare(d, e)) result = false;
850 }
851 }
852 }
853 degree_monoid()->remove(d);
854 degree_monoid()->remove(e);
855 return result;
856}
const_monomial degree(int i) const
Definition freemod.hpp:104
monomial make_one() const
Definition monoid.cpp:455
void remove(monomial d) const
Definition monoid.cpp:462
void mult(const_monomial m, const_monomial n, monomial result) const
Definition monoid.cpp:363
virtual bool multi_degree(const ring_elem f, monomial d) const
Definition ring.cpp:407
virtual bool is_graded() const
Definition ring.hpp:208
const Monoid * degree_monoid() const
Definition ring.cpp:13
#define monomial
Definition gb-toric.cpp:11
static int compare(const vecterm *t, const vecterm *s)
Definition geovec.hpp:112
VALGRIND_MAKE_MEM_DEFINED & result(result)

References compare(), FreeModule::degree(), degree_monoid(), is_graded(), Monoid::make_one(), monomial, Monoid::mult(), multi_degree(), Monoid::remove(), and result().