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

◆ elim_vars()

M2_arrayintOrNull Matrix::elim_vars ( int nparts) const

Definition at line 1032 of file matrix.cpp.

1033{
1034 gc_vector<int> keep;
1035 const PolynomialRing *P = get_ring()->cast_to_PolynomialRing();
1036 if (P == nullptr)
1037 {
1038 ERROR("expected polynomial ring");
1039 return nullptr;
1040 }
1041 int nslots = P->getMonoid()->n_slots(nparts);
1042 for (int i = 0; i < n_cols(); i++)
1043 if (P->vec_in_subring(nslots, elem(i))) keep.push_back(i);
1044 return stdvector_to_M2_arrayint<int>(keep);
1045}
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_vars(), ERROR, get_ring(), PolynomialRing::getMonoid(), n_cols(), Monoid::n_slots(), stdvector_to_M2_arrayint(), and Ring::vec_in_subring().

Referenced by elim_vars(), IM2_Matrix_elim_vars(), and minimal_lead_terms().