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

◆ subduct() [1/2]

Matrix * sagbi::subduct ( int numparts,
const Matrix * m,
const RingMap * phi,
GBComputation * J )
static

Definition at line 52 of file sagbi.cpp.

53{
54 MatrixConstructor result(m->rows(), m->cols());
55 const PolyRing *R = m->get_ring()->cast_to_PolyRing();
56 if (R == nullptr)
57 {
58 ERROR("expected polynomial ring");
59 return nullptr;
60 }
61 int nslots = R->getMonoid()->n_slots(numparts);
62 for (int i = 0; i < m->n_cols(); i++)
63 {
64 ring_elem a = m->elem(0, i);
65 ring_elem b = subduct(nslots, R, R->copy(a), phi, J);
66 result.set_entry(0, i, b);
67 }
68 return result.to_matrix();
69}
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
const FreeModule * rows() const
Definition matrix.hpp:144
const FreeModule * cols() const
Definition matrix.hpp:145
int n_slots(int nparts) const
Definition monoid.cpp:386
virtual ring_elem copy(const ring_elem f) const
Definition poly.cpp:653
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
virtual const PolyRing * cast_to_PolyRing() const
Definition ring.hpp:245
static ring_elem subduct(int numslots, const PolyRing *R, ring_elem f, const RingMap *phi, GBComputation *J)
Definition sagbi.cpp:7
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)

References Ring::cast_to_PolyRing(), Matrix::cols(), PolyRing::copy(), Matrix::elem(), ERROR, Matrix::get_ring(), PolynomialRing::getMonoid(), Matrix, Matrix::n_cols(), Monoid::n_slots(), result(), Matrix::rows(), and subduct().