|
Macaulay2 Engine
|
PolyRingFlat subclass for quotients R / I of a polynomial ring by an ideal. More...
#include <polyquotient.hpp>
Public Member Functions | |
| virtual const PolyRingQuotient * | cast_to_PolyRingQuotient () const |
| virtual PolyRingQuotient * | cast_to_PolyRingQuotient () |
| virtual void | text_out (buffer &o) 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_BigReal (gmp_RR a, ring_elem &result) const |
| virtual bool | from_BigComplex (gmp_CC z, ring_elem &result) const |
| virtual bool | from_Interval (gmp_RRi a, ring_elem &result) const |
| virtual bool | from_ComplexInterval (gmp_CCi a, 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 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 |
| virtual void | lower_content (ring_elem &c, ring_elem g) const |
| virtual ring_elem | content (ring_elem f) const |
| virtual ring_elem | divide_by_given_content (ring_elem f, ring_elem c) 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 ring_elem | copy (const ring_elem f) const |
| virtual void | remove (ring_elem &f) 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 |
| 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 ") 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 int | index_of_var (const ring_elem a) const |
| virtual M2_arrayint | support (const ring_elem a) 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 | 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 engine_RawArrayPairOrNull | list_form (const Ring *coeffR, const ring_elem f) const |
| virtual ring_elem * | get_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 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 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 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 |
| 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 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 |
| const vecterm * | vec_locate_lead_term (const FreeModule *F, vec v) const |
| virtual vec | vec_lead_term (int nparts, const FreeModule *F, vec v) const |
| virtual vec | vec_top_coefficient (const vec v, int &x, int &e) const |
| virtual gbvector * | translate_gbvector_from_ringelem (ring_elem coeff) const |
| virtual gbvector * | translate_gbvector_from_vec (const FreeModule *F, const vec v, ring_elem &result_denominator) const |
| virtual vec | translate_gbvector_to_vec (const FreeModule *F, const gbvector *v) const |
| virtual vec | translate_gbvector_to_vec_denom (const FreeModule *F, const gbvector *v, const ring_elem denom) const |
| Public Member Functions inherited from PolyRingFlat | |
| virtual Nterm * | numerator (ring_elem f) const |
| virtual const PolyRingFlat * | cast_to_PolyRingFlat () const |
| virtual PolyRingFlat * | cast_to_PolyRingFlat () |
| Public Member Functions inherited from PolynomialRing | |
| virtual void | clear () |
| Matrix * | getPresentation () 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 |
| QRingInfo * | get_quotient_info () const |
| const Ring * | getCoefficientRing () const |
| MonomialTable * | get_quotient_MonomialTable () const |
| const MonomialIdeal * | get_quotient_monomials () const |
| const MonomialTableZZ * | get_quotient_MonomialTableZZ () const |
| int | n_quotients () const |
| Nterm * | quotient_element (int i) const |
| const gbvector * | quotient_gbvector (int i) const |
| const MonomialIdeal * | make_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 SkewMultiplication & | getSkewInfo () 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 PolyRing * | getNumeratorRing () const |
| virtual const PolynomialRing * | getAmbientRing () const |
| virtual const Ring * | getDenominatorRing () const |
| virtual GBRing * | get_gb_ring () const |
| virtual const Ring * | getCoefficients () const |
| virtual const Monoid * | getMonoid () const |
| virtual bool | is_fraction_poly_ring () const |
| virtual int | n_fraction_vars () const |
| virtual const PolynomialRing * | cast_to_PolynomialRing () const |
| virtual PolynomialRing * | cast_to_PolynomialRing () |
| SumCollector * | make_SumCollector () const |
| virtual unsigned int | computeHashValue (const ring_elem a) const |
| int | n_terms (const ring_elem f) const |
| Public Member Functions inherited from Ring | |
| virtual | ~Ring () |
| const CoefficientRingR * | getCoefficientRingR () const |
| long | characteristic () const |
| const Monoid * | degree_monoid () const |
| const PolynomialRing * | get_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 RingZZ * | cast_to_RingZZ () const |
| virtual RingZZ * | cast_to_RingZZ () |
| virtual const Z_mod * | cast_to_Z_mod () const |
| virtual Z_mod * | cast_to_Z_mod () |
| virtual const GF * | cast_to_GF () const |
| virtual GF * | cast_to_GF () |
| virtual const Tower * | cast_to_Tower () const |
| virtual Tower * | cast_to_Tower () |
| virtual const PolyRing * | cast_to_PolyRing () const |
| virtual PolyRing * | cast_to_PolyRing () |
| virtual const PolyQQ * | cast_to_PolyQQ () const |
| virtual PolyQQ * | cast_to_PolyQQ () |
| virtual const FractionField * | cast_to_FractionField () const |
| virtual FractionField * | cast_to_FractionField () |
| virtual const LocalRing * | cast_to_LocalRing () const |
| virtual LocalRing * | cast_to_LocalRing () |
| virtual const M2FreeAlgebra * | cast_to_M2FreeAlgebra () const |
| virtual M2FreeAlgebra * | cast_to_M2FreeAlgebra () |
| virtual const M2FreeAlgebraQuotient * | cast_to_M2FreeAlgebraQuotient () const |
| virtual M2FreeAlgebraQuotient * | cast_to_M2FreeAlgebraQuotient () |
| virtual const M2FreeAlgebraOrQuotient * | cast_to_M2FreeAlgebraOrQuotient () const |
| virtual M2FreeAlgebraOrQuotient * | cast_to_M2FreeAlgebraOrQuotient () |
| virtual const SchurRing * | cast_to_SchurRing () const |
| virtual SchurRing * | cast_to_SchurRing () |
| virtual const SchurRing2 * | cast_to_SchurRing2 () const |
| virtual SchurRing2 * | cast_to_SchurRing2 () |
| virtual const SchurSnRing * | cast_to_SchurSnRing () const |
| virtual SchurSnRing * | cast_to_SchurSnRing () |
| virtual const SkewPolynomialRing * | cast_to_SkewPolynomialRing () const |
| virtual SkewPolynomialRing * | cast_to_SkewPolynomialRing () |
| virtual const SolvableAlgebra * | cast_to_SolvableAlgebra () const |
| virtual SolvableAlgebra * | cast_to_SolvableAlgebra () |
| virtual const WeylAlgebra * | cast_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 CCC * | cast_to_CCC () |
| virtual const CCC * | cast_to_CCC () const |
| virtual const RingElement * | getMinimalPolynomial () const |
| virtual const RingElement * | getGenerator () const |
| virtual long | discreteLog (const ring_elem &a) const |
| virtual const RingElement * | getRepresentation (const ring_elem &a) const |
| virtual MutableMatrix * | makeMutableMatrix (size_t nrows, size_t ncols, bool dense) const |
| virtual FreeModule * | make_FreeModule () const |
| virtual FreeModule * | make_Schreyer_FreeModule () const |
| virtual FreeModule * | make_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 |
| 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 ring_elem | content (ring_elem f, ring_elem g) 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 () |
Protected Member Functions | |
| void | normal_form (ring_elem &f) const |
| virtual | ~PolyRingQuotient () |
| PolyRingQuotient () | |
| GBComputation * | make_gb (const ring_elem g) const |
| ring_elem | ann (const ring_elem a, const ring_elem b) 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 ARing * | getARing () 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 |
Friends | |
| class | PolynomialRing |
PolyRingFlat subclass for quotients R / I of a polynomial ring by an ideal.
Owns the defining ideal data through the inherited qinfo_ (QRingInfo*, see qring.hpp) and adds normal_form as the thin forwarder onto it: every arithmetic result is reduced modulo the quotient ideal before being returned. The factory (make_gb plus the front-end-side PolynomialRing::create paths) builds the GB of I once and reuses it for every subsequent reduction.
Definition at line 69 of file polyquotient.hpp.