127 str.idealBegin(Fs.size());
130 str.appendPolynomialBegin(F.mCoefficients.size());
132 for (
auto i=0; i<F.mCoefficients.size(); ++i)
134 auto monomEnd = monomStart + F.mMonomials[monomStart];
135 if (F.mComponents.empty())
136 str.appendTermBegin(0);
138 str.appendTermBegin(F.mComponents[i]);
139 for (
auto j=monomStart+1; j<monomEnd; j += 2)
140 str.appendExponent(F.mMonomials[j], F.mMonomials[j+1]);
141 str.appendTermDone(F.mCoefficients[i]);
142 monomStart = monomEnd;
144 str.appendPolynomialDone();
Minimal, portable polynomial value type used where heavier engine types would be overkill.
std::vector< BasicPoly > BasicPolyList
auto basicPolyListFromString(std::vector< std::string > varNames, std::string polyPerLine) -> BasicPolyList
auto basicPolyListFromFile(std::vector< std::string > varNames, std::string fileName) -> BasicPolyList
long bytesUsed(const BasicPolyList &F)
const Matrix * toMatrix(const FreeModule *target, const BasicPolyList &Fs)
void toStream(const BasicPolyList &Fs, S &str)
Type aliases and the (currently disabled) C++20 concept that streaming polynomial consumers implement...
void appendTermDone(const Coefficient &coefficient)
void idealBegin(size_t polyCount)
void appendPolynomialDone()
void appendExponent(VarIndex index, Exponent exponent)
long mSizeEntryInMonomial
Component comCount() const
BasicPolyListStreamCollector()
~BasicPolyListStreamCollector()=default
void appendPolynomialBegin(size_t termCount)
BasicPolyListStreamCollector(Coefficient modulus, VarIndex varCount, Component comCount)
ModulusType modulus() const
void appendTermBegin(Component com)
VarIndex varCount() const
Engine-side free module R^n over a Ring.
namespace exc — internal C++ exception types and the TRY / CATCH macro pair.