32 size_t root = 0xFFFFFFFF;
33 for (
size_t i = 0; i < partition.
getSize(); ++i) {
34 if (i == partition.
getRoot(i)) {
42 ASSERT(number == 0 && root != 0xFFFFFFFF);
44 for (
size_t i = 0; i < partition.
getSize(); ++i) {
45 if (partition.
getRoot(i) != root)
61 for (
size_t var = 0; var < varCount; ++var)
74 for (
size_t i = 0; i < size; ++i)
80 for (
size_t i = 0; i < size; ++i)
95 for (
size_t rangeVar = 0; rangeVar <
_offsets.size(); ++rangeVar)
105 fputs(
"Projection:", file);
106 for (
size_t var = 0; var <
_offsets.size(); ++var)
107 fprintf(file,
" %lu", (
unsigned long)
_offsets[var]);
124 for (
size_t rangeVar = 0; rangeVar <
_offsets.size(); ++rangeVar) {
size_t getRoot(size_t i) const
void swap(Projection &projection)
void inverseProject(Term &to, const Exponent *from) const
void reset(const Partition &partition, int set)
void updateHasProjections()
size_t getDomainVar(size_t rangeVar)
void setToIdentity(size_t varCount)
vector< int > _domainVarHasProjection
bool domainVarHasProjection(size_t var) const
void print(FILE *file) const
void project(Exponent *to, const Exponent *from) const
size_t inverseProjectVar(size_t rangeVar) const
size_t getRangeVarCount() const
vector< size_t > _offsets
Term represents a product of variables which does not include a coefficient.