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

Engine-side Z/p ring for small primes (p < 32767), using a discrete-log (Zech) representation. More...

#include <ZZp.hpp>

Inheritance diagram for Z_mod:
Ring MutableEngineObject our_gc_cleanup our_new_delete

Public Member Functions

bool isFinitePrimeField () const
Z_modcast_to_Z_mod ()
const Z_modcast_to_Z_mod () const
CoefficientRingZZpget_CoeffRing () const
M2::ARingZZpget_ARing () const
virtual MutableMatrixmakeMutableMatrix (size_t nrows, size_t ncols, bool dense) const
virtual std::pair< bool, long > coerceToLongInteger (ring_elem a) const
long discreteLog (const ring_elem &a) const
virtual void text_out (buffer &o) const
virtual unsigned int computeHashValue (const 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 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 a, const ring_elem b) const
virtual ring_elem copy (const ring_elem f) const
virtual void remove (ring_elem &f) const
int internal_negate (int f) const
int internal_add (int f, int g) const
int internal_subtract (int f, int 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
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 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
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 CoefficientType coefficient_type () const
virtual bool has_associate_divisors () const
virtual const RingZZcast_to_RingZZ () const
virtual RingZZcast_to_RingZZ ()
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 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
virtual ring_elem preferred_associate (ring_elem f) 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 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 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 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 ()

Static Public Member Functions

static Z_modcreate (int p)
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

 Z_mod ()
virtual ~Z_mod ()
bool initialize_Z_mod (int p)
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

int int_to_exp (int a) const
int to_int (int a) const

Private Attributes

int P
int _P1
int _ZERO
int _prim_root
int _minus_one
int_exp_table
int_log_table
CoefficientRingZZpcoeffR
M2::ARingZZparingZZp

Additional Inherited Members

Public Types inherited from Ring
enum  CoefficientType { COEFF_ZZ , COEFF_QQ , COEFF_BASIC }
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 Z/p ring for small primes (p < 32767), using a discrete-log (Zech) representation.

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

Stores non-zero elements as their exponent indices relative to a primitive root, with _ZERO = p-1 reserved as the encoding of

  1. Holds two size-P tables (_exp_table, _log_table) for hop-to-residue / hop-back conversions, and bundles a CoefficientRingZZp and ARingZZp facade so the same ring can appear under either coefficient interface. The int_to_exp / to_int helpers convert between the internal index world and the externally visible residue.

Definition at line 62 of file ZZp.hpp.


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