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

◆ divide_by_var()

Matrix * Matrix::divide_by_var ( int n,
int maxd,
int & maxdivided ) const

Definition at line 1062 of file matrix.cpp.

1063{
1064 const PolynomialRing *P = get_ring()->cast_to_PolynomialRing();
1065 if (P == nullptr)
1066 {
1067 ERROR("expected polynomial ring");
1068 return nullptr;
1069 }
1070 MatrixConstructor mat(rows(), 0);
1071 maxdivided = 0;
1072 for (int i = 0; i < n_cols(); i++)
1073 {
1074 if (elem(i) != nullptr)
1075 {
1076 int lo, hi;
1077 P->vec_degree_of_var(n, elem(i), lo, hi);
1078 if (maxd >= 0 && lo > maxd) lo = maxd;
1079 if (lo > maxdivided) maxdivided = lo;
1080 mat.append(P->vec_divide_by_var(n, lo, elem(i)));
1081 }
1082 }
1083 return mat.to_matrix();
1084}
const Ring * get_ring() const
Definition matrix.hpp:134
ring_elem elem(int i, int j) const
Definition matrix.cpp:307
friend class MatrixConstructor
Definition matrix.hpp:76
int n_cols() const
Definition matrix.hpp:147
const FreeModule * rows() const
Definition matrix.hpp:144
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
vec vec_divide_by_var(int n, int d, const vec v) const
void vec_degree_of_var(int n, const vec v, int &lo, int &hi) const
const int ERROR
Definition m2-mem.cpp:55

References MatrixConstructor::append(), divide_by_var(), elem(), ERROR, get_ring(), Matrix(), MatrixConstructor, n_cols(), rows(), MatrixConstructor::to_matrix(), Ring::vec_degree_of_var(), and Ring::vec_divide_by_var().

Referenced by divide_by_var(), IM2_Matrix_divide_by_var(), and minimal_lead_terms().