Macaulay2 Engine
Loading...
Searching...
No Matches

◆ rawMatrixRatConversion()

const Matrix * rawMatrixRatConversion ( const Matrix * f,
mpz_srcptr m,
const Ring * RQ )

Definition at line 135 of file cra.cpp.

136{
137 const Ring *Rf = f->get_ring();
138 const PolyRing *P = Rf->cast_to_PolyRing();
139 const PolyRing *PQ = RQ->cast_to_PolyRing();
140
141 if (P == nullptr)
142 {
143 ERROR("expected polynomial ring over ZZ");
144 return nullptr;
145 }
146
147 const FreeModule *F = f->rows();
148 const FreeModule *G = f->cols();
149 const FreeModule *FQ = PQ->make_FreeModule(F->rank());
150 const FreeModule *GQ = PQ->make_FreeModule(G->rank());
151
152 const int *deg;
153
154 deg = Rf->degree_monoid()->make_one();
155
156 MatrixConstructor mat(FQ, GQ, deg);
157 for (int i = 0; i < f->n_cols(); i++)
158 {
159 vec u = ChineseRemainder::ratConversion(f->elem(i), m, PQ);
160 mat.set_column(i, u);
161 }
162 return mat.to_matrix();
163}
static bool ratConversion(mpz_srcptr a, mpz_srcptr m, mpq_t result)
Definition cra.cpp:300
int rank() const
Definition freemod.hpp:105
Engine-side free module R^n over a Ring.
Definition freemod.hpp:66
const Ring * get_ring() const
Definition matrix.hpp:134
ring_elem elem(int i, int j) const
Definition matrix.cpp:307
int n_cols() const
Definition matrix.hpp:147
const FreeModule * rows() const
Definition matrix.hpp:144
const FreeModule * cols() const
Definition matrix.hpp:145
Mutable builder used to assemble an immutable Matrix one column (or one term) at a time.
monomial make_one() const
Definition monoid.cpp:455
Concrete PolyRingFlat subclass implementing ordinary commutative polynomial rings K[x_1,...
Definition poly.hpp:64
virtual FreeModule * make_FreeModule() const
Definition ring.cpp:53
virtual const PolyRing * cast_to_PolyRing() const
Definition ring.hpp:245
const Monoid * degree_monoid() const
Definition ring.cpp:13
xxx xxx xxx
Definition ring.hpp:102
const int ERROR
Definition m2-mem.cpp:55
tbb::flow::graph G

References Ring::cast_to_PolyRing(), Matrix::cols(), Ring::degree_monoid(), Matrix::elem(), ERROR, G, Matrix::get_ring(), Ring::make_FreeModule(), Monoid::make_one(), Matrix, Matrix::n_cols(), FreeModule::rank(), ChineseRemainder::ratConversion(), Matrix::rows(), MatrixConstructor::set_column(), and MatrixConstructor::to_matrix().