[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