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

◆ vec_multi_degree()

bool Ring::vec_multi_degree ( const FreeModule * F,
const vec f,
monomial degf ) const

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

808{
809 monomial degv;
810 degree_monoid()->one(degf);
811 if (f == nullptr) return true;
812 bool result = multi_degree(f->coeff, degf);
813 degree_monoid()->mult(degf, F->degree(f->comp), degf);
814 degv = degree_monoid()->make_one();
815
816 for (vec v = f->next; v != nullptr; v = v->next)
817 {
818 bool ishom = multi_degree(v->coeff, degv);
819 result = result && ishom;
820 degree_monoid()->mult(degv, F->degree(v->comp), degv);
821
822 if (0 != degree_monoid()->compare(degf, degv))
823 {
824 result = false;
825 degree_monoid()->lcm(degf, degv, degf);
826 }
827 }
828 degree_monoid()->remove(degv);
829 return result;
830}
const_monomial degree(int i) const
Definition freemod.hpp:104
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
void one(monomial result) const
Definition monoid.cpp:470
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
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(), degree_monoid(), monomial, multi_degree(), and result().