[Mlir-commits] [mlir] [MLIR][Presburger] Add Gram-Schmidt (PR #70843)

Arjun P llvmlistbot at llvm.org
Thu Nov 2 09:18:39 PDT 2023


================
@@ -548,4 +548,29 @@ Fraction FracMatrix::determinant(FracMatrix *inverse) const {
     determinant *= m.at(i, i);
 
   return determinant;
+}
+
+FracMatrix FracMatrix::gramSchmidt() const {
+  bool linIndep =
+      (nRows < nColumns) || (nRows == nColumns && determinant(nullptr) != 0);
+  assert(linIndep && "the vectors must be linearly independent!");
+
+  // Create a copy of the argument to store
+  // the orthogonalised version.
+  FracMatrix orth(*this);
+
+  // For each vector (row) in the matrix,
+  // subtract its unit projection along
+  // each of the previous vectors.
+  // This ensures that it has no component
+  // in the direction of any of the
+  // previous vectors.
+  for (unsigned i = 1; i < getNumRows(); i++) {
----------------
Superty wrote:

Please apply to all loops.

https://github.com/llvm/llvm-project/pull/70843


More information about the Mlir-commits mailing list