105 o <<
"Quotient ring of ";
183 else if (
M_->numNonTermOrderVariables() == 0)
195 rem =
numerR_->remainderAndQuotient(f, g, d);
215 for (
int i = 0; i <
n_vars(); i++) weights->array[i] = 1;
227 G->set_stop_conditions(
false,
237 G->start_computation();
244 if (
K_->get_precision() > 0)
247 "polynomial division not yet implemented for RR or CC coefficients");
256 const Matrix *mrem =
G->matrix_remainder(mf);
267 if (
K_->get_precision() > 0)
270 "polynomial division not yet implemented for RR or CC coefficients");
279 const Matrix *mrem, *mquot;
280 G->matrix_lift(mf, &mrem, &mquot);
294 if (
K_->get_precision() > 0)
297 "polynomial division not yet implemented for RR or CC coefficients");
307 const Matrix *mrem, *mquot;
308 G->matrix_lift(mf, &mrem, &mquot);
309 quot = mquot->
elem(0, 0);
329 const Matrix *mrem, *mquot;
330 G->matrix_lift(ma, &mrem, &mquot);
376 answer =
mult(c, answer);
391 for (
int i = 0; i <
n_vars(); i++) weights->array[i] = 1;
403 G->set_stop_conditions(
false,
412 G->start_computation();
413 const Matrix *
s =
G->get_syzygies();
436 return numerR_->PolyRing::eval(map, f, first_var);
Append-only GC-backed byte buffer used throughout the engine for text output.
static GBComputation * choose_gb(const Matrix *m, M2_bool collect_syz, int n_rows_to_keep, M2_arrayint gb_weights, M2_bool use_max_degree, int max_degree, int algorithm, int strategy, int numThreads, int max_reduction_count=10)
base class for Groebner basis computations.
ring_elem elem(int i, int j) const
void set_entry(int r, int c, ring_elem a)
Mutable builder used to assemble an immutable Matrix one column (or one term) at a time.
virtual ring_elem divide(const ring_elem f, const ring_elem g) const
friend class PolynomialRing
virtual void text_out(buffer &o) const
virtual ring_elem from_long(long n) const
ring_elem ann(const ring_elem a, const ring_elem b) const
virtual ~PolyRingQuotient()
virtual ring_elem quotient(const ring_elem f, const ring_elem g) const
GBComputation * make_gb(const ring_elem g) const
virtual ring_elem invert(const ring_elem f) const
virtual ring_elem random() const
virtual ring_elem remainder(const ring_elem f, const ring_elem g) const
virtual ring_elem copy(const ring_elem f) 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 bool promote(const Ring *R, const ring_elem f, ring_elem &result) const
virtual ring_elem remainderAndQuotient(const ring_elem f, const ring_elem g, ring_elem ") const
virtual ring_elem eval(const RingMap *map, const ring_elem f, int first_var) const
virtual void syzygy(const ring_elem a, const ring_elem b, ring_elem &x, ring_elem &y) 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 bool lift(const Ring *R, const ring_elem f, ring_elem &result) const
void normal_form(ring_elem &f) const
virtual ring_elem preferred_associate(ring_elem f) const
virtual bool is_zero(const ring_elem f) const
virtual bool is_unit(const ring_elem f) const
virtual ring_elem mult(const ring_elem f, const ring_elem g) const
virtual const PolynomialRing * getAmbientRing() const
Nterm * quotient_element(int i) const
void set_non_unit(ring_elem zero_div) const
virtual FreeModule * make_FreeModule() 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.
ring_elem get_value() const
static RingElement * make_raw(const Ring *R, ring_elem f)
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
bool is_equal(const RingMap *phi) const
Engine-side ring homomorphism: stores, for each source-ring variable, the target-ring element it maps...
GBComputation — abstract base of every Groebner-basis algorithm in the engine.
void INTERNAL_ERROR(const char *s,...)
Engine error-reporting primitives: ERROR, INTERNAL_ERROR, error, error_message.
const RingElement * rawExtendedGCDRingElement(const RingElement *f, const RingElement *g, const RingElement **A, const RingElement **B)
Engine-boundary C API for polynomial GCD, factorisation, and root finding.
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)
MatrixConstructor — the mutable builder that produces an immutable Matrix.
Matrix — the engine's immutable homomorphism F -> G between free modules.
Monoid — variable count, naming, grading, and monomial order of a polynomial ring.
PolyRingQuotient — polynomial ring modulo an ideal whose Groebner basis is known.
PolynomialRing — abstract polynomial-ring base, the engine's most-reused class.
RingElement — tagged (Ring*, ring_elem) pair, the engine's universal element type.
Ring — the legacy abstract base class for every coefficient and polynomial ring.