55#ifdef HAVE_FLINT_RAND_INIT
56#define FLINT_RAND_INIT(x) flint_rand_init(x)
57#define FLINT_RAND_CLEAR(x) flint_rand_clear(x)
59#define FLINT_RAND_INIT(x) flint_randinit(x)
60#define FLINT_RAND_CLEAR(x) flint_randclear(x)
115template <
class ElementType>
130 operator const ElementType &()
const {
return mValue; }
131 operator ElementType &() {
return mValue; }
145template <
class ARing>
180 std::unique_ptr<ElementType[]>
mData;
186 for (
size_t i = 0; i < size; i++) ring.init(
mData[i]);
190 for (
size_t i = 0; i <
mSize; i++) ARing::clear(
mData[i]);
225 return static_cast<unsigned int>(a);
Append-only GC-backed byte buffer used throughout the engine for text output.
void subtract_multiple(elem &result, const elem a, const elem b) const
unsigned int computeHashValue(const elem &a) const
static void clear(elem &result)
void set_zero(elem &result) const
void mult(elem &result, const elem a, const elem b) const
void set_from_long(elem &result, long a) const
M2_arrayint getModPolynomialCoeffs() const
void lift_to_original_ring(ring_elem &result, const ElementType &f) const
void set_var(elem &result, int v) const
void copy(elem &result, const elem a) const
const PolynomialRing * mOriginalRing
void text_out(buffer &o) const
bool is_unit(const ElementType f) const
bool promote(const Ring *Rf, const ring_elem f, ElementType &result) const
void power(elem &result, const elem a, const int n) const
long coerceToLongInteger(ElementType a) const
void add(elem &result, const elem a, const elem b) const
void set(elem &result, elem a) const
void init(elem &result) const
void eval(const RingMap *map, const elem f, int first_var, ring_elem &result) const
bool is_zero(const ElementType f) const
int compare_elems(const ElementType f, const ElementType g) const
void subtract(ElementType &result, const ElementType a, const ElementType b) const
void elem_text_out(buffer &o, const ElementType a, bool p_one, bool p_plus, bool p_parens) const
void syzygy(const ElementType a, const ElementType b, ElementType &x, ElementType &y) const
void power_mpz(elem &result, const elem a, mpz_srcptr n) const
int characteristic() const
M2_arrayint getGeneratorCoeffs() const
void swap(ElementType &a, ElementType &b) const
void from_ring_elem(ElementType &result, const ring_elem &a) const
bool set_from_mpq(elem &result, mpq_srcptr a) const
void init_set(elem &result, elem a) const
bool is_equal(const ElementType f, const ElementType g) const
void to_ring_elem(ring_elem &result, const ElementType &a) const
void getGenerator(elem &result) const
bool lift(const Ring *Rg, const ElementType f, ring_elem &result) const
bool set_from_BigReal(elem &result, gmp_RR a) const
void divide(elem &result, const elem a, const elem b) const
test doc
std::vector< elem > ElementContainerType
void random(ElementType &result) const
void set_from_mpz(elem &result, mpz_srcptr a) const
void negate(elem &result, const elem a) const
const PolynomialRing & originalRing() const
M2_arrayint fieldElementToM2Array(ElementType el) const
void invert(elem &result, const elem a) const
Placeholder aring used as a default / fallback for code paths that need an ARing-shaped object but no...
const ElementType & value() const
ElementImpl(const ElementType &value)
~ElementImpl() noexcept=default
ElementImpl(ElementType &&value)
ElementImpl(ElementImpl &&other) noexcept=default
ElementImpl & operator=(ElementImpl &&other) noexcept=default
ElementImpl & operator=(const ElementImpl &other) noexcept=default
ElementImpl(const ElementImpl &other) noexcept=default
Element(const ARing &ring, const ElementType &other)
ElementImpl< ElementType > Impl
ARing::ElementType ElementType
Element(const ARing &ring)
ElementType & operator[](size_t idx)
ARing::ElementType ElementType
ElementArray(const ARing &ring, size_t size)
const ElementType * data() const
const ElementType & operator[](size_t idx) const
std::unique_ptr< ElementType[]> mData
A base class for simple ARings.
Abstract base for the engine's polynomial-ring hierarchy.
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
@ ring_old
refers to all rings which are not ConcreteRing's.
VALGRIND_MAKE_MEM_DEFINED & result(result)
ring_elem — the universal value type carried by every Ring* in the engine.