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

◆ matrix_remainder()

const Matrix * ReducedGB::matrix_remainder ( const Matrix * m)
virtual

Implements GBComputation.

Definition at line 126 of file reducedgb.cpp.

127{
128 if (m->get_ring() != originalR)
129 {
130 ERROR("expected matrix over the same ring");
131 return nullptr;
132 }
133
134 if (m->n_rows() != F->rank())
135 {
136 ERROR("expected matrices to have same number of rows");
137 return nullptr;
138 }
139
140 MatrixConstructor red(m->rows(), m->cols(), m->degree_shift());
141 for (int i = 0; i < m->n_cols(); i++)
142 {
143 ring_elem denom;
144 gbvector *g = originalR->translate_gbvector_from_vec(F, (*m)[i], denom);
145
146 remainder(g, true, denom);
147
148 vec fv = originalR->translate_gbvector_to_vec_denom(F, g, denom);
149 red.set_column(i, fv);
150 R->gbvector_remove(g);
151 }
152 return red.to_matrix();
153}
const_monomial degree_shift() const
Definition matrix.hpp:149
const Ring * get_ring() const
Definition matrix.hpp:134
int n_cols() const
Definition matrix.hpp:147
int n_rows() const
Definition matrix.hpp:146
const FreeModule * rows() const
Definition matrix.hpp:144
const FreeModule * cols() const
Definition matrix.hpp:145
virtual void remainder(POLY &f, bool use_denom, ring_elem &denom)=0
GBRing * R
Definition reducedgb.hpp:64
const PolynomialRing * originalR
Definition reducedgb.hpp:65
const FreeModule * F
Definition reducedgb.hpp:66
const int ERROR
Definition m2-mem.cpp:55

References Matrix::cols(), Matrix::degree_shift(), ERROR, F, Matrix::get_ring(), Matrix, Matrix::n_cols(), Matrix::n_rows(), originalR, R, remainder(), Matrix::rows(), MatrixConstructor::set_column(), and MatrixConstructor::to_matrix().