MLIR
20.0.0git
|
#include "mlir/Analysis/Presburger/Barvinok.h"
#include "mlir/Analysis/Presburger/Utils.h"
#include "llvm/ADT/Sequence.h"
#include <algorithm>
Go to the source code of this file.
Functions | |
std::pair< QuasiPolynomial, std::vector< Fraction > > | substituteMuInTerm (unsigned numParams, const ParamPoint &v, const std::vector< Point > &ds, const Point &mu) |
Substitute x_i = t^μ_i in one term of a generating function, returning a quasipolynomial which represents the exponent of the numerator of the result, and a vector which represents the exponents of the denominator of the result. More... | |
void | normalizeDenominatorExponents (int &sign, QuasiPolynomial &num, std::vector< Fraction > &dens) |
Normalize all denominator exponents dens to their absolute values by multiplying and dividing by the inverses, in a function of the form sign * t^num / prod_j (1 - t^dens[j]). More... | |
std::vector< QuasiPolynomial > | getBinomialCoefficients (const QuasiPolynomial &n, unsigned r) |
Compute the binomial coefficients nCi for 0 ≤ i ≤ r, where n is a QuasiPolynomial. More... | |
std::vector< Fraction > | getBinomialCoefficients (const Fraction &n, const Fraction &r) |
Compute the binomial coefficients nCi for 0 ≤ i ≤ r, where n is a QuasiPolynomial. More... | |
Compute the binomial coefficients nCi for 0 ≤ i ≤ r, where n is a QuasiPolynomial.
Definition at line 654 of file Barvinok.cpp.
std::vector<QuasiPolynomial> getBinomialCoefficients | ( | const QuasiPolynomial & | n, |
unsigned | r | ||
) |
Compute the binomial coefficients nCi for 0 ≤ i ≤ r, where n is a QuasiPolynomial.
Definition at line 637 of file Barvinok.cpp.
void normalizeDenominatorExponents | ( | int & | sign, |
QuasiPolynomial & | num, | ||
std::vector< Fraction > & | dens | ||
) |
Normalize all denominator exponents dens
to their absolute values by multiplying and dividing by the inverses, in a function of the form sign * t^num / prod_j (1 - t^dens[j]).
Here, sign = ± 1, num is a QuasiPolynomial, and each dens[j] is a Fraction.
Definition at line 609 of file Barvinok.cpp.
References mlir::presburger::QuasiPolynomial::getNumInputs().
Referenced by mlir::presburger::detail::computeNumTerms().
std::pair<QuasiPolynomial, std::vector<Fraction> > substituteMuInTerm | ( | unsigned | numParams, |
const ParamPoint & | v, | ||
const std::vector< Point > & | ds, | ||
const Point & | mu | ||
) |
Substitute x_i = t^μ_i in one term of a generating function, returning a quasipolynomial which represents the exponent of the numerator of the result, and a vector which represents the exponents of the denominator of the result.
If the returned value is {num, dens}, it represents the function t^num / \prod_j (1 - t^dens[j]). v represents the affine functions whose floors are multiplied by the generators, and ds represents the list of generators.
Definition at line 558 of file Barvinok.cpp.
References mlir::presburger::dotProduct(), and mlir::presburger::Matrix< T >::transpose().
Referenced by mlir::presburger::detail::computeNumTerms().