From mercurial at gmplib.org Thu Aug 11 22:58:55 2022 From: mercurial at gmplib.org (mercurial at gmplib.org) Date: Thu, 11 Aug 2022 22:58:55 +0200 Subject: [Gmp-commit] /var/hg/gmp: mpz/primorial_ui.c: Rename a variable used in a loo... Message-ID: details: /var/hg/gmp/rev/d337756619a0 changeset: 18364:d337756619a0 user: Marco Bodrato date: Thu Aug 11 22:58:46 2022 +0200 description: mpz/primorial_ui.c: Rename a variable used in a loop, for clarity diffstat: mpz/primorial_ui.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diffs (14 lines): diff -r cc75cab76738 -r d337756619a0 mpz/primorial_ui.c --- a/mpz/primorial_ui.c Sun Jun 19 15:30:05 2022 +0200 +++ b/mpz/primorial_ui.c Thu Aug 11 22:58:46 2022 +0200 @@ -102,8 +102,8 @@ max_prod = GMP_NUMB_MAX / n; for (mp_limb_t i = 4, *sp = sieve; i < n; i += GMP_LIMB_BITS * 3) - for (mp_limb_t b = i, x = ~ *(sp++); x != 0; b += 3, x >>= 1) - if (x & 1) + for (mp_limb_t b = i, k = ~ *(sp++); k != 0; b += 3, k >>= 1) + if (k & 1) { mp_limb_t prime = b | 1; FACTOR_LIST_STORE (prime, prod, max_prod, factors, j); From mercurial at gmplib.org Tue Aug 16 22:04:00 2022 From: mercurial at gmplib.org (mercurial at gmplib.org) Date: Tue, 16 Aug 2022 22:04:00 +0200 Subject: [Gmp-commit] /var/hg/gmp: 2 new changesets Message-ID: details: /var/hg/gmp/rev/60815c1e8252 changeset: 18365:60815c1e8252 user: Marco Bodrato date: Tue Aug 16 22:01:09 2022 +0200 description: mpz/primorial_ui.c: Rename some variables and add comments details: /var/hg/gmp/rev/e3123b88d012 changeset: 18366:e3123b88d012 user: Marco Bodrato date: Tue Aug 16 22:02:45 2022 +0200 description: ChangeLog diffstat: ChangeLog | 18 ++++++++++++++++++ mini-gmp/ChangeLog | 3 +++ mpz/primorial_ui.c | 27 ++++++++++++++++----------- 3 files changed, 37 insertions(+), 11 deletions(-) diffs (110 lines): diff -r d337756619a0 -r e3123b88d012 ChangeLog --- a/ChangeLog Thu Aug 11 22:58:46 2022 +0200 +++ b/ChangeLog Tue Aug 16 22:02:45 2022 +0200 @@ -1,3 +1,21 @@ +2022-08-11 Marco Bodrato + + * mpz/primorial_ui.c: Rename some variables and add comments. + +2022-06-19 Marco Bodrato + + * mpz/millerrabin.c: Use mp_bitcnt_t. + * mpz/stronglucas.c: Skip some impossible values searching for D. + +2022-05-14 Marco Bodrato + + * mpz/nextprime.c: Smaller operand for mpz_sqrt. + * tests/mpz/t-nextprime.c: Exit on error. + * tests/mpz/t-pprime_p.c: More cases to trigger unlikely branches. + + * tests/mpz/t-aorsmul.c: Test the (r,x,x) case. + * mpz/aorsmul.c: Speed-up the (r,x,x) case (tx:Fredrik Johansson). + 2022-04-18 Marc Glisse * gmpxx.h (mpz_class): Do not use mp directly. diff -r d337756619a0 -r e3123b88d012 mini-gmp/ChangeLog --- a/mini-gmp/ChangeLog Thu Aug 11 22:58:46 2022 +0200 +++ b/mini-gmp/ChangeLog Tue Aug 16 22:02:45 2022 +0200 @@ -1,3 +1,6 @@ +2022-05-29 Marco Bodrato + * mini-mpq.c (mpq_helper_2exp): New helper (internal) function. + 2022-04-18 Niels M?ller * mini-gmp.c (gmp_assert_nocarry): Avoid warning about unused diff -r d337756619a0 -r e3123b88d012 mpz/primorial_ui.c --- a/mpz/primorial_ui.c Thu Aug 11 22:58:46 2022 +0200 +++ b/mpz/primorial_ui.c Tue Aug 16 22:02:45 2022 +0200 @@ -1,4 +1,4 @@ -/* mpz_primorial_ui(RESULT, N) -- Set RESULT to N# the product of primes <= N. +/* mpz_primorial_ui(RES, N) -- Set RES to N# the product of primes <= N. Contributed to the GNU project by Marco Bodrato. @@ -66,14 +66,16 @@ /*********************************************************/ void -mpz_primorial_ui (mpz_ptr x, unsigned long n) +mpz_primorial_ui (mpz_ptr res, unsigned long n) { ASSERT (n <= GMP_NUMB_MAX); if (n < 5) { - MPZ_NEWALLOC (x, 1)[0] = (066211 >> (n*3)) & 7; - SIZ (x) = 1; + /* The smallest 5 results for primorial are stored */ + /* in a 15-bits constant (five octal digits) */ + MPZ_NEWALLOC (res, 1)[0] = (066211 >> (n * 3)) & 7; + SIZ (res) = 1; } else { @@ -82,10 +84,12 @@ mp_limb_t prod; TMP_DECL; + /* Try to estimate the result size, to avoid */ + /* resizing, and to initially store the sieve. */ size = n / GMP_NUMB_BITS; size = size + (size >> 1) + 1; ASSERT (size >= primesieve_size (n)); - sieve = MPZ_NEWALLOC (x, size); + sieve = MPZ_NEWALLOC (res, size); size = (gmp_primesieve (sieve, n) + 1) / log_n_max (n) + 1; TMP_MARK; @@ -101,24 +105,25 @@ max_prod = GMP_NUMB_MAX / n; + /* Loop on sieved primes. */ for (mp_limb_t i = 4, *sp = sieve; i < n; i += GMP_LIMB_BITS * 3) - for (mp_limb_t b = i, k = ~ *(sp++); k != 0; b += 3, k >>= 1) - if (k & 1) + for (mp_limb_t b = i, x = ~ *(sp++); x != 0; b += 3, x >>= 1) + if (x & 1) { mp_limb_t prime = b | 1; - FACTOR_LIST_STORE (prime, prod, max_prod, factors, j); + FACTOR_LIST_STORE (prime, prod, max_prod, factors, j); } } if (j != 0) { factors[j++] = prod; - mpz_prodlimbs (x, factors, j); + mpz_prodlimbs (res, factors, j); } else { - PTR (x)[0] = prod; - SIZ (x) = 1; + PTR (res)[0] = prod; + SIZ (res) = 1; } TMP_FREE; From mercurial at gmplib.org Sat Aug 20 18:44:25 2022 From: mercurial at gmplib.org (mercurial at gmplib.org) Date: Sat, 20 Aug 2022 18:44:25 +0200 Subject: [Gmp-commit] /var/hg/gmp: NEWS Message-ID: details: /var/hg/gmp/rev/b0d6b9f5807e changeset: 18367:b0d6b9f5807e user: Marco Bodrato date: Sat Aug 20 18:44:17 2022 +0200 description: NEWS diffstat: NEWS | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diffs (13 lines): diff -r e3123b88d012 -r b0d6b9f5807e NEWS --- a/NEWS Tue Aug 16 22:02:45 2022 +0200 +++ b/NEWS Sat Aug 20 18:44:17 2022 +0200 @@ -21,6 +21,9 @@ * Speedup for the function mpz_nextprime on large operands. + * Speedup for multiplications (some sizes only) thanks to new + internal functions to compute small negacyclic products. + Changes between GMP version 6.1.* and 6.2.0 BUGS FIXED