64 slice.singleDegreeSortIdeal(var);
67 while ((*begin)[var] == 0) {
71 return (*(begin + (distance(begin, end) ) / 2))[var];
81 slice.getIdeal().getSupportCounts(
co);
84 for (
size_t var = 0; var <
slice.getVarCount(); ++var)
91 for (
size_t var = 0; var <
slice.getVarCount(); ++var)
98 return co.getMiddleNonZeroExponent();
123 for (
size_t var = 0; var <
slice.getVarCount(); ++var)
164 for (
size_t var = 0; ; ++var) {
191 for (
size_t var = 1; var <
slice.getVarCount(); ++var)
195 for (
size_t var = 0; var <
slice.getVarCount(); ++var)
222 pivot.setToIdentity();
240 pivot.setToIdentity();
259 pivot.setToIdentity();
275 if (
slice.getVarCount() == 1) {
299 for (
size_t var = 0; var <
slice.getVarCount(); ++var)
333 for (
int i = 0;
i < 3; ++
i) {
411 for (
size_t var = 0; var <
slice.getVarCount(); ++var) {
425 if (
grader.getGradeSign(var) < 0)
436 pivot.setToIdentity();
461 (
"The split selection strategy \"frob\" is deprecated and will be "
462 "removed in a future version of Frobby. Use the name \"degree\" "
463 "to achieve the same thing.");
auto_ptr< AbstractProduct > createWithPrefix(const NameFactory< AbstractProduct > &factory, const string &prefix)
Creates the unique product that has the indicated prefix, or create the actual product that has name ...
void nameFactoryRegister(NameFactory< AbstractProduct > &factory)
Registers the string returned by ConcreteProduct::getStaticName() to a function that default-construc...
mpz_class _maxDiff
This is member variable used by getPivot.
virtual const char * getName() const
Returns the name of the strategy.
mpz_class _diff
This is member variable used by getPivot.
static const char * staticGetName()
virtual void getPivot(Term &pivot, Slice &slice, const TermGrader &grader) const
Sets pivot to the pivot of a pivot split on slice.
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
This class is deprecated and is only here to create the alias "frob" for the degree split.
virtual const char * getName() const
Returns the name of the strategy.
static const char * staticGetName()
DeprecatedFrobeniusSplit()
static const char * staticGetName()
virtual const char * getName() const
Returns the name of the strategy.
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
Cont::const_iterator const_iterator
virtual const char * getName() const
Returns the name of the strategy.
static const char * staticGetName()
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
virtual bool isLabelSplit() const
If returns true, only call getLabelSplitVariable.
void setCounts(const Slice &slice) const
void setOneCounts(const Slice &slice) const
virtual size_t getLabelSplitVariable(const Slice &slice) const
Returns the variable to perform a label split on.
static const char * staticGetName()
virtual const char * getName() const
Returns the name of the strategy.
virtual const char * getName() const
Returns the name of the strategy.
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
static const char * staticGetName()
static const char * staticGetName()
virtual const char * getName() const
Returns the name of the strategy.
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
virtual size_t getLabelSplitVariable(const Slice &slice) const
Returns the variable to perform a label split on.
virtual const char * getName() const
Returns the name of the strategy.
static const char * staticGetName()
static const char * staticGetName()
virtual const char * getName() const
Returns the name of the strategy.
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
A NameFactory takes a name and then creates an instance of a class that has been previously registere...
virtual bool isPivotSplit() const
If returns true, only call getPivot.
This class represents a slice, which is the central data structure of the Slice Algorithm.
This common base class provides code that is useful for writing pivot split strategies.
virtual size_t getLabelSplitVariable(const Slice &slice) const
Returns the variable to perform a label split on.
virtual bool isLabelSplit() const
If returns true, only call getLabelSplitVariable.
virtual void getPivot(Term &pivot, Slice &slice) const
Sets pivot to the pivot of a pivot split on slice.
size_t getBestVar(const Slice &slice) const
Term coVariableForGetBestVar
Exponent getMedianPositiveExponentOf(Slice &slice, size_t var) const
virtual bool isPivotSplit() const
If returns true, only call getPivot.
virtual void getPivot(Term &pivot, Slice &slice, const TermGrader &grader) const
Sets pivot to the pivot of a pivot split on slice.
A SplitStrategy is an implementation of a split selection strategy for the Slice Algorithm.
static auto_ptr< SplitStrategy > createStrategy(const string &prefix)
Returns the strategy whose name has the given prefix.
A TermGrader assigns a value, the degree, to each monomial.
Term represents a product of variables which does not include a coefficient.
void reset(size_t newVarCount)
bool isSquareFree() const
size_t getSizeOfSupport() const
static size_t getFirstMaxExponent(const Exponent *a, size_t varCount)
Returns a var such that a[var] >= a[i] for all i.
virtual const char * getName() const
Returns the name of the strategy.
static const char * staticGetName()
virtual size_t getLabelSplitVariable(const Slice &slice) const
Returns the variable to perform a label split on.
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 reportInternalError(const string &errorMsg)