Macaulay2 Engine
Loading...
Searching...
No Matches
PolyRing Class Reference

Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1, ..., x_n] with a generic coefficient ring K and monoid M. More...

#include <poly.hpp>

Inheritance diagram for PolyRing:
PolyRingFlat PolynomialRing Ring MutableEngineObject our_gc_cleanup our_new_delete SchurRing SkewPolynomialRing SolvableAlgebra WeylAlgebra

Public Member Functions

virtual void clear ()
virtual const PolyRingcast_to_PolyRing () const
virtual PolyRingcast_to_PolyRing ()
virtual void text_out (buffer &o) const
ring_elem fromCoefficient (ring_elem &coeff) const
virtual ring_elem from_long (long n) const
virtual ring_elem from_int (mpz_srcptr n) const
virtual bool from_rational (mpq_srcptr q, ring_elem &result) const
virtual bool from_BigComplex (gmp_CC z, ring_elem &result) const
virtual bool from_BigReal (gmp_RR z, ring_elem &result) const
virtual bool from_Interval (gmp_RRi z, ring_elem &result) const
virtual bool from_ComplexInterval (gmp_CCi z, ring_elem &result) const
virtual bool from_double (double a, ring_elem &result) const
virtual bool from_complex_double (double re, double im, ring_elem &result) const
virtual ring_elem var (int v) const
virtual int index_of_var (const ring_elem a) const
virtual M2_arrayint support (const ring_elem a) const
virtual bool promote (const Ring *R, const ring_elem f, ring_elem &result) const
virtual bool lift (const Ring *R, const ring_elem f, ring_elem &result) const
virtual ring_elem preferred_associate (ring_elem f) const
ring_elem preferred_associate_divisor (ring_elem ff) const
virtual bool is_unit (const ring_elem f) const
virtual bool is_zero (const ring_elem f) const
virtual bool is_equal (const ring_elem f, const ring_elem g) const
virtual int compare_elems (const ring_elem f, const ring_elem g) const
virtual bool is_homogeneous (const ring_elem f) const
virtual bool multi_degree (const ring_elem f, monomial d) const
virtual void degree_weights (const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const
virtual ring_elem homogenize (const ring_elem f, int v, int deg, const std::vector< int > &wts) const
virtual ring_elem homogenize (const ring_elem f, int v, const std::vector< int > &wts) const
virtual ring_elem copy (const ring_elem f) const
virtual void remove (ring_elem &f) const
void internal_negate_to (ring_elem &f) const
void internal_add_to (ring_elem &f, ring_elem &g) const
void internal_subtract_to (ring_elem &f, ring_elem &g) const
virtual ring_elem negate (const ring_elem f) const
virtual ring_elem add (const ring_elem f, const ring_elem g) const
virtual ring_elem subtract (const ring_elem f, const ring_elem g) const
virtual ring_elem mult (const ring_elem f, const ring_elem g) 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 ring_elem power (const ring_elem f, int n) const
virtual ring_elem invert (const ring_elem f) 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.
ring_elem gcd (const ring_elem f, const ring_elem g) const
ring_elem gcd_extended (const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
virtual ring_elem remainder (const ring_elem f, const ring_elem g) const
virtual ring_elem quotient (const ring_elem f, const ring_elem g) const
virtual ring_elem remainderAndQuotient (const ring_elem f, const ring_elem g, ring_elem &quot) const
virtual void syzygy (const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const
virtual ring_elem random () 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
virtual ring_elem eval (const RingMap *map, const ring_elem f, int first_var) const
virtual ring_elem mult_by_term (const ring_elem f, const ring_elem c, const_monomial m) const
virtual int n_flat_terms (const ring_elem f) const
virtual int n_logical_terms (int nvars0, const ring_elem f) const
virtual ring_elem get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const
virtual ring_elem get_terms (int nvars0, const ring_elem f, int lo, int hi) const
virtual ring_elem make_flat_term (const ring_elem a, const_monomial m) const
virtual ring_elem make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const
virtual ring_elem lead_flat_coeff (const ring_elem f) const
virtual ring_elem lead_logical_coeff (const Ring *coeffR, const ring_elem f) const
virtual const_monomial lead_flat_monomial (const ring_elem f) const
virtual void lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const
ring_elem lead_term (const ring_elem f) const
virtual engine_RawArrayPairOrNull list_form (const Ring *coeffR, const ring_elem f) const
virtual ring_elemget_parts (const std::vector< int > &wts, const ring_elem f, long &result_len) 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 void mult_coeff_to (ring_elem a, ring_elem &f) const
virtual void divide_coeff_to (ring_elem &f, ring_elem a) const
virtual ring_elem lead_term (int nparts, const ring_elem f) const
ring_elem fromSmallIntegerCoefficients (const std::vector< long > &coeffs, int var) const
virtual ring_elem zeroize_tiny (gmp_RR epsilon, const ring_elem f) const
virtual void increase_maxnorm (gmp_RRmutable norm, const ring_elem f) const
virtual vec vec_lead_term (int nparts, const FreeModule *F, vec v) const
virtual vec vec_top_coefficient (const vec v, int &var, int &exp) const
const vectermvec_locate_lead_term (const FreeModule *F, vec v) const
virtual void monomial_divisor (const ring_elem a, exponents_t exp) const
virtual ring_elem diff (ring_elem a, ring_elem b, int use_coeff) const
virtual bool in_subring (int nslots, const ring_elem a) const
virtual void degree_of_var (int n, const ring_elem a, int &lo, int &hi) const
virtual ring_elem divide_by_var (int n, int d, const ring_elem a) const
virtual ring_elem divide_by_expvector (const_exponents exp, const ring_elem a) const
virtual void lower_content (ring_elem &cont, ring_elem new_coeff) const
virtual ring_elem content (ring_elem f) const
virtual ring_elem content (ring_elem f, ring_elem g) const
virtual ring_elem divide_by_given_content (ring_elem f, ring_elem c) const
void sort (Nterm *&f) const
void determine_common_denominator_QQ (ring_elem f, mpz_ptr denom_so_far) const
ring_elem get_denominator_QQ (ring_elem f) const
ring_elem vec_get_denominator_QQ (vec f) const
gbvectortranslate_gbvector_from_vec_QQ (const FreeModule *F, const vec v, ring_elem &result_denominator) const
vec translate_gbvector_to_vec_QQ (const FreeModule *F, const gbvector *v, const ring_elem denom) const
gbvectortranslate_gbvector_from_ringelem_QQ (ring_elem coeff) const
gbvectortranslate_gbvector_from_ringelem (ring_elem coeff) const
gbvectortranslate_gbvector_from_vec (const FreeModule *F, const vec v, ring_elem &result_denominator) const
vec translate_gbvector_to_vec (const FreeModule *F, const gbvector *v) const
vec translate_gbvector_to_vec_denom (const FreeModule *F, const gbvector *v, const ring_elem denom) const
Public Member Functions inherited from PolyRingFlat
virtual Ntermnumerator (ring_elem f) const
virtual const PolyRingFlatcast_to_PolyRingFlat () const
virtual PolyRingFlatcast_to_PolyRingFlat ()
Public Member Functions inherited from PolynomialRing
MatrixgetPresentation () const
unsigned long get_precision () const
bool is_basic_ring () const
bool is_poly_ring () const
bool is_graded () const
CoefficientType coefficient_type () const
int n_vars () const
QRingInfoget_quotient_info () const
const RinggetCoefficientRing () const
MonomialTableget_quotient_MonomialTable () const
const MonomialIdealget_quotient_monomials () const
const MonomialTableZZget_quotient_MonomialTableZZ () const
int n_quotients () const
Ntermquotient_element (int i) const
const gbvectorquotient_gbvector (int i) const
const MonomialIdealmake_basis_MonomialIdeal () const
bool is_quotient_ring () const
bool is_skew_commutative () const
int n_skew_commutative_vars () const
int skew_variable (int i) const
bool is_skew_var (int v) const
const SkewMultiplicationgetSkewInfo () const
virtual bool is_commutative_ring () const
virtual bool is_weyl_algebra () const
virtual bool is_skew_commutative_ring () const
virtual bool is_solvable_algebra () const
virtual const PolyRinggetNumeratorRing () const
virtual const PolynomialRinggetAmbientRing () const
virtual const RinggetDenominatorRing () const
virtual GBRingget_gb_ring () const
virtual const RinggetCoefficients () const
virtual const MonoidgetMonoid () const
virtual bool is_fraction_poly_ring () const
virtual int n_fraction_vars () const
virtual const PolynomialRingcast_to_PolynomialRing () const
virtual PolynomialRingcast_to_PolynomialRing ()
SumCollectormake_SumCollector () const
virtual unsigned int computeHashValue (const ring_elem a) const
int n_terms (const ring_elem f) const
virtual ring_elem make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const =0
virtual ring_elem get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const =0
virtual void lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const =0
virtual void monomial_divisor (const ring_elem a, exponents_t exp) const =0
virtual ring_elem divide_by_expvector (const_exponents exp, const ring_elem a) const =0
Public Member Functions inherited from Ring
virtual ~Ring ()
const CoefficientRingRgetCoefficientRingR () const
long characteristic () const
const Monoiddegree_monoid () const
const PolynomialRingget_degree_ring () const
const std::vector< int > & get_heft_vector () const
virtual M2::RingID ringID () const
virtual bool isFinitePrimeField () const
virtual bool isGaloisField () const
virtual bool is_ZZ () const
virtual bool is_QQ () const
virtual bool is_RRR () const
virtual bool is_RRi () const
virtual bool is_CCC () const
virtual bool is_fraction_field () const
bool is_field () const
bool declare_field ()
ring_elem get_non_unit () const
void set_non_unit (ring_elem zero_div) const
virtual bool has_associate_divisors () const
virtual const RingZZcast_to_RingZZ () const
virtual RingZZcast_to_RingZZ ()
virtual const Z_modcast_to_Z_mod () const
virtual Z_modcast_to_Z_mod ()
virtual const GFcast_to_GF () const
virtual GFcast_to_GF ()
virtual const Towercast_to_Tower () const
virtual Towercast_to_Tower ()
virtual const PolyQQ * cast_to_PolyQQ () const
virtual PolyQQ * cast_to_PolyQQ ()
virtual const FractionFieldcast_to_FractionField () const
virtual FractionFieldcast_to_FractionField ()
virtual const LocalRingcast_to_LocalRing () const
virtual LocalRingcast_to_LocalRing ()
virtual const M2FreeAlgebracast_to_M2FreeAlgebra () const
virtual M2FreeAlgebracast_to_M2FreeAlgebra ()
virtual const M2FreeAlgebraQuotientcast_to_M2FreeAlgebraQuotient () const
virtual M2FreeAlgebraQuotientcast_to_M2FreeAlgebraQuotient ()
virtual const M2FreeAlgebraOrQuotientcast_to_M2FreeAlgebraOrQuotient () const
virtual M2FreeAlgebraOrQuotientcast_to_M2FreeAlgebraOrQuotient ()
virtual const SchurRingcast_to_SchurRing () const
virtual SchurRingcast_to_SchurRing ()
virtual const SchurRing2cast_to_SchurRing2 () const
virtual SchurRing2cast_to_SchurRing2 ()
virtual const SchurSnRingcast_to_SchurSnRing () const
virtual SchurSnRingcast_to_SchurSnRing ()
virtual const SkewPolynomialRingcast_to_SkewPolynomialRing () const
virtual SkewPolynomialRingcast_to_SkewPolynomialRing ()
virtual const SolvableAlgebracast_to_SolvableAlgebra () const
virtual SolvableAlgebracast_to_SolvableAlgebra ()
virtual const WeylAlgebracast_to_WeylAlgebra () const
virtual RRR * cast_to_RRR ()
virtual const RRR * cast_to_RRR () const
virtual RRi * cast_to_RRi ()
virtual const RRi * cast_to_RRi () const
virtual CCCcast_to_CCC ()
virtual const CCCcast_to_CCC () const
virtual const RingElementgetMinimalPolynomial () const
virtual const RingElementgetGenerator () const
virtual long discreteLog (const ring_elem &a) const
virtual const RingElementgetRepresentation (const ring_elem &a) const
virtual MutableMatrixmakeMutableMatrix (size_t nrows, size_t ncols, bool dense) const
virtual FreeModulemake_FreeModule () const
virtual FreeModulemake_Schreyer_FreeModule () const
virtual FreeModulemake_FreeModule (int n) const
virtual std::pair< bool, long > coerceToLongInteger (ring_elem a) const
ring_elem one () const
ring_elem minus_one () const
ring_elem zero () const
virtual bool lower_associate_divisor (ring_elem &f, ring_elem g) const
void negate_to (ring_elem &f) const
void add_to (ring_elem &f, const ring_elem &g) const
void subtract_to (ring_elem &f, const ring_elem &g) const
void mult_to (ring_elem &f, const ring_elem g) const
const_monomial degree (const ring_elem f) const
virtual ring_elem antipode (ring_elem f) const
vec vec_zeroize_tiny (gmp_RR epsilon, const vec f) const
void vec_increase_maxnorm (gmp_RRmutable norm, const vec f) const
void vec_sort (vecterm *&f) const
int compare_vecs (vec v, vec w) const
vec e_sub_i (int r) const
vec make_vec (int r, ring_elem a) const
vec make_vec_from_array (int len, Nterm **array) const
vec copy_vec (const vecterm *v) const
void remove_vec (vec v) const
bool is_equal (const vecterm *a, const vecterm *b) const
bool get_entry (const vecterm *v, int r, ring_elem &result) const
ring_elem get_entry (vec v, int r) const
vec sub_vector (const vecterm *v, M2_arrayint r) const
int n_nonzero_terms (const vecterm *v) const
void vec_text_out (buffer &o, const vecterm *v, bool p_one=true, bool p_plus=false, bool p_parens=false) const
vec vec_eval (const RingMap *map, const FreeModule *F, const vec v) const
vec negate_vec (vec v) const
vec add_vec (vec v, vec w) const
vec subtract_vec (vec v, vec w) const
vec mult_vec (int n, vec v) const
vec mult_vec (const ring_elem f, const vec w) const
vec rightmult_vec (const vec w, const ring_elem f) const
void set_entry (vec &v, int i, ring_elem r) const
void mult_vec_to (vec &v, const ring_elem r, bool opposite_mult) const
void mult_row (vec &v, const ring_elem r, int i, bool opposite_mult) const
void negate_vec_to (vec &v) const
void add_vec_to (vec &v, vec &w) const
void subtract_vec_to (vec &v, vec &w) const
vec mult_vec_matrix (const Matrix *m, vec v, bool opposite_mult) const
vec component_shift (int n, vec v) const
vec tensor_shift (int n, int m, vec v) const
vec tensor (const FreeModule *F, vec v, const FreeModule *G, vec w) const
void divide_vec_to (vec &v, const ring_elem a) const
void divide_row (vec &v, int r, const ring_elem a) const
ring_elem dot_product (const vecterm *v, const vecterm *w) const
vec vec_diff (vec v, int rankFw, vec w, int use_coeff) const
int vec_in_subring (int n, const vec v) const
void vec_degree_of_var (int n, const vec v, int &lo, int &hi) const
vec vec_divide_by_var (int n, int d, const vec v) const
vec vec_divide_by_expvector (const_exponents exp, const vec v) const
bool vec_is_scalar_multiple (vec f, vec g) const
vec vec_remove_monomial_factors (vec f, bool make_squarefree_only) const
bool vec_multi_degree (const FreeModule *F, const vec f, monomial degf) const
void vec_degree_weights (const FreeModule *F, const vec f, const std::vector< int > &wts, int &lo, int &hi) const
bool vec_is_homogeneous (const FreeModule *F, const vec f) const
vec vec_homogenize (const FreeModule *F, const vec f, int v, int deg, const std::vector< int > &wts) const
vec vec_homogenize (const FreeModule *F, const vec f, int v, const std::vector< int > &wts) const
ring_elem divide_by_content (ring_elem f) const
ring_elem split_off_content (ring_elem f, ring_elem &result) const
ring_elem vec_content (vec f) const
vec vec_divide_by_given_content (vec f, ring_elem c) const
vec vec_divide_by_content (vec f) const
ring_elem vec_split_off_content (vec f, vec &result) const
Public Member Functions inherited from MutableEngineObject
 MutableEngineObject ()
virtual ~MutableEngineObject ()
unsigned int hash () const
Public Member Functions inherited from our_gc_cleanup
 our_gc_cleanup ()
virtual ~our_gc_cleanup ()

Static Public Member Functions

static const PolyRingcreate (const Ring *K, const Monoid *M)
static const PolyRingget_trivial_poly_ring ()
Static Public Member Functions inherited from PolynomialRing
static PolynomialRingcreate_quotient (const PolynomialRing *R, const Matrix *M)
static PolynomialRingcreate_quotient (const PolynomialRing *R, const PolynomialRing *B)
static PolynomialRingcreate_quotient_ring (const Matrix *M)
Static Public Member Functions inherited from our_new_delete
static void * operator new (size_t size)
static void * operator new[] (size_t size)
static void operator delete (void *obj)
static void operator delete[] (void *obj)
static void * operator new (size_t size, void *existing_memory)
static void * operator new[] (size_t size, void *existing_memory)
static void operator delete (void *obj, void *existing_memory)
static void operator delete[] (void *obj, void *existing_memory)

Protected Member Functions

void initialize_poly_ring (const Ring *K, const Monoid *M)
virtual ~PolyRing ()
 PolyRing ()
void minimal_monomial (ring_elem f, monomial &monom) const
Ntermdivision_algorithm (Nterm *f, Nterm *g, Nterm *&quot) const
Ntermdivision_algorithm (Nterm *f, Nterm *g) const
Ntermpowerseries_division_algorithm (Nterm *f, Nterm *g, Nterm *&quot) const
std::vector< intsetNegativeExponentMonomial (Nterm *f) const
 Create an exponent vector whose i-th value is the minimum of the exponents of that variable, if that variable is a Laurent variable (i.e. allows negative exponents).
Ntermdivision_algorithm_with_laurent_variables (Nterm *f, Nterm *g, Nterm *&quot) const
vec vec_coefficient_of_var (vec v, int var, int exp) const
ring_elem diff_term (const_monomial m, const_monomial n, monomial resultmon, int use_coeff) const
ring_elem power_direct (const ring_elem f, int n) const
ring_elem get_logical_coeff (const Ring *coeffR, const Nterm *&f) const
Ntermnew_term () const
Ntermcopy_term (const Nterm *t) const
bool imp_attempt_to_cancel_lead_term (ring_elem &f, ring_elem g, ring_elem &coeff, monomial monom) const
ring_elem imp_skew_mult_by_term (const ring_elem f, const ring_elem c, const_monomial m) const
void imp_subtract_multiple_to (ring_elem &f, ring_elem a, const_monomial m, const ring_elem g) const
Protected Member Functions inherited from PolynomialRing
void setIsGraded (bool new_val)
void setQuotientInfo (QRingInfo *qinfo0)
void initialize_PolynomialRing (const Ring *K, const Monoid *M, const PolyRing *numeratorR, const PolynomialRing *ambientR, const Ring *denomR)
virtual ~PolynomialRing ()
 PolynomialRing ()
void sort (Nterm *&f) const
Protected Member Functions inherited from Ring
const ARinggetARing () const
void initialize_ring (long charac, const PolynomialRing *DR=nullptr, const std::vector< int > &heft_vec={})
 Ring ()
vec new_vec () const
 vector operations ////////////////////
void remove_vec_node (vec n) const

Static Protected Member Functions

static void make_trivial_ZZ_poly_ring ()
Static Protected Member Functions inherited from PolynomialRing
static PolynomialRingcreate_quotient (const PolynomialRing *R, VECTOR(Nterm *) &elems)

Static Protected Attributes

static PolyRingtrivial_poly_ring = nullptr

Private Member Functions

void initialize_poly_ring (const Ring *K, const Monoid *M, const PolynomialRing *deg_ring)

Friends

class GBRingSkew
class FreeModule
class ChineseRemainder
class MatrixStream

Additional Inherited Members

Public Types inherited from Ring
enum  CoefficientType { COEFF_ZZ , COEFF_QQ , COEFF_BASIC }
Protected Attributes inherited from PolynomialRing
bool is_skew_
SkewMultiplication skew_
bool is_weyl_
bool is_solvable_
Ring::CoefficientType coeff_type_
bool overZZ_
QRingInfoqinfo_
bool is_ZZ_quotient_
ring_elem ZZ_quotient_value_
size_t poly_size_
int nvars_
int exp_size
const RingK_
const MonoidM_
const PolyRingnumerR_
const RingdenomR_
const PolynomialRingambientR_
GBRinggb_ring_
Protected Attributes inherited from Ring
long mCharacteristic
const PolynomialRingdegree_ring
std::vector< intmHeftVector
const ARingAR
const CoefficientRingRcR
ring_elem _non_unit
int _isfield
ring_elem zeroV
ring_elem oneV
ring_elem minus_oneV

Detailed Description

Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1, ..., x_n] with a generic coefficient ring K and monoid M.

Note
AI-generated documentation. Verify against the source before relying on it.

The default polynomial-ring implementation used by the engine when no special structure (skew, Weyl, solvable, quotient, fraction) is involved. Bodies for the Ring virtuals are in poly.cpp; the class itself declares the friends needed to give the term-level helpers, GB drivers, and matrix-stream code direct access to the linked-list Nterm representation.

Definition at line 63 of file poly.hpp.


The documentation for this class was generated from the following files: