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

◆ list_form()

engine_RawArrayPairOrNull SchurRing2::list_form ( const Ring * coeffR,
const ring_elem f ) const

Definition at line 682 of file schur2.cpp.

684{
685 if (coeffR != coefficientRing)
686 {
687 ERROR("expected coefficient ring of Schur ring");
688 return nullptr;
689 }
690 const schur_poly *f1 = f.get_schur_poly();
691 int n = static_cast<int>(f1->size()); // this is here because the lengths of
692 // arrays for M3 front end use int as
693 // length field.
694 engine_RawMonomialArray monoms =
695 GETMEM(engine_RawMonomialArray, sizeofarray(monoms, n));
696 engine_RawRingElementArray coeffs =
697 GETMEM(engine_RawRingElementArray, sizeofarray(coeffs, n));
698 monoms->len = n;
699 coeffs->len = n;
700 engine_RawArrayPair result = newitem(struct engine_RawArrayPair_struct);
701 result->monoms = monoms;
702 result->coeffs = coeffs;
703
704 // Loop through the terms
705 gc_vector<int> vp;
706 schur_poly::iterator i = f1->begin();
707 for (int next = 0; next < n; ++i, ++next)
708 {
709 coeffs->array[next] =
711 to_varpower(i.getMonomial(), vp);
712 monoms->array[next] = EngineMonomial::make(vp.data());
713 vp.resize(0);
714 }
715 return result;
716}
static EngineMonomial * make(int v, int e)
Definition monomial.cpp:26
static RingElement * make_raw(const Ring *R, ring_elem f)
Definition relem.cpp:20
const Ring * coefficientRing
Definition schur2.hpp:154
const_schur_partition getMonomial()
Definition schur2.hpp:118
ring_elem getCoefficient()
Definition schur2.hpp:117
schur_poly_iterator iterator
Definition schur2.hpp:90
iterator begin() const
Definition schur2.hpp:128
size_t size() const
Definition schur2.hpp:94
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define sizeofarray(s, len)
Definition m2-mem.h:129
struct engine_RawArrayPair_struct * engine_RawArrayPair
Definition m2-types.h:183
#define newitem(T)
Definition newdelete.hpp:86
#define GETMEM(T, size)
void to_varpower(const_schur_partition a, gc_vector< int > &result)
Definition schur2.cpp:648
const schur_poly * get_schur_poly() const
Definition ringelem.hpp:137

References schur_poly::begin(), coefficientRing, ERROR, ring_elem::get_schur_poly(), schur_poly_iterator::getCoefficient(), GETMEM, schur_poly_iterator::getMonomial(), EngineMonomial::make(), RingElement::make_raw(), newitem, result(), Ring::Ring(), schur_poly::size(), sizeofarray, and to_varpower().

Referenced by IM2_RingElement_list_form().