26 ERROR(
"expected same ring");
35 ERROR(
"expected ZZ, or polynomial ring over ZZ");
38 ERROR(
"not implemented yet");
53 ERROR(
"expected coefficient ring to be ZZ");
57 ERROR(
"not written yet");
66 ERROR(
"matrices have different base rings");
72 ERROR(
"matrices have different shapes");
86 mpz_init(result_coeff);
107 ERROR(
"expected ZZ, or polynomial ring over ZZ");
110 ERROR(
"not implemented yet");
124 ERROR(
"expected coefficient ring to be ZZ");
128 ERROR(
"not written yet");
143 ERROR(
"expected polynomial ring over ZZ");
157 for (
int i = 0; i < f->
n_cols(); i++)
static bool computeMultipliers(mpz_srcptr m, mpz_srcptr n, mpz_t result_um, mpz_t result_vn, mpz_t result_mn)
static bool ratConversion(mpz_srcptr a, mpz_srcptr m, mpq_t result)
static ring_elem CRA(const PolyRing *R, const ring_elem f, const ring_elem g, mpz_srcptr um, mpz_srcptr vn, mpz_srcptr mn)
Engine-side free module R^n over a Ring.
const Ring * get_ring() const
ring_elem elem(int i, int j) const
const FreeModule * rows() const
const FreeModule * cols() const
void set_column(int c, vec v)
Mutable builder used to assemble an immutable Matrix one column (or one term) at a time.
monomial make_one() const
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
const Ring * getCoefficientRing() const
virtual bool is_ZZ() const
virtual FreeModule * make_FreeModule() const
virtual const PolyRing * cast_to_PolyRing() const
const Monoid * degree_monoid() const
ring_elem get_value() const
static RingElement * make_raw(const Ring *R, ring_elem f)
const Ring * get_ring() const
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
Engine-boundary C API for Chinese-remainder lifting and rational reconstruction.
ChineseRemainder — CRT lifting and rational reconstruction primitives.
Engine error-reporting primitives: ERROR, INTERNAL_ERROR, error, error_message.
FreeModule — finite-rank free module R^n, the type-level anchor for every Matrix.
const RingElement * rawRingElementCRA(const RingElement *f, const RingElement *g, mpz_srcptr m, mpz_srcptr n)
const RingElement * rawRingElementRatConversion(const RingElement *f, mpz_srcptr m, const Ring *RQ)
const Matrix * rawMatrixRatConversion(const Matrix *f, mpz_srcptr m, const Ring *RQ)
const Matrix * rawMatrixCRA(const Matrix *f, const Matrix *g, mpz_srcptr m, mpz_srcptr n)
VALGRIND_MAKE_MEM_DEFINED & result(result)
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.
Concrete commutative PolyRing — standard polynomial ring inheriting from PolyRingFlat.
RingElement — tagged (Ring*, ring_elem) pair, the engine's universal element type.
Ring — the legacy abstract base class for every coefficient and polynomial ring.
ring_elem — the universal value type carried by every Ring* in the engine.