From 517d13ea844ea16e98cf96d33455c09feeb91247 Mon Sep 17 00:00:00 2001 From: Vincent Neiger Date: Tue, 30 Jan 2024 16:50:45 +0100 Subject: [PATCH 1/2] gather several calls to inversion (computing identical inverses) before the loop --- src/sage/matrix/matrix2.pyx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx index 2a069660011..b3543f4d9a2 100644 --- a/src/sage/matrix/matrix2.pyx +++ b/src/sage/matrix/matrix2.pyx @@ -13611,8 +13611,9 @@ cdef class Matrix(Matrix1): if max_location != -1: perm[k], perm[max_location] = perm[max_location], perm[k] M.swap_rows(k, max_location) + inv = M.get_unsafe(k, k).inverse() for j in range(k+1, m): - scale = -M.get_unsafe(j, k)/M.get_unsafe(k, k) + scale = -M.get_unsafe(j, k)*inv M.set_unsafe(j, k, -scale) for p in range(k+1, n): M.set_unsafe(j, p, M.get_unsafe(j, p) + scale*M.get_unsafe(k, p)) From 43a175fd1ce24544b6fc96e6fd165b768bdc64fb Mon Sep 17 00:00:00 2001 From: Vincent Neiger Date: Tue, 30 Jan 2024 21:02:40 +0100 Subject: [PATCH 2/2] fix as suggested --- src/sage/matrix/matrix2.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx index b3543f4d9a2..34b5808d0c8 100644 --- a/src/sage/matrix/matrix2.pyx +++ b/src/sage/matrix/matrix2.pyx @@ -13613,7 +13613,7 @@ cdef class Matrix(Matrix1): M.swap_rows(k, max_location) inv = M.get_unsafe(k, k).inverse() for j in range(k+1, m): - scale = -M.get_unsafe(j, k)*inv + scale = -M.get_unsafe(j, k) * inv M.set_unsafe(j, k, -scale) for p in range(k+1, n): M.set_unsafe(j, p, M.get_unsafe(j, p) + scale*M.get_unsafe(k, p))