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

◆ multi_degree()

void Monoid::multi_degree ( const_monomial m,
monomial result ) const

Definition at line 626 of file monoid.cpp.

627{
628 if (mDegreeMonoid->n_vars() == 0) return;
629
631
632 mDegreeMonoid->one(result);
633 if (mVariableCount == 0) return;
634 monomial mon1 = mDegreeMonoid->make_one();
635
636 to_expvector(m, EXP1);
637
638 for (int i = 0; i < mVariableCount; i++)
639 if (EXP1[i] != 0)
640 {
641 mDegreeMonoid->power(mDegreeOfVar[i], EXP1[i], mon1);
642 mDegreeMonoid->mult(result, mon1, result);
643 }
644 mDegreeMonoid->remove(mon1);
645}
exponents::Exponents exponents_t
void to_expvector(const_monomial m, exponents_t result_exp) const
Definition monoid.cpp:747
const Monoid * mDegreeMonoid
Definition monoid.hpp:90
size_t exp_size
Definition monoid.hpp:120
const int mVariableCount
number of variables
Definition monoid.hpp:99
gc_vector< const_monomial > mDegreeOfVar
Definition monoid.hpp:113
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
int * monomial
Definition monoid.hpp:58

References ALLOCATE_EXPONENTS, exp_size, mDegreeMonoid, mDegreeOfVar, mVariableCount, result(), and to_expvector().