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

◆ make() [3/3]

const Matrix * Matrix::make ( const MonomialIdeal * mi)
static

Definition at line 281 of file matrix.cpp.

282{
283 const PolynomialRing *P = mi->get_ring()->cast_to_PolynomialRing();
284 if (P == nullptr)
285 {
286 ERROR("expected a matrix over a polynomial ring");
287 return nullptr;
288 }
289 const Monoid *M = P->getMonoid();
290 monomial mon = M->make_one();
291
292 MatrixConstructor mat(P->make_FreeModule(1), mi->size());
293 int next = 0;
294 for (auto i = mi->beginAtLast(); i != mi->end(); --i) // TODO MES: should go from last() via --i to end()...
295 {
296 M->from_varpower(i->monom().data(), mon);
297 ring_elem f =
299 mat.set_entry(0, next++, f);
300 }
301 M->remove(mon);
302
303 mat.compute_column_degrees();
304 return mat.to_matrix();
305}
friend class MatrixConstructor
Definition matrix.hpp:76
void from_varpower(const_varpower vp, monomial result) const
Definition monoid.cpp:728
monomial make_one() const
Definition monoid.cpp:455
void remove(monomial d) const
Definition monoid.cpp:462
Iterator beginAtLast() const
Definition monideal.hpp:278
int size() const
Definition monideal.hpp:186
Iterator end() const
Definition monideal.hpp:279
const PolynomialRing * get_ring() const
Definition monideal.hpp:190
const Ring * getCoefficientRing() const
Definition polyring.hpp:200
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition polyring.hpp:304
virtual ring_elem make_flat_term(const ring_elem a, const_monomial m) const =0
virtual FreeModule * make_FreeModule() const
Definition ring.cpp:53
virtual ring_elem from_long(long n) const =0
#define monomial
Definition gb-toric.cpp:11
const int ERROR
Definition m2-mem.cpp:55

References MonomialIdeal::beginAtLast(), PolynomialRing::cast_to_PolynomialRing(), MatrixConstructor::compute_column_degrees(), MonomialIdeal::end(), ERROR, Ring::from_long(), Monoid::from_varpower(), MonomialIdeal::get_ring(), PolynomialRing::getCoefficientRing(), PolynomialRing::getMonoid(), make(), PolynomialRing::make_flat_term(), Ring::make_FreeModule(), Monoid::make_one(), Matrix(), MatrixConstructor, monomial, Monoid::remove(), MatrixConstructor::set_entry(), MonomialIdeal::size(), and MatrixConstructor::to_matrix().