Macaulay2 Engine
Loading...
Searching...
No Matches
matrix-stream.cpp
Go to the documentation of this file.
1#include "matrix-stream.hpp"
2
5{
6 mPolyRing = F->get_ring()->cast_to_PolyRing();
7 assert(mPolyRing != 0);
11}
12
19
20void MatrixStream::idealBegin(size_t polyCount)
21{
22 (void) polyCount;
23}
25{
26 (void) termCount;
27}
29{
31 // Nothing else to do
32}
33
35{
36 assert(index < mPolyRing->n_vars());
38}
40{
41 // Now we need to create an Nterm, and attach it at mCurrentComponent
42 Nterm* t = ring().new_term();
44 t->coeff = ring().getCoefficients()->from_int(coefficient.get_mpz_t());
45 t->next = nullptr;
46 if (mLastTerms[mCurrentComponent] == nullptr)
47 {
50 }
51 else
52 {
55 }
56 for (size_t i = 0; i < ring().n_vars(); i++) mCurrentExponents[i] = 0;
57}
59{
60 // Time to append a polynomial
61 // ring().sort(mCurrentPoly); // This is just in case the elements come in
62 // out of order
64
65 mMatrixConstructor.append(v);
66 for (int i = 0; i < mFreeModule->rank(); i++)
67 {
68 mCurrentColumn[i] = nullptr;
69 mLastTerms[i] = nullptr;
70 }
71}
77
78// Local Variables:
79// compile-command: "make -C $M2BUILDDIR/Macaulay2/e "
80// indent-tabs-mode: nil
81// End:
const Ring * get_ring() const
Definition freemod.hpp:102
int rank() const
Definition freemod.hpp:105
Engine-side free module R^n over a Ring.
Definition freemod.hpp:66
Mutable builder used to assemble an immutable Matrix one column (or one term) at a time.
void idealBegin(size_t polyCount)
void appendTermDone(Coefficient coefficient)
Exponent * mCurrentExponents
mpz_class Coefficient
MatrixConstructor mMatrixConstructor
const Matrix * mValue
void appendTermBegin(Component com)
void appendExponent(VarIndex index, Exponent exponent)
const PolyRing * mPolyRing
const FreeModule * mFreeModule
Component mCurrentComponent
const PolyRing & ring() const
Nterm ** mCurrentColumn
void appendPolynomialBegin(size_t termCount)
MatrixStream(const FreeModule *F)
Nterm ** mLastTerms
void appendPolynomialDone()
void from_expvector(const_exponents exp, monomial result) const
Definition monoid.cpp:742
Nterm * new_term() const
Definition poly.cpp:146
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
virtual const Ring * getCoefficients() const
Definition polyring.hpp:277
int n_vars() const
Definition polyring.hpp:196
vec make_vec_from_array(int len, Nterm **array) const
Definition ring-vecs.cpp:70
virtual ring_elem from_int(mpz_srcptr n) const =0
int * exponent
Definition exptable.h:34
void freemem(void *s)
Definition m2-mem.cpp:103
MatrixStream — term-by-term streaming construction of a Matrix.
#define newarray_clear(T, len)
Definition newdelete.hpp:83
Nterm * next
Definition ringelem.hpp:157
ring_elem coeff
Definition ringelem.hpp:158
int monom[1]
Definition ringelem.hpp:160
Singly linked-list node carrying one term of a polynomial-ring element.
Definition ringelem.hpp:156