15 cols =
R->make_FreeModule(ncols);
17 entries.reserve(ncols);
18 for (
int i = 0; i < ncols; i++) entries.push_back(
nullptr);
20 deg =
R->degree_monoid()->make_one();
28 entries.reserve(source->
rank());
29 for (
int i = 0; i < source->
rank(); i++) entries.push_back(
nullptr);
31 deg = (deg0 ==
nullptr ?
R->degree_monoid()->make_one()
32 :
R->degree_monoid()->make_new(deg0));
38 monomial d =
R->degree_monoid()->make_one();
39 if (v !=
nullptr)
R->vec_multi_degree(
rows, v, d);
41 R->degree_monoid()->remove(d);
51 mutable_cols->
append(deg0);
56 R->set_entry(entries[c], r, a);
85 monomial d =
R->degree_monoid()->make_one();
86 const vec v = entries[i];
87 if (v !=
nullptr)
R->vec_multi_degree(
rows, v, d);
90 R->degree_monoid()->remove(d);
103 std::cout <<
"MatrixConstructor: ring = " <<
R << std::endl;
104 std::cout <<
"MatrixConstructor: rows = " <<
rows << std::endl;
105 std::cout <<
"MatrixConstructor: cols = " <<
cols << std::endl;
106 std::cout <<
"Matrixconstructor: #entries = " << entries.size() << std::endl;
void change_degree(int i, const_monomial deg)
void append(const_monomial d)
Engine-side free module R^n over a Ring.
void compute_column_degree(int i)
void compute_column_degrees()
void set_column_degree(int i, const_monomial deg)
void set_entry(int r, int c, ring_elem a)
void debugDisplay() const
void set_matrix_degree(const_monomial deg)
void set_column(int c, vec v)
Debugger-callable d* helpers that pretty-print engine values to stderr.
void INTERNAL_ERROR(const char *s,...)
const int * const_monomial
MatrixConstructor — the mutable builder that produces an immutable Matrix.
Matrix — the engine's immutable homomorphism F -> G between free modules.