28 typedef vector<Exponent*>
Cont;
32 Ideal(
size_t varCount = 0);
199 void print(FILE* file)
const;
200 void print(ostream& out)
const;
239 void remove(const_iterator it);
280 template<
class Predicate>
296 void reset(
size_t newVarCount);
320 template<
class Predicate>
324 if (newEnd !=
_terms.end()) {
vector< Exponent * > _chunks
Cont::const_iterator const_iterator
size_t getTypicalNonGenericExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is the typical non-generic degree.
bool useSingleChunking() const
vector< Exponent * > Cont
static void clearStaticCache()
Ideal caches memory allocated with new internally and reuses it to avoid calling new all the time...
Cont::reverse_iterator reverse_iterator
bool removeIf(Predicate pred)
Removes those generators m such that pred(m) evaluates to true.
void product(const Exponent *term)
bool isIncomparable(const Exponent *term) const
void print(FILE *file) const
void insertNonMultiples(const Exponent *term, const Ideal &ideal)
void getSupportCounts(Exponent *counts) const
counts[var] will be the number of generators divisible by var.
bool isSquareFree() const
Ideal(size_t varCount=0)
Initialize this object to the zero ideal in varCount variables.
void getGcdOfMultiplesOf(Exponent *gcd, const Exponent *divisor)
Sets gcd to the greatest common divisor of those generators that are divisible by divisor...
Represents a monomial ideal with int exponents.
void lcm(Word *res, const Word *resEnd, const Word *a, const Word *b)
void colon(const Exponent *by)
ExponentAllocator _allocator
bool isMinimallyGenerated() const
void gcd(Word *res, const Word *resEnd, const Word *a, const Word *b)
Exponent * _chunkIterator
bool isWeaklyGeneric() const
void swap(ExponentAllocator &allocator)
void singleDegreeSort(size_t var)
size_t getVarCount() const
bool containsIdentity() const
bool colonReminimize(const Exponent *colon)
void removeStrictMultiples(const Exponent *term)
ExponentAllocator & operator=(const ExponentAllocator &)
vector< Exponent * > _terms
void mapExponentsToZeroNoMinimize(const Term &zeroExponents)
Replaces the exponents from zeroExponents with zero and does not remove any non-minimal generators th...
const_iterator end() const
void getGcdAtExponent(Exponent *gcd, size_t var, Exponent exp)
Sets gcd to the greatest common divisor of those generators that raise the variable var to the power ...
Ideal & operator=(const Ideal &ideal)
bool disjointSupport() const
Returns true if all pairs of generators have disjoint support.
bool operator==(const Ideal &ideal) const
Rereturns true if *this equals ideal.
Cont::const_reverse_iterator const_reverse_iterator
void insertReminimize(const Exponent *term)
bool isIrreducible() const
Exponent *& operator[](size_t index)
void getGcd(Exponent *gcd) const
Sets gcd to the greatest common divisor of all generators.
void reset(size_t newVarCount)
size_t getTypicalExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is the typical non-zero exponent.
void getLeastExponents(Exponent *least) const
void getLcm(Exponent *lcm) const
Sets lcm to the least common multiple of all generators.
const_iterator getMultiple(size_t var) const
const Exponent * operator[](size_t index) const
bool strictlyContains(const Exponent *term) const
const_iterator begin() const
void removeMultiples(const Exponent *term)
bool contains(const Exponent *term) const
void insert(const Exponent *term)
size_t getMostNonGenericExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is the most non-generic degree.
void takeRadicalNoMinimize()
Replaces all generators with their support and does not remove any non-minimal generators this may pr...
ExponentAllocator(size_t varCount)
bool getNonGenericExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is some non-generic degree.
Term represents a product of variables which does not include a coefficient.
ostream & operator<<(ostream &out, const Ideal &ideal)
void clearAndSetVarCount(size_t varCount)
size_t getGeneratorCount() const