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.
This header file includes common definitions and is included as the first line of code in every imple...