73 int elem(
int x,
int y)
const;
74 void fill(
int *lamb,
int *pp);
94 size_t size()
const {
return coeffs.size(); }
206 bool p_parens =
false)
const;
235 int first_var)
const;
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
virtual bool is_equal(const ring_elem f, const ring_elem g) const
ring_elem skew_schur(const_schur_partition lambda, const_schur_partition p)
virtual void remove(ring_elem &f) const
virtual const SchurRing2 * cast_to_SchurRing2() const
bool get_scalar(const schur_poly *f, ring_elem &result) const
virtual ring_elem subtract(const ring_elem f, const ring_elem g) const
ring_elem from_coeff(ring_elem a) const
virtual ring_elem copy(const ring_elem f) const
virtual unsigned int computeHashValue(const ring_elem a) const
size_t size(ring_elem f) const
void SMinitialize(int max_rows, int max_weight)
virtual ring_elem invert(const ring_elem f) const
virtual bool is_unit(const ring_elem f) const
virtual void text_out(buffer &o) const
void dimension(const int *exp, mpz_t result) const
ring_elem mult_terms(const_schur_partition a, const_schur_partition b)
virtual bool lift(const Ring *R, const ring_elem f, ring_elem &result) const
ring_elem truncate(const ring_elem f) const
virtual ring_elem negate(const ring_elem f) const
virtual ring_elem from_int(mpz_srcptr n) const
void SMsetPartitionLength(schur_word *p, int SMmaxrows)
virtual bool promote(const Ring *R, const ring_elem f, ring_elem &result) const
bool lift_coeffs(const SchurRing2 *Sg, const ring_elem f, ring_elem &resultRE) const
bool initialize_SchurRing2()
virtual bool is_zero(const ring_elem f) const
virtual ring_elem divide(const ring_elem f, const ring_elem g) const
static SchurRing2 * createInfinite(const Ring *A)
virtual bool from_rational(mpq_srcptr q, ring_elem &result) const
bool is_valid_partition(M2_arrayint part, bool set_error=true) const
virtual ring_elem eval(const RingMap *map, const ring_elem f, int first_var) const
static SchurRing2 * create(const Ring *A, int n=-1)
virtual ring_elem from_long(long n) const
void SMbounds(int &lo, int &hi)
virtual SchurRing2 * cast_to_SchurRing2()
virtual ring_elem add(const ring_elem f, const ring_elem g) const
virtual void syzygy(const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const
engine_RawArrayPairOrNull list_form(const Ring *coeffR, const ring_elem f) const
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
void SMappendTerm(const_schur_partition f)
schur_poly * mult_by_coefficient(ring_elem a, const schur_poly *f) const
bool promote_coeffs(const SchurRing2 *Sf, const ring_elem f, ring_elem &resultRE) const
ring_elem from_partition(M2_arrayint part) const
virtual int compare_elems(const ring_elem f, const ring_elem g) const
virtual void elem_text_out(buffer &o, const ring_elem f, bool p_one=true, bool p_plus=false, bool p_parens=false) const
int compare_partitions(const_schur_partition a, const_schur_partition b) const
const Ring * getCoefficientRing() const
ring_elem dimension(const ring_elem f) const
const Ring * coefficientRing
Refactored Schur (symmetric-function) ring whose elements are schur_poly sums of partitions over a co...
schur_poly_iterator(const schur_poly &f)
const_schur_partition getMonomial()
friend bool operator==(const schur_poly_iterator &a, const schur_poly_iterator &b)
VECTOR(ring_elem) friend class(schur_word) schur_poly
schur_poly_iterator(const schur_poly &f, int)
ring_elem getCoefficient()
friend bool operator!=(const schur_poly_iterator &a, const schur_poly_iterator &b)
schur_poly_iterator iterator
VECTOR(schur_word) monoms
friend class schur_poly_iterator
void appendTerm(ring_elem coeff, const_schur_partition monom)
void append(iterator &first, iterator &last)
void initialize(int nvars)
int elem(int x, int y) const
void fill(int *lamb, int *pp)
VALGRIND_MAKE_MEM_DEFINED & result(result)
engine_RawArrayPair engine_RawArrayPairOrNull
Concrete commutative PolyRing — standard polynomial ring inheriting from PolyRingFlat.
TermIterator< Nterm > begin(Nterm *ptr)
TermIterator< Nterm > end(Nterm *)
schur_poly_heap — geometric-bucket accumulator specialised for SchurRing2 polynomials.
schur_word * schur_partition
bool operator==(const schur_poly::iterator &a, const schur_poly::iterator &b)
const schur_word * const_schur_partition
bool operator!=(const schur_poly::iterator &a, const schur_poly::iterator &b)
const schur_poly * get_schur_poly() const