Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D116672
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;
}