106 std::vector<SmallVector<Fraction>> newAffineTerm({});
107 std::vector<std::vector<SmallVector<Fraction>>> newAffine({});
111 for (
unsigned i = 0, e = coefficients.size(); i < e; i++) {
113 if (coefficients[i] ==
Fraction(0, 1))
119 return llvm::all_of(affineIj,
120 [](
const Fraction &f) {
return f == 0; });
130 newCoeff = coefficients[i];
132 bool allCoeffsZero = llvm::all_of(
133 term.slice(0, numParam), [](
const Fraction &c) { return c == 0; });
135 newCoeff *= term[numParam];
137 newAffineTerm.emplace_back(term);
140 newCoeffs.emplace_back(newCoeff);
141 newAffine.emplace_back(newAffineTerm);
148 std::vector<std::vector<SmallVector<Fraction>>> newAffine({});
150 for (
unsigned i = 0, e = affine.size(); i < e; i++) {
151 bool alreadyPresent =
false;
152 for (
unsigned j = 0, f = newAffine.size();
j < f;
j++) {
153 if (affine[i] == newAffine[
j]) {
154 newCoeffs[
j] += coefficients[i];
155 alreadyPresent =
true;
160 newCoeffs.emplace_back(coefficients[i]);
161 newAffine.emplace_back(affine[i]);