58 namespace F = Fourti2;
73 (
unsigned long)
getNames().getVarCount());
109 (
unsigned long)
getNames().getVarCount() + 1);
128 const vector<mpz_class>& term,
152 "Format used by the software package 4ti2.") {
244 (
"A polynomial has at least one column in the matrix,"
245 "but this matrix has no columns.");
258 vector<mpz_class>& term =
polynomial.getLastTerm();
259 for (
size_t var = 0; var <
varCount; ++var) {
260 ASSERT(var < term.size());
261 in.readIntegerAndNegativeAsZero(term[var]);
265 if (!
in.match(
'(')) {
268 in.expect(
"(coefficient)");
270 in.expect(
"coefficient");
273 if (
in.peekIdentifier()) {
275 for (
size_t var = 0; var <
varCount; ++var)
300 if (
names.getVarCount() == 0)
304 for (
size_t var = 0; var <
names.getVarCount(); ++var) {
316 in.expect(
"_fourtitwo_identity");
318 for (
size_t var = 0; var <
varCount; ++var) {
320 in.expectIntegerNoSign();
330 while (
in.peekIdentifier())
331 names.addVarSyntaxCheckUnique(
in,
in.readIdentifier());
336 for (
size_t var = 0; var <
varCount; ++var)
337 names.addVarSyntaxCheckUnique(
in,
in.readIdentifier());
342 for (
size_t var = 0; var <
varCount; ++var) {
357 for (
size_t var = 0; var <
varCount; ++var) {
359 const char*
exp =
translator.getExponentString(var, term[var]);
392 if (
in.peekIdentifier()) {
413 vector<mpz_class>&
binom = ideal.getLastBinomRef();
414 for (
size_t var = 0; var <
varCount; ++var)
418 if (
in.peekIdentifier()) {
421 ideal.renameVars(
names);
428 string msg =
"Using the format ";
430 msg +=
" makes it necessary to store all of the output in "
431 "memory before writing it out. This increases "
432 "memory consumption and decreases performance.";
void nameFactoryRegister(NameFactory< AbstractProduct > &factory)
Registers the string returned by ConcreteProduct::getStaticName() to a function that default-construc...
static const DataType & getSatBinomIdealType()
Returns the one and only instance for saturated binomial ideals.
static const DataType & getMonomialIdealListType()
Returns the one and only instance for monomial ideal lists.
static const DataType & getMonomialIdealType()
Returns the one and only instance for monomial ideals.
static const DataType & getPolynomialType()
Returns the one and only instance for polynomials.
bool hasMoreInput(Scanner &in) const
virtual BigTermConsumer * doCreateIdealWriter(FILE *out)
virtual void doReadIdeal(Scanner &in, InputConsumer &consumer)
virtual void doWriteTerm(const vector< mpz_class > &term, const VarNames &names, FILE *out)
virtual void doReadSatBinomIdeal(Scanner &in, SatBinomConsumer &consumer)
virtual void doReadPolynomial(Scanner &in, CoefBigTermConsumer &consumer)
static const char * staticGetName()
virtual CoefBigTermConsumer * doCreatePolynomialWriter(FILE *out)
virtual void doReadIdeals(Scanner &in, InputConsumer &consumer)
virtual void doReadTerm(Scanner &in, InputConsumer &consumer)
virtual void doWriteTerm(const vector< mpz_class > &term, bool first)
virtual void doWriteTerm(const Term &term, const TermTranslator &translator, bool first)
Fourti2IdealWriter(FILE *out)
virtual void doWriteEmptyList()
virtual void doWriteHeader(bool first, size_t generatorCount)
virtual void doWriteFooter(bool wasZeroIdeal)
virtual void doWriteHeader(bool first)
virtual void doWriteFooter(bool wasZero)
virtual void doWriteTerm(const mpz_class &coef, const Term &term, const TermTranslator &translator, bool firstGenerator)
virtual void doWriteHeader(size_t termCount)
Fourti2PolyWriter(FILE *out)
virtual void doWriteTerm(const mpz_class &coef, const vector< mpz_class > &term, bool firstGenerator)
virtual void doWriteHeader()
This class contains a minimum level of functionality that makes it more convenient to derive from tha...
void registerInput(const DataType &type)
Specify that input of the argument type is supported.
void registerOutput(const DataType &type)
Specify that output of the argument type is supported.
const VarNames & getNames()
const VarNames & getNames() const
Represents a saturated binomial ideal.
This class offers an input interface which is more convenient and for some purposes more efficient th...
TermTranslator handles translation between terms whose exponents are infinite precision integers and ...
Term represents a product of variables which does not include a coefficient.
size_t getVarCount() const
Defines the variables of a polynomial ring and facilities IO involving them.
bool addVar(const string &name)
Adds the variable and returns true if name is not already a variable.
void displayNote(const string &msg)
Display msg to standard error in a way that indicates that this is something that the user should tak...
This file contains functions for printing strings to standard error.
void reportError(const string &errorMsg)
#define INTERNAL_ERROR_UNIMPLEMENTED()
void writeTerm(const vector< mpz_class > &term, FILE *out)
void writeRing(const VarNames &names, FILE *out)
void writeRingWithoutHeader(const VarNames &names, FILE *out)
void readRing(Scanner &in, VarNames &names)
void readIdeal(Scanner &in, InputConsumer &consumer, size_t generatorCount, size_t varCount)
void readSatBinomIdeal(Scanner &in, SatBinomConsumer &consumer, size_t generatorCount, size_t varCount)
void display4ti2Warning()
void readTerm(Scanner &in, InputConsumer &consumer)