Macaulay2 Engine
Loading...
Searching...
No Matches
M2::ARingZZp Class Reference

aring-style adapter for Z/p using a discrete-log (Zech) representation: every non-zero residue is its index relative to a primitive generator a. More...

#include <aring-zzp.hpp>

Inheritance diagram for M2::ARingZZp:
M2::SimpleARing< ARingZZp > M2::RingInterface our_new_delete

Public Types

typedef Z_mod ring_type
typedef int ElementType
typedef int elem
typedef std::vector< elemElementContainerType

Public Member Functions

 ARingZZp (size_t prime)
 ~ARingZZp ()
size_t characteristic () const
size_t cardinality () const
void text_out (buffer &o) const
unsigned int computeHashValue (const elem &a) const
void init_set (elem &result, elem a) const
void set (elem &result, elem a) const
bool is_unit (ElementType f) const
bool is_zero (ElementType f) const
bool is_equal (ElementType f, ElementType g) const
int compare_elems (ElementType f, ElementType g) const
void to_ring_elem (ring_elem &result, const ElementType &a) const
void from_ring_elem (ElementType &result, const ring_elem &a) const
ElementType from_ring_elem_const (const ring_elem &a) const
void init (elem &result) const
void set_zero (elem &result) const
void set_from_long (elem &result, long a) const
void set_var (elem &result, int v) const
void set_from_mpz (elem &result, mpz_srcptr a) const
bool set_from_mpq (elem &result, mpq_srcptr a) const
bool set_from_BigReal (elem &result, gmp_RR a) const
void negate (elem &result, elem a) const
void invert (elem &result, elem a) const
void add (elem &result, elem a, elem b) const
void subtract (elem &result, elem a, elem b) const
int modulus_add (int a, int b, int p) const
int modulus_sub (int a, int b, int p) const
void subtract_multiple (elem &result, elem a, elem b) const
void mult (elem &result, elem a, elem b) const
void divide (elem &result, elem a, elem b) const
void power (elem &result, elem a, int n) const
void power_mpz (elem &result, elem a, mpz_srcptr n) const
void swap (ElementType &a, ElementType &b) const
void elem_text_out (buffer &o, ElementType a, bool p_one=true, bool p_plus=false, bool p_parens=false) const
void syzygy (ElementType a, ElementType b, ElementType &x, ElementType &y) const
void random (ElementType &result) const
void eval (const RingMap *map, const elem f, int first_var, ring_elem &result) const
long coerceToLongInteger (const elem &f) const
long coerceToNonnegativeLongInteger (const elem &f) const

Static Public Member Functions

static int findPrimitiveRoot (int P)
static void clear (elem &result)
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)

Static Public Attributes

static const RingID ringID = ring_ZZp

Private Member Functions

void initialize_tables ()

Private Attributes

size_t charac
int p
int p1
int minus_one
int prim_root
intlog_table
intexp_table

Detailed Description

aring-style adapter for Z/p using a discrete-log (Zech) representation: every non-zero residue is its index relative to a primitive generator a.

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

Encoding: 0 means 0, p-1 means 1, and 1..p-2 are the exponents of a^n mod p covering residues 2..p-1. Multiplication / division collapse to integer add / sub mod p-1 with no table hit; addition uses precomputed exp / log tables. ringID = ring_ZZp. The aring twin of CoefficientRingZZp.

Definition at line 66 of file aring-zzp.hpp.


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