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