[Gmp-commit] /var/hg/gmp: 2 new changesets

mercurial at gmplib.org mercurial at gmplib.org
Fri Jul 3 14:53:27 CEST 2026


details:   /var/hg/gmp/rev/c477d63195ed
changeset: 18550:c477d63195ed
user:      Marco Bodrato <bodrato at mail.dm.unipi.it>
date:      Fri Jul 03 14:49:23 2026 +0200
description:
tune/modlinv.c (binvert_limb_pipe_f): Correct an ASSERT

details:   /var/hg/gmp/rev/8d1d4f3b2d7e
changeset: 18551:8d1d4f3b2d7e
user:      Marco Bodrato <bodrato at mail.dm.unipi.it>
date:      Fri Jul 03 14:53:20 2026 +0200
description:
mpn/generic/sqrtrem.c: Microoptimizations

diffstat:

 mpn/generic/sqrtrem.c |  12 ++++++------
 tune/modlinv.c        |   2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diffs (69 lines):

diff -r 70fcc78764e4 -r 8d1d4f3b2d7e mpn/generic/sqrtrem.c
--- a/mpn/generic/sqrtrem.c	Thu Jul 02 14:13:11 2026 +0200
+++ b/mpn/generic/sqrtrem.c	Fri Jul 03 14:53:20 2026 +0200
@@ -237,7 +237,7 @@
   ASSERT (n > 1);
   ASSERT (np[2 * n - 1] >= GMP_NUMB_HIGHBIT / 2);
 
-  l = n / 2;
+  l = n >> 1;
   h = n - l;
   if (h == 1)
     q = CALL_SQRTREM2_INPLACE (sp + l, np + 2 * l);
@@ -325,7 +325,7 @@
   ASSERT (n > 4);
   ASSERT (nsh < GMP_NUMB_BITS / 2);
 
-  l = (n - 1) / 2;
+  l = (n - 1) >> 1;
   h = n - l;
   ASSERT (n >= l + 2 && l + 2 >= h && h > l && l >= 1 + odd);
   scratch = TMP_ALLOC_LIMBS (l + 2 * n + 5 - USE_DIVAPPR_Q); /* n + 2-USE_DIVAPPR_Q */
@@ -430,7 +430,7 @@
 mpn_sqrtrem (mp_ptr sp, mp_ptr rp, mp_srcptr np, mp_size_t nn)
 {
   mp_limb_t cc, high, rl;
-  int c;
+  unsigned c;
   mp_size_t rn, tn;
   TMP_DECL;
 
@@ -494,7 +494,7 @@
 	return rl != 0;
       }
   }
-  tn = (nn + 1) / 2; /* 2*tn is the smallest even integer >= nn */
+  tn = (nn + 1) >> 1; /* 2*tn is the smallest even integer >= nn */
 
   if ((rp == NULL) && (nn > 8))
     return mpn_dc_sqrt (sp, np, tn, c, nn & 1);
@@ -503,7 +503,7 @@
     {
       mp_limb_t s0[1], mask;
       mp_ptr tp, scratch;
-      TMP_ALLOC_LIMBS_2 (tp, 2 * tn, scratch, tn / 2 + 1);
+      TMP_ALLOC_LIMBS_2 (tp, 2 * tn, scratch, (tn >> 1) + 1);
       tp[0] = 0;	     /* needed only when 2*tn > nn, but saves a test */
       if (c != 0)
 	mpn_lshift (tp + (nn & 1), np, nn, 2 * c);
@@ -544,7 +544,7 @@
 	    rp = TMP_SALLOC_LIMBS (nn);
 	  MPN_COPY (rp, np, nn);
 	}
-      rn = tn + (rp[tn] = mpn_dc_sqrtrem (sp, rp, tn, 0, TMP_ALLOC_LIMBS(tn / 2 + 1)));
+      rn = tn + (rp[tn] = mpn_dc_sqrtrem (sp, rp, tn, 0, TMP_ALLOC_LIMBS((tn >> 1) + 1)));
     }
 
   MPN_NORMALIZE (rp, rn);
diff -r 70fcc78764e4 -r 8d1d4f3b2d7e tune/modlinv.c
--- a/tune/modlinv.c	Thu Jul 02 14:13:11 2026 +0200
+++ b/tune/modlinv.c	Fri Jul 03 14:53:20 2026 +0200
@@ -141,7 +141,7 @@
       } while (__invbits < GMP_NUMB_BITS);
     }
 
-  ASSERT ((__inv * __n & GMP_NUMB_MASK) == 1);
+  ASSERT ((__inv * n & GMP_NUMB_MASK) == 1);
   return __inv & GMP_NUMB_MASK;
 }
 #define binvert_limb_pipe(inv,n) inv = binvert_limb_pipe_f (n)


More information about the gmp-commit mailing list