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

◆ subduct1() [1/2]

Matrix * sagbi::subduct1 ( int numparts,
const Ring * rawT,
const Ring * rawS,
const Matrix * m,
const RingMap * inclusionAmbient,
const RingMap * fullSubstitution,
const RingMap * substitutionInclusion,
GBComputation * gbI,
GBComputation * gbReductionIdeal )
static

Definition at line 138 of file sagbi.cpp.

147{
148 MatrixConstructor result(m->rows(), m->cols());
149 const PolyRing *T = rawT->cast_to_PolyRing();
150 const PolyRing *S = rawS->cast_to_PolyRing();
151 if ((T == nullptr) || (S == nullptr))
152 {
153 ERROR("expected polynomial ring");
154 return nullptr;
155 }
156 int nslots = T->getMonoid()->n_slots(numparts);
157 for (int i = 0; i < m->n_cols(); i++)
158 {
159 ring_elem a = m->elem(0, i);
160 ring_elem b = subduct1(nslots-2, T, S, S->copy(a),
161 inclusionAmbient,fullSubstitution,substitutionInclusion,
162 gbI,gbReductionIdeal);
163 result.set_entry(0, i, b);
164 }
165
166 return result.to_matrix();
167}
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 subduct1(int numslots, const PolyRing *T, const PolyRing *S, ring_elem a, const RingMap *inclusionAmbient, const RingMap *fullSubstitution, const RingMap *substitutionInclusion, GBComputation *gbI, GBComputation *gbReductionIdeal)
Definition sagbi.cpp:71
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define T
Definition table.c:13

References Ring::cast_to_PolyRing(), Matrix::cols(), PolyRing::copy(), Matrix::elem(), ERROR, Matrix, Matrix::n_cols(), result(), Matrix::rows(), subduct1(), and T.