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

mercurial at gmplib.org mercurial at gmplib.org
Mon Mar 2 08:10:43 CET 2026


details:   /var/hg/gmp/rev/48b8f3a3c4ce
changeset: 18497:48b8f3a3c4ce
user:      Marco Bodrato <bodrato at mail.dm.unipi.it>
date:      Mon Mar 02 08:06:23 2026 +0100
description:
tune/speed.[ch]: mpn_perfect_square_p, add FLAG_R_OPTIONAL, for zeroed limbs

details:   /var/hg/gmp/rev/bd3da14bae9f
changeset: 18498:bd3da14bae9f
user:      Marco Bodrato <bodrato at mail.dm.unipi.it>
date:      Mon Mar 02 08:09:06 2026 +0100
description:
ChangeLog

diffstat:

 ChangeLog    |  4 +++-
 tune/speed.c |  4 ++--
 tune/speed.h |  3 ++-
 3 files changed, 7 insertions(+), 4 deletions(-)

diffs (41 lines):

diff -r 65417ef46494 -r bd3da14bae9f ChangeLog
--- a/ChangeLog	Sun Mar 01 19:01:58 2026 +0100
+++ b/ChangeLog	Mon Mar 02 08:09:06 2026 +0100
@@ -6,7 +6,9 @@
 	* tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNP1_CALL):
 	Use k=11 only when available.
 
-	* tune/speed.h (SPEED_ROUTINE_MPN_PERFECT_SQUARE): Support size 1.
+	* tune/speed.c (mpn_perfect_square_p): Add FLAG_R_OPTIONAL.
+	* tune/speed.h (SPEED_ROUTINE_MPN_PERFECT_SQUARE): Support size 1,
+	and zero lower limbs, depending on FLAG_R.
 
 2025-09-24  Niels Möller  <nisse at lysator.liu.se>
 
diff -r 65417ef46494 -r bd3da14bae9f tune/speed.c
--- a/tune/speed.c	Sun Mar 01 19:01:58 2026 +0100
+++ b/tune/speed.c	Mon Mar 02 08:09:06 2026 +0100
@@ -418,8 +418,8 @@
   { "mpn_sqrt",          speed_mpn_sqrt             },
   { "mpn_root",          speed_mpn_root, FLAG_R     },
 
-  { "mpn_perfect_power_p",  speed_mpn_perfect_power_p,       },
-  { "mpn_perfect_square_p", speed_mpn_perfect_square_p,      },
+  { "mpn_perfect_power_p",  speed_mpn_perfect_power_p,			},
+  { "mpn_perfect_square_p", speed_mpn_perfect_square_p, FLAG_R_OPTIONAL },
 
   { "mpn_fib2_ui",       speed_mpn_fib2_ui,    FLAG_NODATA },
   { "mpz_fib_ui",        speed_mpz_fib_ui,     FLAG_NODATA },
diff -r 65417ef46494 -r bd3da14bae9f tune/speed.h
--- a/tune/speed.h	Sun Mar 01 19:01:58 2026 +0100
+++ b/tune/speed.h	Mon Mar 02 08:09:06 2026 +0100
@@ -3656,7 +3656,8 @@
     double    t;							\
 									\
     SPEED_RESTRICT_COND (s->size >= 1);					\
-    mpz_init_set_n (r, s->xp, (s->size + 1) / 2);			\
+    mpz_init_set_n (r, s->xp, MAX((s->size + 1), s->r) / 2 - s->r / 2);	\
+    mpz_mul_2exp (r, r, MIN (s->r, s->size) * GMP_NUMB_BITS / 2);	\
     mpz_fdiv_r_2exp (r, r, s->size * GMP_NUMB_BITS / 2);		\
     mpz_setbit (r, s->size * GMP_NUMB_BITS / 2 - 1);			\
     mpz_mul (r, r, r);							\


More information about the gmp-commit mailing list