forked from OSchip/llvm-project
[MLIR] Simplex::normalizeRow: early exit when gcd is one
Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D116672
This commit is contained in:
parent
afc94c0ed7
commit
dbb2e74da3
|
@ -124,10 +124,14 @@ unsigned SimplexBase::addRow(ArrayRef<int64_t> coeffs) {
|
|||
void SimplexBase::normalizeRow(unsigned row) {
|
||||
int64_t gcd = 0;
|
||||
for (unsigned col = 0; col < nCol; ++col) {
|
||||
if (gcd == 1)
|
||||
break;
|
||||
gcd = llvm::greatestCommonDivisor(gcd, std::abs(tableau(row, col)));
|
||||
// If the gcd becomes 1 then the row is already normalized.
|
||||
if (gcd == 1)
|
||||
return;
|
||||
}
|
||||
|
||||
// Note that the gcd can never become zero since the first element of the row,
|
||||
// the denominator, is non-zero.
|
||||
for (unsigned col = 0; col < nCol; ++col)
|
||||
tableau(row, col) /= gcd;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue