31 "Compute Frobenius number using a Grobner basis algorithm.",
32 "Compute the Frobenius number of the passed-in Frobenius instance. This "
34 "must be preceded in the input by a deg-rev-lex lattice ideal Grobner basis "
36 "produced by the program 4ti2.\n\n"
37 "The algorithm for this uses irreducible decomposition to compute the "
39 "number, which is why this action accepts parameters related to that. See "
41 "paper \"Solving Thousand Digit Frobenius Problems Using Grobner Bases\"\n"
42 "at www.broune.com for more details.",
45 _sliceParams(true, false),
48 "Display the vector that achieves the optimal value.",
62 (
"The action frobgrob is DEPRECATED, and will be removed in a future "
63 "release of Frobby. Use the action optimize with options "
64 "-chopFirstAndSubtract and -maxStandard instead to get the same effect.");
69 vector<mpz_class> instance;
77 vector<mpz_class> shiftedDegrees(instance.begin() + 1, instance.end());
78 vector<mpz_class> bigVector;
89 bigVector = maxSolution[0];
91 mpz_class frobeniusNumber = -instance[0];
92 for (
size_t i = 1; i < instance.size(); ++i)
93 frobeniusNumber += bigVector[i - 1] * instance[i];
97 for (
size_t i = 0; i < bigVector.size(); ++i)
98 gmp_fprintf(stdout,
", %Zd", bigVector[i].get_mpz_t());
102 gmp_fprintf(stdout,
"%Zd\n", frobeniusNumber.get_mpz_t());
void validateSplit(const SliceParams ¶ms, bool allowLabel, bool allowDegree)
BoolParameter _printActions
virtual void obtainParameters(vector< Parameter * > ¶meters)
size_t getGeneratorCount() const
BigTermRecorder records all the terms it consumes into an ideal.
auto_ptr< BigIdeal > releaseIdeal()
virtual bool displayAction() const
Returns whether this action should be shown to the user by the help action.
BoolParameter _displaySolution
virtual void obtainParameters(vector< Parameter * > ¶meters)
SliceParameters _sliceParams
static const char * staticGetName()
A facade for input and output of mathematical objects.
void readFrobeniusInstanceWithGrobnerBasis(Scanner &in, BigIdeal &ideal, vector< mpz_class > &instance)
void obtainParameters(vector< Parameter * > ¶meters)
This class offers an input interface which is more convenient and for some purposes more efficient th...
void expectEOF()
Require that there is no more input.
A facade for operations on monomial ideals using the Slice Algorithm.
bool solveStandardProgram(const vector< mpz_class > &grading, mpz_class &value, bool reportAllSolutions)
Solve an optimization program over maximal standard monomials.
void setSplit(const string &split)
Set the value of the option for choosing the split selection strategy.
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.