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

◆ matrix_remainder()

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

Implements GBComputation.

Definition at line 461 of file hermite.cpp.

463{
464 if (m->get_ring() != globalZZ)
465 {
466 ERROR("expected matrix over ZZ");
467 return nullptr;
468 }
469 if (m->n_rows() != gens->rows()->rank())
470 {
471 ERROR("expected matrices to have same number of rows");
472 return nullptr;
473 }
474 MatrixConstructor mat_remainder(m->rows(), m->cols(), m->degree_shift());
475 for (int i = 0; i < m->n_cols(); i++)
476 {
477 vec f = globalZZ->copy_vec(m->elem(i));
478
479 gb_reduce(f);
480 mat_remainder.set_column(i, f);
481 }
482 return mat_remainder.to_matrix();
483}
const Matrix * gens
Definition hermite.hpp:61
void gb_reduce(vec &f) const
Definition hermite.cpp:387
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
vec copy_vec(const vecterm *v) const
Definition ring-vecs.cpp:91
RingZZ * globalZZ
Definition relem.cpp:13
const int ERROR
Definition m2-mem.cpp:55

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