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());
SliceParameters _sliceParams
virtual void obtainParameters(vector< Parameter * > ¶meters)
static const char * staticGetName()
auto_ptr< BigIdeal > releaseIdeal()
virtual void obtainParameters(vector< Parameter * > ¶meters)
BoolParameter _printActions
size_t getGeneratorCount() const
virtual bool displayAction() const
Returns whether this action should be shown to the user by the help action.
This file contains functions for printing strings to standard error.
bool solveStandardProgram(const vector< mpz_class > &grading, mpz_class &value, bool reportAllSolutions)
Solve an optimization program over maximal standard monomials.
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 class offers an input interface which is more convenient and for some purposes more efficient th...
A facade for operations on monomial ideals using the Slice Algorithm.
void obtainParameters(vector< Parameter * > ¶meters)
void setSplit(const string &split)
Set the value of the option for choosing the split selection strategy.
void readFrobeniusInstanceWithGrobnerBasis(Scanner &in, BigIdeal &ideal, vector< mpz_class > &instance)
BigTermRecorder records all the terms it consumes into an ideal.
A facade for input and output of mathematical objects.
BoolParameter _displaySolution
void expectEOF()
Require that there is no more input.
void validateSplit(const SliceParams ¶ms, bool allowLabel, bool allowDegree)