71 M2_ArrayString names0,
102 int first_var)
const;
127 bool p_parens =
false)
const;
Single-level view of a tower-polynomial ring: a DPoly plus a fixed working level and a Tower-flavoure...
Abstract base for the engine's polynomial-ring hierarchy.
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
ring_elem gcd(const ring_elem f, const ring_elem g) const
ring_elem lowerP(const ring_elem f) const
virtual ring_elem invert(const ring_elem f) const
ring_elem differentiate(int var, const ring_elem f) const
ring_elem power_mod(const ring_elem f, mpz_srcptr n, const ring_elem g) const
ring_elem translate(const PolynomialRing *R, ring_elem fR) const
virtual void text_out(buffer &o) const
virtual ring_elem copy(const ring_elem f) const
virtual unsigned int computeHashValue(const ring_elem a) const
virtual bool is_equal(const ring_elem f, const ring_elem g) const
virtual bool lift(const Ring *R, const ring_elem f, ring_elem &result) const
virtual int index_of_var(const ring_elem a) const
virtual ring_elem from_int(mpz_srcptr n) const
virtual ring_elem subtract(const ring_elem f, const ring_elem g) const
virtual bool is_zero(const ring_elem f) const
virtual M2_arrayint support(const ring_elem a) const
virtual ring_elem negate(const ring_elem f) const
int degreeInVariable(int var, const ring_elem f) const
virtual void remove(ring_elem &f) const
virtual bool from_rational(mpq_srcptr q, ring_elem &result) const
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
virtual ring_elem random() const
virtual ring_elem remainder(const ring_elem f, const ring_elem g) const
bool initialize(long charac0, M2_ArrayString names0, const VECTOR(ring_elem) &extensions)
virtual ring_elem from_long(long n) const
const Tower * cast_to_Tower() const
static Tower * create(int charac, M2_ArrayString names)
virtual ring_elem var(int v) const
virtual int compare_elems(const ring_elem f, const ring_elem g) const
virtual bool promote(const Ring *R, const ring_elem f, ring_elem &result) const
virtual void syzygy(const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) const
virtual ring_elem add(const ring_elem f, const ring_elem g) const
virtual ring_elem divide(const ring_elem f, const ring_elem g) const
virtual bool is_unit(const ring_elem f) 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
int extension_degree(int nvars) const
virtual ring_elem eval(const RingMap *map, const ring_elem f, int first_var) const
friend class TowerEvaluator
ring_elem gcd_extended(const ring_elem f, const ring_elem g, ring_elem &u, ring_elem &v) const
Ring subclass for tower polynomial rings (Z/p)[x_0][x_1]...[x_{n-1}] modulo a chain of algebraic exte...
VALGRIND_MAKE_MEM_DEFINED & result(result)
RingElement — tagged (Ring*, ring_elem) pair, the engine's universal element type.
const RingElement * towerExtendedGCD(const RingElement *F, const RingElement *G, const RingElement **A, const RingElement **B)
const RingElement * towerGCD(const RingElement *F, const RingElement *G)