30 for (
size_t var = 0; var <
varDegrees.size(); ++var) {
38 for (
size_t var = 0; var <
varDegrees.size(); ++var) {
56 for (
size_t var = 0; var < term.
getVarCount(); ++var)
65 for (
size_t var = 0; var < term.
getVarCount(); ++var)
78 for (
size_t var = 0; var <
varCount; ++var) {
187 for (
size_t e = 1;
e <
_grades[var].size(); ++
e) {
256 if (reference <
from)
271 for (
size_t var = 0; var < term.
getVarCount(); ++var)
284 return _grades[var].size() - 1;
292 out <<
"TermGrader (\n";
293 for (
size_t var = 0; var <
_grades.size(); ++var) {
294 out <<
" var " << var <<
':';
295 for (
size_t e = 0;
e <
_grades[var].size(); ++
e)
void nameFactoryRegister(NameFactory< AbstractProduct > &factory)
Registers the string returned by ConcreteProduct::getStaticName() to a function that default-construc...
ostream & operator<<(ostream &out, const TermGrader &grader)
A TermGrader assigns a value, the degree, to each monomial.
void getIncrementedDegree(const Term &term, const Projection &projection, mpz_class °ree) const
void print(ostream &out) const
Exponent getLargestLessThan2(size_t var, const mpz_class &value, bool strict=true) const
Returns the index of the largest stored exponent of var that is less than value.
mpz_class getDegree(const Term &term) const
Returns the degree of term.
size_t getVarCount() const
Exponent getMaxExponent(size_t var) const
TermGrader(const vector< mpz_class > &varDegrees, const TermTranslator &translator)
bool getMaxIndexLessThan(size_t var, Exponent from, Exponent to, Exponent &index, const mpz_class &maxDegree) const
Finds maximal index in [from, to] to such that degree(t) <= maxDegree.
void getUpperBound(const Term &divisor, const Term &dominator, mpz_class &bound) const
Assigns to bound the degree of the largest term v such that divisor divides v and v divides dominator...
bool getMinIndexLessThan(size_t var, Exponent from, Exponent to, Exponent &index, const mpz_class &maxDegree) const
Finds minimal index in [from, to] to such that degree(t) <= maxDegree.
int getGradeSign(size_t var) const
Returns 1 if the grade strictly increases with the exponent of var, returns -1 if it strictly decreas...
const mpz_class & getGrade(size_t var, Exponent exponent) const
vector< vector< mpz_class > > _grades
TermTranslator handles translation between terms whose exponents are infinite precision integers and ...
Term represents a product of variables which does not include a coefficient.
size_t getVarCount() const