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

◆ matrix_lift()

M2_bool GB_comp::matrix_lift ( const Matrix * m,
const Matrix ** result_remainder,
const Matrix ** result_quotient )
virtual

Implements GBComputation.

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

1102{
1103 if (m->get_ring() != originalR)
1104 {
1105 ERROR("expected matrix over the same ring");
1106 *result_remainder = nullptr;
1107 *result_quotient = nullptr;
1108 return false;
1109 }
1110 if (m->n_rows() != _F->rank())
1111 {
1112 ERROR("expected matrices to have same number of rows");
1113 *result_remainder = nullptr;
1114 *result_quotient = nullptr;
1115 return false;
1116 }
1118 MatrixConstructor mat_remainder(m->rows(), m->cols(), m->degree_shift());
1119 MatrixConstructor mat_quotient(_Fsyz, 0);
1120 bool all_zeroes = true;
1121 for (int i = 0; i < m->n_cols(); i++)
1122 {
1123 ring_elem denom;
1124 gbvector *f = originalR->translate_gbvector_from_vec(_F, (*m)[i], denom);
1125 gbvector *fsyz = _GR->gbvector_zero();
1126
1127 gb_reduce(f, fsyz);
1128 if (f != nullptr) all_zeroes = false;
1129
1130 vec fv = originalR->translate_gbvector_to_vec_denom(_F, f, denom);
1131 _K->negate_to(denom);
1132 vec fsyzv =
1133 originalR->translate_gbvector_to_vec_denom(_Fsyz, fsyz, denom);
1134 mat_remainder.set_column(i, fv);
1135 mat_quotient.append(fsyzv);
1136 }
1137 *result_remainder = mat_remainder.to_matrix();
1138 *result_quotient = mat_quotient.to_matrix();
1139 return all_zeroes;
1140}
void gb_reduce(gbvector *&f, gbvector *&fsyz)
const Ring * _K
Definition gb-homog2.hpp:71
void start_computation()
const FreeModule * _Fsyz
Definition gb-homog2.hpp:74
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, _Fsyz, _GR, _K, MatrixConstructor::append(), 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().