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

◆ make_sparse() [1/2]

const Matrix * Matrix::make_sparse ( const FreeModule * target,
const FreeModule * source,
M2_arrayint deg,
M2_arrayint rows,
M2_arrayint cols,
const engine_RawRingElementArray entries )
static

Definition at line 205 of file matrix.cpp.

212{
213#ifdef DEVELOPMENT
214#warning "check that all rings are correct, give error otherwise"
215#endif
216 const Ring *R = target->get_ring();
217 auto D = R->degree_monoid();
218 monomial degshift = D->make_one();
219 D->from_expvector(deg->array, degshift);
220
221 MatrixConstructor mat(target, source, degshift);
222 if (!Matrix::make_sparse_vecs(
223 mat, target, source->rank(), rows, cols, entries))
224 return nullptr; // error message has already been sent
225 return mat.to_matrix();
226}
const Ring * get_ring() const
Definition freemod.hpp:102
int rank() const
Definition freemod.hpp:105
friend class MatrixConstructor
Definition matrix.hpp:76
monomial make_one() const
Definition monoid.cpp:455
const Monoid * degree_monoid() const
Definition ring.cpp:13
#define monomial
Definition gb-toric.cpp:11

References cols(), Ring::degree_monoid(), FreeModule, FreeModule::get_ring(), make_sparse(), make_sparse_vecs(), Matrix(), MatrixConstructor, monomial, FreeModule::rank(), rows(), and MatrixConstructor::to_matrix().