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

◆ matrix_remainder()

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

Implements GBComputation.

Definition at line 344 of file gauss.cpp.

346{
347 if (m->get_ring() != R)
348 {
349 ERROR("encountered different rings");
350 return nullptr;
351 }
352 if (m->n_rows() != gens->rows()->rank())
353 {
354 ERROR("expected matrices to have same number of rows");
355 return nullptr;
356 }
357 MatrixConstructor mat_remainder(m->rows(), m->cols(), m->degree_shift());
358 for (int i = 0; i < m->n_cols(); i++)
359 {
360 vec f = R->copy_vec(m->elem(i));
361
362 reduce(f);
363 mat_remainder.set_column(i, f);
364 }
365 return mat_remainder.to_matrix();
366}
const Matrix * gens
Definition gauss.hpp:67
void reduce(gm_elem *&p, gm_elem *q)
Definition gauss.cpp:130
const Ring * R
Definition gauss.hpp:66
const_monomial degree_shift() const
Definition matrix.hpp:149
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
int n_rows() const
Definition matrix.hpp:146
const FreeModule * rows() const
Definition matrix.hpp:144
const FreeModule * cols() const
Definition matrix.hpp:145
const int ERROR
Definition m2-mem.cpp:55

References Matrix::cols(), Matrix::degree_shift(), Matrix::elem(), ERROR, gens, Matrix::get_ring(), Matrix, Matrix::n_cols(), Matrix::n_rows(), R, reduce(), Matrix::rows(), MatrixConstructor::set_column(), and MatrixConstructor::to_matrix().