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

◆ elim_keep()

M2_arrayintOrNull Matrix::elim_keep ( int nparts) const

Definition at line 1047 of file matrix.cpp.

1048{
1049 gc_vector<int> keep;
1050 const PolynomialRing *P = get_ring()->cast_to_PolynomialRing();
1051 if (P == nullptr)
1052 {
1053 ERROR("expected polynomial ring");
1054 return nullptr;
1055 }
1056 int nslots = P->getMonoid()->n_slots(nparts);
1057 for (int i = 0; i < n_cols(); i++)
1058 if (!P->vec_in_subring(nslots, elem(i))) keep.push_back(i);
1059 return stdvector_to_M2_arrayint<int>(keep);
1060}
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_slots(int nparts) const
Definition monoid.cpp:386
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
int vec_in_subring(int n, const vec v) const
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
const int ERROR
Definition m2-mem.cpp:55
M2_arrayint stdvector_to_M2_arrayint(const std::vector< T > &v)
Definition util.hpp:79

References elem(), elim_keep(), ERROR, get_ring(), PolynomialRing::getMonoid(), n_cols(), Monoid::n_slots(), stdvector_to_M2_arrayint(), and Ring::vec_in_subring().

Referenced by elim_keep(), IM2_Matrix_keep_vars(), and minimal_lead_terms().