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

◆ to_M2_freemodule() [2/2]

FreeModule * ResF4toM2Interface::to_M2_freemodule ( const PolynomialRing * R,
SchreyerFrame & C,
int lev )
static

Definition at line 151 of file res-f4-m2-interface.cpp.

154{
155 FreeModule* result = new FreeModule(R, 0, true);
156 if (lev < 0 or lev > C.maxLevel())
157 {
158 return result;
159 }
160 const Monoid* M = R->getMonoid();
161 auto& thislevel = C.level(lev);
162 const ResSchreyerOrder& S = C.schreyerOrder(lev);
163 int* exp = new int[M->n_vars()];
164 for (auto i = 0; i < thislevel.size(); ++i)
165 {
166 int d[1];
167 d[0] = thislevel[i].mDegree;
168 monomial deg = M->degree_monoid()->make_one();
169 M->degree_monoid()->from_expvector(d, deg);
170 // Now grab the Schreyer info
171 // unpack to exponent vector, then repack into monoid element
172 monomial totalmonom = M->make_one();
173 component_index comp;
174 C.monoid().to_expvector(S.mTotalMonom[i], exp, comp);
175 M->from_expvector(exp, totalmonom);
176 result->append_schreyer(
177 deg, totalmonom, static_cast<int>(S.mTieBreaker[i]));
178 }
179 delete[] exp;
180 return result;
181}
int n_vars() const
Definition monoid.hpp:207
monomial make_one() const
Definition monoid.cpp:455
const Monoid * degree_monoid() const
Definition monoid.hpp:175
void from_expvector(const_exponents exp, monomial result) const
Definition monoid.cpp:742
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
bool to_expvector(res_const_packed_monomial m, res_ntuple_monomial result, component_index &result_comp) const
const ResMonoid & monoid() const
std::vector< FrameElement > & level(int lev)
ResSchreyerOrder & schreyerOrder(int lev)
#define monomial
Definition gb-toric.cpp:11
VALGRIND_MAKE_MEM_DEFINED & result(result)
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
myword component_index
std::vector< res_packed_monomial > mTotalMonom
std::vector< component_index > mTieBreaker

References Monoid::degree_monoid(), Monoid::from_expvector(), PolynomialRing::getMonoid(), SchreyerFrame::level(), Monoid::make_one(), SchreyerFrame::maxLevel(), SchreyerFrame::monoid(), monomial, ResSchreyerOrder::mTieBreaker, ResSchreyerOrder::mTotalMonom, Monoid::n_vars(), result(), SchreyerFrame::schreyerOrder(), and ResMonoidDense::to_expvector().

Referenced by F4ResComputation::get_free().