146 const std::vector<int> &wts,
152 const std::vector<int> &wts)
const;
155 const std::vector<int> &wts)
const;
204 bool p_parens =
false)
const;
208 int first_var)
const;
245 long &result_len)
const;
289 int use_coeff)
const;
varpower::ConstExponents const_varpower
exponents::ConstExponents const_exponents
exponents::Exponents exponents_t
base class for Groebner basis computations.
Polynomial-ring view tuned for the inner loop of classical Buchberger Groebner-basis computations.
GBRing specialisation for skew-commutative (exterior-like) polynomial rings.
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
virtual bool from_ComplexInterval(gmp_CCi z, ring_elem &result) const
void internal_negate_to(ring_elem &f) const
ring_elem power_direct(const ring_elem f, int n) const
virtual bool is_equal(const ring_elem f, const ring_elem g) const
ring_elem diff_term(const_monomial m, const_monomial n, monomial resultmon, int use_coeff) const
virtual vec vec_lead_term(int nparts, const FreeModule *F, vec v) const
virtual void text_out(buffer &o) const
void internal_add_to(ring_elem &f, ring_elem &g) const
static const PolyRing * get_trivial_poly_ring()
virtual void increase_maxnorm(gmp_RRmutable norm, const ring_elem f) const
friend class MatrixStream
virtual void syzygy(const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const
static const PolyRing * create(const Ring *K, const Monoid *M)
Nterm * copy_term(const Nterm *t) const
virtual void degree_weights(const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const
virtual vec vec_top_coefficient(const vec v, int &var, int &exp) const
vec translate_gbvector_to_vec_denom(const FreeModule *F, const gbvector *v, const ring_elem denom) const
virtual ring_elem power(const ring_elem f, mpz_srcptr n) const
Exponentiation. This is the default function, if a class doesn't define this.
virtual void elem_text_out(buffer &o, const ring_elem f, bool p_one=true, bool p_plus=false, bool p_parens=false) const
void initialize_poly_ring(const Ring *K, const Monoid *M, const PolynomialRing *deg_ring)
virtual ring_elem from_long(long n) const
virtual void divide_coeff_to(ring_elem &f, ring_elem a) const
virtual int n_flat_terms(const ring_elem f) const
virtual const PolyRing * cast_to_PolyRing() const
ring_elem preferred_associate_divisor(ring_elem ff) const
ring_elem fromCoefficient(ring_elem &coeff) const
std::vector< int > setNegativeExponentMonomial(Nterm *f) const
Create an exponent vector whose i-th value is the minimum of the exponents of that variable,...
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
virtual void mult_coeff_to(ring_elem a, ring_elem &f) const
virtual bool from_BigComplex(gmp_CC z, ring_elem &result) const
virtual ring_elem content(ring_elem f) const
virtual ring_elem homogenize(const ring_elem f, int v, int deg, const std::vector< int > &wts) const
virtual ring_elem remainder(const ring_elem f, const ring_elem g) const
virtual ring_elem var(int v) const
ring_elem get_denominator_QQ(ring_elem f) const
virtual ring_elem divide_by_expvector(const_exponents exp, const ring_elem a) const
gbvector * translate_gbvector_from_ringelem_QQ(ring_elem coeff) const
void imp_subtract_multiple_to(ring_elem &f, ring_elem a, const_monomial m, const ring_elem g) const
ring_elem vec_get_denominator_QQ(vec f) const
virtual bool from_complex_double(double re, double im, ring_elem &result) const
friend class ChineseRemainder
virtual ring_elem invert(const ring_elem f) const
virtual bool is_unit(const ring_elem f) const
virtual ring_elem diff(ring_elem a, ring_elem b, int use_coeff) const
virtual ring_elem eval(const RingMap *map, const ring_elem f, int first_var) const
virtual ring_elem divide_by_given_content(ring_elem f, ring_elem c) const
virtual ring_elem zeroize_tiny(gmp_RR epsilon, const ring_elem f) const
Nterm * division_algorithm_with_laurent_variables(Nterm *f, Nterm *g, Nterm *") const
virtual bool promote(const Ring *R, const ring_elem f, ring_elem &result) const
virtual bool is_homogeneous(const ring_elem f) const
virtual ring_elem from_int(mpz_srcptr n) const
virtual ring_elem mult_by_term(const ring_elem f, const ring_elem c, const_monomial m) const
virtual int index_of_var(const ring_elem a) const
virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const
virtual ring_elem copy(const ring_elem f) const
Nterm * division_algorithm(Nterm *f, Nterm *g, Nterm *") const
vec translate_gbvector_to_vec(const FreeModule *F, const gbvector *v) const
virtual void monomial_divisor(const ring_elem a, exponents_t exp) const
virtual ring_elem remainderAndQuotient(const ring_elem f, const ring_elem g, ring_elem ") const
virtual ring_elem get_part(const std::vector< int > &wts, const ring_elem f, bool lobound_given, bool hibound_given, long lobound, long hibound) const
virtual ring_elem add(const ring_elem f, const ring_elem g) const
virtual bool from_double(double a, ring_elem &result) const
ring_elem gcd_extended(const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
virtual PolyRing * cast_to_PolyRing()
virtual ring_elem * get_parts(const std::vector< int > &wts, const ring_elem f, long &result_len) const
virtual ring_elem negate(const ring_elem f) const
ring_elem get_logical_coeff(const Ring *coeffR, const Nterm *&f) const
const vecterm * vec_locate_lead_term(const FreeModule *F, vec v) const
ring_elem imp_skew_mult_by_term(const ring_elem f, const ring_elem c, const_monomial m) const
virtual void remove(ring_elem &f) const
gbvector * translate_gbvector_from_ringelem(ring_elem coeff) const
virtual int compare_elems(const ring_elem f, const ring_elem g) const
virtual ring_elem make_logical_term(const Ring *coeffR, const ring_elem a, const_exponents exp) const
gbvector * translate_gbvector_from_vec_QQ(const FreeModule *F, const vec v, ring_elem &result_denominator) const
virtual ring_elem get_terms(int nvars0, const ring_elem f, int lo, int hi) const
Nterm * powerseries_division_algorithm(Nterm *f, Nterm *g, Nterm *") const
virtual ring_elem random() const
virtual bool from_BigReal(gmp_RR z, ring_elem &result) const
bool imp_attempt_to_cancel_lead_term(ring_elem &f, ring_elem g, ring_elem &coeff, monomial monom) const
virtual ring_elem preferred_associate(ring_elem f) const
ring_elem gcd(const ring_elem f, const ring_elem g) const
virtual ring_elem subtract(const ring_elem f, const ring_elem g) const
void minimal_monomial(ring_elem f, monomial &monom) const
virtual void lead_logical_exponents(int nvars0, const ring_elem f, exponents_t result_exp) const
virtual bool in_subring(int nslots, const ring_elem a) const
vec vec_coefficient_of_var(vec v, int var, int exp) const
virtual void degree_of_var(int n, const ring_elem a, int &lo, int &hi) const
virtual void lower_content(ring_elem &cont, ring_elem new_coeff) const
virtual bool multi_degree(const ring_elem f, monomial d) const
static void make_trivial_ZZ_poly_ring()
virtual bool from_rational(mpq_srcptr q, ring_elem &result) const
virtual int n_logical_terms(int nvars0, const ring_elem f) const
ring_elem fromSmallIntegerCoefficients(const std::vector< long > &coeffs, int var) const
virtual ring_elem divide(const ring_elem f, const ring_elem g) const
Warning! This function works even if g does not divide f.
virtual bool lift(const Ring *R, const ring_elem f, ring_elem &result) const
virtual bool from_Interval(gmp_RRi z, ring_elem &result) const
ring_elem lead_term(const ring_elem f) const
virtual ring_elem get_coeff(const Ring *coeffR, const ring_elem f, const_varpower vp) const
vec translate_gbvector_to_vec_QQ(const FreeModule *F, const gbvector *v, const ring_elem denom) const
virtual engine_RawArrayPairOrNull list_form(const Ring *coeffR, const ring_elem f) const
virtual bool is_zero(const ring_elem f) const
void determine_common_denominator_QQ(ring_elem f, mpz_ptr denom_so_far) const
virtual M2_arrayint support(const ring_elem a) const
virtual ring_elem lead_logical_coeff(const Ring *coeffR, const ring_elem f) const
void sort(Nterm *&f) const
virtual const_monomial lead_flat_monomial(const ring_elem f) const
virtual ring_elem quotient(const ring_elem f, const ring_elem g) const
virtual ring_elem lead_flat_coeff(const ring_elem f) const
gbvector * translate_gbvector_from_vec(const FreeModule *F, const vec v, ring_elem &result_denominator) const
static PolyRing * trivial_poly_ring
void internal_subtract_to(ring_elem &f, ring_elem &g) const
virtual ring_elem divide_by_var(int n, int d, const ring_elem a) const
PolynomialRing subclass whose elements are represented as a single flat Nterm* linked list (no fracti...
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
const int * const_monomial
VALGRIND_MAKE_MEM_DEFINED & result(result)
struct gmp_CC_struct * gmp_CC
engine_RawArrayPair engine_RawArrayPairOrNull
struct gmp_CCi_struct * gmp_CCi
const PolyRing * isUnivariateOverPrimeField(const Ring *R)
PolynomialRing — abstract polynomial-ring base, the engine's most-reused class.
Ring — the legacy abstract base class for every coefficient and polynomial ring.
ring_elem — the universal value type carried by every Ring* in the engine.
SkewMultiplication — configuration object naming the skew-commuting variables of a ring.
Singly linked-list node carrying one term of a polynomial-ring element.