349{
350
351
352
353
354
355 auto f =
reinterpret_cast<const Poly*
>(ff.get_Poly());
357 {
358 ERROR(
"expected coefficient ring");
359 return nullptr;
360 }
361 int nterms = static_cast<int>(f->numTerms());
362 engine_RawMonomialArray monoms =
GETMEM(engine_RawMonomialArray,
sizeofarray(monoms,nterms));
363 engine_RawRingElementArray coeffs =
GETMEM(engine_RawRingElementArray,
sizeofarray(coeffs,nterms));
365 monoms->len = nterms;
366 coeffs->len = nterms;
369
370
371 std::vector<int> vp;
372 int next = 0;
373 for (auto i=f->cbegin(); i != f->cend(); ++i, ++next)
374 {
376 vp.resize(0);
380 }
381
383}
Polynomial< CoefficientRingType > Poly
static EngineMonomial * make(int v, int e)
void getMonomialReversed(Monom monom, std::vector< int > &result) const
const Ring * coefficientRing() const
const FreeMonoid & monoid() const
virtual ring_elem copy(const ring_elem f) const =0
static RingElement * make_raw(const Ring *R, ring_elem f)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define sizeofarray(s, len)
struct engine_RawArrayPair_struct * engine_RawArrayPair