[Gmp-commit] /var/hg/gmp: mpn/generic/bsqrtinv.c: At first iterate on a singl...
mercurial at gmplib.org
mercurial at gmplib.org
Wed Jun 17 08:50:08 CEST 2026
details: /var/hg/gmp/rev/367030886996
changeset: 18507:367030886996
user: Marco Bodrato <bodrato at mail.dm.unipi.it>
date: Tue Jun 16 18:15:41 2026 +0200
description:
mpn/generic/bsqrtinv.c: At first iterate on a single limb.
diffstat:
mpn/generic/bsqrtinv.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diffs (26 lines):
diff -r a89e395f552d -r 367030886996 mpn/generic/bsqrtinv.c
--- a/mpn/generic/bsqrtinv.c Mon Jun 15 18:40:11 2026 +0200
+++ b/mpn/generic/bsqrtinv.c Tue Jun 16 18:15:41 2026 +0200
@@ -72,11 +72,20 @@
}
else
{
- if ((yp[0] & 7) != 1)
+ mp_limb_t t0, r0, y0 = *yp;
+
+ if ((y0 & 7) != 1)
return 0;
+ r0 = 33 + ((y0 & 8) * 5 >> 2) - ((y0 & 16) >> 1);
+ do {
+ t0 = r0 * r0 * y0 >> 1;
+ r0 -= r0 * t0;
+ } while ((t0 & (GMP_NUMB_MAX >> (GMP_NUMB_BITS >> 1))) != 0);
+ *rp = r0 & GMP_NUMB_MAX;
+
d = 0;
- for (; bnb != 2; bnb = (bnb + 2) >> 1)
+ for (; bnb >= GMP_NUMB_BITS; bnb = (bnb + 2) >> 1)
order[d++] = bnb;
for (i = d - 1; i >= 0; i--)
More information about the gmp-commit
mailing list