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

◆ FreeMonoid()

FreeMonoid::FreeMonoid ( const std::vector< std::string > & variableNames,
const PolynomialRing * degreeRing,
const std::vector< int > & degrees,
const std::vector< int > & wtvecs,
const std::vector< int > & heftVector )

Definition at line 21 of file FreeMonoid.cpp.

29 mDegrees(degrees),
30 mWeightVectors(wtvecs),
31 mHeftVector(heftVector),
32 mNumWeights(wtvecs.size() / variableNames.size())
33{
34 auto ndegrees = degreeMonoid().n_vars();
35 [[maybe_unused]] auto nvars = variableNames.size();
36 assert(nvars * ndegrees == mDegrees.size());
37
38 for (const int* i = mDegrees.data(); i != mDegrees.data() + mDegrees.size(); i += ndegrees)
39 {
42 mDegreeOfVar.push_back(deg);
43 }
44 for (auto deg : mDegreeOfVar)
45 mHeftDegrees.push_back(degreeMonoid().degree_weights(deg, mHeftVector));
46}
const Monoid & degreeMonoid() const
const int mNumWeights
const PolynomialRing * mDegreeRing
std::vector< int > mHeftDegrees
const std::vector< int > mWeightVectors
const std::vector< int > mHeftVector
const std::vector< int > mDegrees
const std::vector< std::string > & variableNames() const
const PolynomialRing * degreeRing() const
const std::vector< std::string > mVariableNames
gc_vector< const int * > mDegreeOfVar
int n_vars() const
Definition monoid.hpp:207
monomial make_one() const
Definition monoid.cpp:455
void from_expvector(const_exponents exp, monomial result) const
Definition monoid.cpp:742
#define monomial
Definition gb-toric.cpp:11

References degreeMonoid(), degreeRing(), Monoid::from_expvector(), Monoid::make_one(), mDegreeOfVar, mDegreeRing, mDegrees, mHeftDegrees, mHeftVector, mNumWeights, monomial, mVariableNames, mWeightVectors, Monoid::n_vars(), and variableNames().