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

◆ from_M2_vec()

void F4toM2Interface::from_M2_vec ( const VectorArithmetic * VA,
const MonomialInfo * MI,
const FreeModule * F,
vec v,
GBF4Polynomial & result )
static

Definition at line 19 of file f4-m2-interface.cpp.

24{
25 const PolynomialRing *R = F->get_ring()->cast_to_PolynomialRing();
26 const Monoid *M = R->getMonoid();
27
28 ring_elem denom;
29 gbvector *f = R->translate_gbvector_from_vec(F, v, denom);
30 GBRing *GR = R->get_gb_ring();
31 int n = GR->gbvector_n_terms(f);
32
33 int *exp = new int[M->n_vars() + 1]; // newarray_atomic(int, M->n_vars() + 1);
34 ntuple_word *lexp = new ntuple_word[M->n_vars() + 1]; // newarray_atomic(ntuple_word, M->n_vars() + 1);
35
36 result.len = n;
37 std::vector<ring_elem> relem_array;
39 n = 0;
40 monomial_word *nextmonom = result.monoms;
41 for (gbvector *t = f; t != nullptr; t = t->next)
42 {
43 relem_array.push_back(t->coeff);
44 M->to_expvector(t->monom, exp);
45 for (int a = 0; a < M->n_vars(); a++) lexp[a] = exp[a];
47 lexp,
48 t->comp - 1,
49 nextmonom); // gbvector components are shifted up by one
50 nextmonom += MI->monomial_size(nextmonom);
51 n++;
52 }
53 result.coeffs = VA->elementArrayFromContainer(relem_array);
54 delete [] exp;
55 delete [] lexp;
56}
const Ring * get_ring() const
Definition freemod.hpp:102
int gbvector_n_terms(const gbvector *f) const
Definition gbring.cpp:392
void to_expvector(const_monomial m, exponents_t result_exp) const
Definition monoid.cpp:747
int n_vars() const
Definition monoid.hpp:207
int max_monomial_size() const
Definition moninfo.hpp:159
int monomial_size(const_packed_monomial m) const
Definition moninfo.hpp:160
bool from_expvector(const_ntuple_monomial e, long comp, packed_monomial result) const
Definition moninfo.hpp:191
virtual GBRing * get_gb_ring() const
Definition polyring.hpp:276
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
virtual gbvector * translate_gbvector_from_vec(const FreeModule *F, const vec v, ring_elem &result_denominator) const =0
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
ElementArray elementArrayFromContainer(const Container &c) const
VALGRIND_MAKE_MEM_DEFINED & result(result)
long monomial_word
Definition moninfo.hpp:77
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
#define newarray_atomic(T, len)
Definition newdelete.hpp:91
ntuple_monomials::Exponent ntuple_word

References Ring::cast_to_PolynomialRing(), VectorArithmetic::elementArrayFromContainer(), MonomialInfo::from_expvector(), GBRing::gbvector_n_terms(), PolynomialRing::get_gb_ring(), FreeModule::get_ring(), PolynomialRing::getMonoid(), MonomialInfo::max_monomial_size(), MonomialInfo::monomial_size(), Monoid::n_vars(), newarray_atomic, gbvector::next, result(), Monoid::to_expvector(), and PolynomialRing::translate_gbvector_from_vec().

Referenced by from_M2_matrix().