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

◆ matrix_remainder()

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

Implements GBComputation.

Definition at line 1070 of file gb-homog2.cpp.

1071{
1072 if (m->get_ring() != originalR)
1073 {
1074 ERROR("expected matrix over the same ring");
1075 return nullptr;
1076 }
1077
1078 if (m->n_rows() != _F->rank())
1079 {
1080 ERROR("expected matrices to have same number of rows");
1081 return nullptr;
1082 }
1084 MatrixConstructor red(m->rows(), m->cols(), m->degree_shift());
1085 for (int i = 0; i < m->n_cols(); i++)
1086 {
1087 ring_elem denom;
1088 gbvector *f = originalR->translate_gbvector_from_vec(_F, (*m)[i], denom);
1089 gbvector *fsyz = _GR->gbvector_zero();
1090
1091 gb_reduce(f, fsyz);
1092
1093 vec fv = originalR->translate_gbvector_to_vec_denom(_F, f, denom);
1094 red.set_column(i, fv);
1095 }
1096 return red.to_matrix();
1097}
void gb_reduce(gbvector *&f, gbvector *&fsyz)
void start_computation()
const FreeModule * _F
Definition gb-homog2.hpp:73
GBRing * _GR
Definition gb-homog2.hpp:68
const PolynomialRing * originalR
Definition gb-homog2.hpp:67
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
const int ERROR
Definition m2-mem.cpp:55

References _F, _GR, Matrix::cols(), Matrix::degree_shift(), ERROR, gb_reduce(), Matrix::get_ring(), Matrix, Matrix::n_cols(), Matrix::n_rows(), originalR, Matrix::rows(), MatrixConstructor::set_column(), start_computation(), and MatrixConstructor::to_matrix().