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

Engine-side ring of integers, backed by GMP mpz_ptr elements. More...

#include <ZZ.hpp>

Inheritance diagram for RingZZ:
Ring MutableEngineObject our_gc_cleanup our_new_delete

Public Types

typedef mpz_ptr element_type
Public Types inherited from Ring
enum  CoefficientType { COEFF_ZZ , COEFF_QQ , COEFF_BASIC }

Public Member Functions

 RingZZ ()
bool initialize_ZZ (const PolynomialRing *deg_ring)
RingZZcast_to_RingZZ ()
const RingZZcast_to_RingZZ () const
M2::ARingZZGMPget_ARing () const
virtual MutableMatrixmakeMutableMatrix (size_t nrows, size_t ncols, bool dense) const
virtual bool is_ZZ () const
virtual CoefficientType coefficient_type () const
virtual void text_out (buffer &o) const
virtual unsigned int computeHashValue (const ring_elem a) const
virtual std::pair< bool, long > coerceToLongInteger (ring_elem a) 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 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 bool lower_associate_divisor (ring_elem &f, ring_elem g) const
virtual void lower_content (ring_elem &c, ring_elem g) const
int is_positive (const ring_elem a) 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 &quot) const
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 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
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 is_basic_ring () const
virtual bool isFinitePrimeField () const
virtual bool isGaloisField () 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
virtual bool is_fraction_poly_ring () const
virtual bool is_poly_ring () const
virtual bool is_commutative_ring () const
virtual bool is_quotient_ring () const
virtual bool is_weyl_algebra () const
virtual bool is_skew_commutative_ring () const
virtual bool is_solvable_algebra () const
virtual bool is_graded () 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 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 PolynomialRingcast_to_PolynomialRing () const
virtual PolynomialRingcast_to_PolynomialRing ()
virtual const PolyRingcast_to_PolyRing () const
virtual PolyRingcast_to_PolyRing ()
virtual const PolyQQ * cast_to_PolyQQ () const
virtual PolyQQ * cast_to_PolyQQ ()
virtual const PolyRingFlatcast_to_PolyRingFlat () const
virtual PolyRingFlatcast_to_PolyRingFlat ()
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 FreeModulemake_FreeModule () const
virtual FreeModulemake_Schreyer_FreeModule () const
virtual FreeModulemake_FreeModule (int n) const
virtual SumCollectormake_SumCollector () const
ring_elem one () const
ring_elem minus_one () const
ring_elem zero () const
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 var (int v) 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 int index_of_var (const ring_elem a) const
virtual M2_arrayint support (const 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
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 bool is_homogeneous (const ring_elem f) const
const_monomial degree (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 antipode (ring_elem f) const
virtual unsigned long get_precision () 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
virtual vec vec_lead_term (int nparts, const FreeModule *F, 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) 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 ()

Static Public Member Functions

static unsigned int mod_ui (mpz_srcptr n, unsigned int p)
static std::pair< bool, intget_si (mpz_srcptr n)
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

virtual ~RingZZ ()
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

Private Member Functions

mpz_ptr new_elem () const

Private Attributes

M2::ARingZZGMPcoeffR

Friends

class M2::ARingZZGMP

Additional Inherited Members

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

Engine-side ring of integers, backed by GMP mpz_ptr elements.

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

Each non-zero element is a heap-allocated mpz_struct handed out by new_elem(); coeffR is the matching ARingZZGMP facade used wherever the aring-shaped coefficient interface is expected. The class itself only exposes the Ring-level surface — add, mult, divide, gcd, etc. — with bodies that delegate to GMP. Constructed once at startup via Ring::initZZ().

Definition at line 76 of file ZZ.hpp.


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