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

PolynomialRing subclass whose elements are represented as a single flat Nterm* linked list (no fraction / quotient wrapper). More...

#include <polyring.hpp>

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

Public Member Functions

virtual Ntermnumerator (ring_elem f) const
virtual const PolyRingFlatcast_to_PolyRingFlat () const
virtual PolyRingFlatcast_to_PolyRingFlat ()
Public Member Functions inherited from PolynomialRing
virtual void clear ()
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 void text_out (buffer &o) const =0
virtual unsigned int computeHashValue (const ring_elem a) const
virtual ring_elem var (int v) const =0
virtual int index_of_var (const ring_elem a) const =0
virtual M2_arrayint support (const ring_elem a) const =0
virtual bool is_homogeneous (const ring_elem f) const =0
virtual bool multi_degree (const ring_elem f, monomial d) const =0
virtual void degree_weights (const ring_elem f, const std::vector< int > &wts, int &lo, int &hi) const =0
virtual ring_elem homogenize (const ring_elem f, int v, int deg, const std::vector< int > &wts) const =0
virtual ring_elem homogenize (const ring_elem f, int v, const std::vector< int > &wts) const =0
virtual ring_elem mult_by_term (const ring_elem f, const ring_elem c, const_monomial m) const =0
virtual int n_flat_terms (const ring_elem f) const =0
virtual int n_logical_terms (int nvars0, const ring_elem f) const =0
virtual engine_RawArrayPairOrNull list_form (const Ring *coeffR, const ring_elem f) const =0
virtual ring_elemget_parts (const std::vector< int > &wts, const ring_elem f, long &result_len) const =0
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 =0
int n_terms (const ring_elem f) const
virtual ring_elem make_flat_term (const ring_elem a, const_monomial m) const =0
virtual ring_elem make_logical_term (const Ring *coeffR, const ring_elem a, const_exponents exp) const =0
virtual ring_elem lead_flat_coeff (const ring_elem f) const =0
virtual ring_elem lead_logical_coeff (const Ring *coeffR, const ring_elem f) const =0
virtual ring_elem get_coeff (const Ring *coeffR, const ring_elem f, const_varpower vp) const =0
virtual ring_elem get_terms (int nvars0, const ring_elem f, int lo, int hi) const =0
virtual const_monomial lead_flat_monomial (const ring_elem f) const =0
virtual void lead_logical_exponents (int nvars0, const ring_elem f, exponents_t result_exp) const =0
virtual void mult_coeff_to (ring_elem a, ring_elem &f) const =0
virtual void divide_coeff_to (ring_elem &f, ring_elem a) const =0
virtual void monomial_divisor (const ring_elem a, exponents_t exp) const =0
virtual ring_elem diff (ring_elem a, ring_elem b, int use_coeff) const =0
virtual bool in_subring (int nslots, const ring_elem a) const =0
virtual void degree_of_var (int n, const ring_elem a, int &lo, int &hi) const =0
virtual ring_elem divide_by_var (int n, int d, const ring_elem a) const =0
virtual ring_elem divide_by_expvector (const_exponents exp, const ring_elem a) const =0
virtual const vectermvec_locate_lead_term (const FreeModule *F, vec v) const =0
virtual vec vec_lead_term (int nparts, const FreeModule *F, vec v) const =0
virtual vec vec_top_coefficient (const vec v, int &var, int &exp) const =0
virtual gbvectortranslate_gbvector_from_ringelem (ring_elem coeff) const =0
virtual gbvectortranslate_gbvector_from_vec (const FreeModule *F, const vec v, ring_elem &result_denominator) const =0
virtual vec translate_gbvector_to_vec (const FreeModule *F, const gbvector *v) const =0
virtual vec translate_gbvector_to_vec_denom (const FreeModule *F, const gbvector *v, const ring_elem denom) 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 PolyRingcast_to_PolyRing () const
virtual PolyRingcast_to_PolyRing ()
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 ring_elem from_long (long n) const =0
virtual ring_elem from_int (mpz_srcptr n) const =0
virtual bool from_rational (const mpq_srcptr q, ring_elem &result) const =0
virtual bool from_BigReal (gmp_RR a, ring_elem &result) const
virtual bool from_Interval (gmp_RRi a, ring_elem &result) const
virtual bool from_BigComplex (gmp_CC 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 preferred_associate (ring_elem f) const
virtual bool lower_associate_divisor (ring_elem &f, ring_elem g) const
virtual bool promote (const Ring *R, const ring_elem f, ring_elem &result) const =0
virtual bool lift (const Ring *R, const ring_elem f, ring_elem &result) const =0
virtual bool is_unit (const ring_elem f) const =0
virtual bool is_zero (const ring_elem f) const =0
virtual bool is_equal (const ring_elem f, const ring_elem g) const =0
virtual int compare_elems (const ring_elem f, const ring_elem g) const =0
virtual ring_elem copy (const ring_elem f) const =0
virtual void remove (ring_elem &f) const =0
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
virtual ring_elem negate (const ring_elem f) const =0
virtual ring_elem add (const ring_elem f, const ring_elem g) const =0
virtual ring_elem subtract (const ring_elem f, const ring_elem g) const =0
virtual ring_elem mult (const ring_elem f, const ring_elem g) const =0
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 =0
virtual ring_elem divide (const ring_elem f, const ring_elem g) const =0
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 =0
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 =0
virtual ring_elem eval (const RingMap *map, const ring_elem f, int first_var) const =0
virtual void monomial_divisor (const ring_elem a, exponents_t exp) const
virtual ring_elem divide_by_expvector (const_exponents exp, const ring_elem a) const
const_monomial degree (const ring_elem f) const
virtual ring_elem antipode (ring_elem f) 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
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
virtual void lower_content (ring_elem &c, ring_elem g) 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
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 ()

Additional Inherited Members

Public Types inherited from Ring
enum  CoefficientType { COEFF_ZZ , COEFF_QQ , COEFF_BASIC }
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 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 inherited from PolynomialRing
static PolynomialRingcreate_quotient (const PolynomialRing *R, VECTOR(Nterm *) &elems)
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

PolynomialRing subclass whose elements are represented as a single flat Nterm* linked list (no fraction / quotient wrapper).

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

The fast common case — ordinary polynomial rings over a base coefficient ring. numerator(f) is simply f.poly_val, so polynomial operations get to skip the fraction-extraction machinery the PolyRingFraction path needs. cast_to_PolyRingFlat() is overridden to return this so engine code can identify the flat representation through the standard RTTI-free cast pattern.

Definition at line 464 of file polyring.hpp.


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