MLIR
20.0.0git
|
Given a simplex for a polytope, construct a new simplex whose variables are identified with a pair of points (x, y) in the original polytope. More...
Public Member Functions | |
GBRSimplex (const Simplex &originalSimplex) | |
void | addEqualityForDirection (ArrayRef< DynamicAPInt > dir) |
Add an equality dotProduct(dir, x - y) == 0. More... | |
Fraction | computeWidth (ArrayRef< DynamicAPInt > dir) |
Compute max(dotProduct(dir, x - y)). More... | |
Fraction | computeWidthAndDuals (ArrayRef< DynamicAPInt > dir, SmallVectorImpl< DynamicAPInt > &dual, DynamicAPInt &dualDenom) |
Compute max(dotProduct(dir, x - y)) and save the dual variables for only the direction equalities to dual . More... | |
void | removeLastEquality () |
Remove the last equality that was added through addEqualityForDirection. More... | |
Given a simplex for a polytope, construct a new simplex whose variables are identified with a pair of points (x, y) in the original polytope.
Supports some operations needed for generalized basis reduction. In what follows, dotProduct(x, y) = x_1 * y_1 + x_2 * y_2 + ... x_n * y_n where n is the dimension of the original polytope.
This supports adding equality constraints dotProduct(dir, x - y) == 0. It also supports rolling back this addition, by maintaining a snapshot stack that contains a snapshot of the Simplex's state for each equality, just before that equality was added.
Definition at line 1655 of file Simplex.cpp.
|
inline |
Definition at line 1659 of file Simplex.cpp.
|
inline |
Add an equality dotProduct(dir, x - y) == 0.
First pushes a snapshot for the current simplex state to the stack so that this can be rolled back later.
Definition at line 1666 of file Simplex.cpp.
Compute max(dotProduct(dir, x - y)).
Definition at line 1673 of file Simplex.cpp.
References mlir::presburger::MaybeOptimum< T >::isBounded().
|
inline |
Compute max(dotProduct(dir, x - y)) and save the dual variables for only the direction equalities to dual
.
Definition at line 1682 of file Simplex.cpp.
References mlir::presburger::MaybeOptimum< T >::isBounded(), and mlir::presburger::Simplex::Up.
|
inline |
Remove the last equality that was added through addEqualityForDirection.
We do this by rolling back to the snapshot at the top of the stack, which should be a snapshot taken just before the last equality was added.
Definition at line 1742 of file Simplex.cpp.