From 38fcd45825b1434423c6679d99f3c2ab34638d20 Mon Sep 17 00:00:00 2001
From: Fredrik Johansson <fredrik.johansson@gmail.com>
Date: Fri, 10 Jan 2025 13:14:00 +0100
Subject: [PATCH 1/2] Improve algorithm selection in fmpz_mat_rref

---
 src/fmpz_mat/rref.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/fmpz_mat/rref.c b/src/fmpz_mat/rref.c
index b3ce047e6c..9d6cba8dee 100644
--- a/src/fmpz_mat/rref.c
+++ b/src/fmpz_mat/rref.c
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2011-2012 Fredrik Johansson
+    Copyright (C) 2011-2012, 2025 Fredrik Johansson
     Copyright (C) 2014 Alex J. Best
 
     This file is part of FLINT.
@@ -15,9 +15,10 @@
 slong
 fmpz_mat_rref(fmpz_mat_t R, fmpz_t den, const fmpz_mat_t A)
 {
-    if (FLINT_MIN(A->c, A->r) <= 20)
-        return fmpz_mat_rref_fflu(R, den, A);
-    else if (A->r <= 105 && A->c >= 1.4 * A->r)
+    slong r = A->r;
+    slong c = A->c;
+
+    if (r <= 3 || c <= 2 || (r <= 40 && c > r) || (r > 40 && r <= 100 && c > r + (r - 40) / 60.0 * r))
         return fmpz_mat_rref_fflu(R, den, A);
     else
         return fmpz_mat_rref_mul(R, den, A);

From 8b0b8cf364f8ea3fa7a8beaeaface82de5d2ac25 Mon Sep 17 00:00:00 2001
From: Fredrik Johansson <fredrik.johansson@gmail.com>
Date: Fri, 10 Jan 2025 13:27:03 +0100
Subject: [PATCH 2/2] slight param tweak

---
 src/fmpz_mat/rref.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/fmpz_mat/rref.c b/src/fmpz_mat/rref.c
index 9d6cba8dee..84ef9a11ed 100644
--- a/src/fmpz_mat/rref.c
+++ b/src/fmpz_mat/rref.c
@@ -18,7 +18,7 @@ fmpz_mat_rref(fmpz_mat_t R, fmpz_t den, const fmpz_mat_t A)
     slong r = A->r;
     slong c = A->c;
 
-    if (r <= 3 || c <= 2 || (r <= 40 && c > r) || (r > 40 && r <= 100 && c > r + (r - 40) / 60.0 * r))
+    if (r <= 3 || c <= 2 || (r <= 20 && c > r) || (r > 20 && r <= 100 && c > r + (r - 20) / 80.0 * r))
         return fmpz_mat_rref_fflu(R, den, A);
     else
         return fmpz_mat_rref_mul(R, den, A);