diff --git a/mpfr-4.1.0-p7.diff b/mpfr-4.1.0-p7.diff deleted file mode 100644 index 4174ccb..0000000 --- a/mpfr-4.1.0-p7.diff +++ /dev/null @@ -1,1581 +0,0 @@ -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:40:40.079363480 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:40:40.119363040 +0000 -@@ -0,0 +1 @@ -+decimal128-conv -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2020-07-10 11:52:33.000000000 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:40:40.119363040 +0000 -@@ -1 +1 @@ --4.1.0 -+4.1.0-p1 -diff -Naurd mpfr-4.1.0-a/src/get_d128.c mpfr-4.1.0-b/src/get_d128.c ---- mpfr-4.1.0-a/src/get_d128.c 2020-04-08 22:39:35.000000000 +0000 -+++ mpfr-4.1.0-b/src/get_d128.c 2021-02-11 12:40:40.103363216 +0000 -@@ -40,22 +40,21 @@ - static _Decimal128 - get_decimal128_nan (void) - { -- return (_Decimal128) MPFR_DBL_NAN; -+ return 0.0dl / 0.0dl; - } - - /* construct the decimal128 Inf with given sign */ - static _Decimal128 - get_decimal128_inf (int negative) - { -- return (_Decimal128) (negative ? MPFR_DBL_INFM : MPFR_DBL_INFP); -+ return negative ? - 1.0dl / 0.0dl : 1.0dl / 0.0dl; - } - - /* construct the decimal128 zero with given sign */ - static _Decimal128 - get_decimal128_zero (int negative) - { -- _Decimal128 zero = 0; -- return (_Decimal128) (negative ? -zero : zero); -+ return negative ? - 0.0dl : 0.0dl; - } - - /* construct the decimal128 smallest non-zero with given sign: -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2020-07-10 11:52:33.000000000 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:40:40.115363084 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0" -+#define MPFR_VERSION_STRING "4.1.0-p1" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2020-07-10 11:52:33.000000000 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:40:40.119363040 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0"; -+ return "4.1.0-p1"; - } -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:43:51.761257868 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:43:51.801257430 +0000 -@@ -0,0 +1 @@ -+random_deviate -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2021-02-11 12:40:40.119363040 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:43:51.801257430 +0000 -@@ -1 +1 @@ --4.1.0-p1 -+4.1.0-p2 -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2021-02-11 12:40:40.115363084 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:43:51.801257430 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0-p1" -+#define MPFR_VERSION_STRING "4.1.0-p2" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd mpfr-4.1.0-a/src/random_deviate.c mpfr-4.1.0-b/src/random_deviate.c ---- mpfr-4.1.0-a/src/random_deviate.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/random_deviate.c 2021-02-11 12:43:51.789257562 +0000 -@@ -289,6 +289,7 @@ - mpfr_random_size_t p = mpfr_get_prec (z); /* Number of bits in result */ - mpz_t t; - int inex; -+ mpfr_exp_t negxe; - - if (n == 0) - { -@@ -370,14 +371,22 @@ - mpz_setbit (t, 0); /* Set the trailing bit so result is always inexact */ - if (neg) - mpz_neg (t, t); -- /* Is -x->e representable as a mpfr_exp_t? */ -- MPFR_ASSERTN (x->e <= (mpfr_uexp_t)(-1) >> 1); -+ /* Portable version of the negation of x->e, with a check of overflow. */ -+ if (MPFR_UNLIKELY (x->e > MPFR_EXP_MAX)) -+ { -+ /* Overflow, except when x->e = MPFR_EXP_MAX + 1 = - MPFR_EXP_MIN. */ -+ MPFR_ASSERTN (MPFR_EXP_MIN + MPFR_EXP_MAX == -1 && -+ x->e == (mpfr_random_size_t) MPFR_EXP_MAX + 1); -+ negxe = MPFR_EXP_MIN; -+ } -+ else -+ negxe = - (mpfr_exp_t) x->e; - /* - * Let mpfr_set_z_2exp do all the work of rounding to the requested - * precision, setting overflow/underflow flags, and returning the right - * inexact value. - */ -- inex = mpfr_set_z_2exp (z, t, -x->e, rnd); -+ inex = mpfr_set_z_2exp (z, t, negxe, rnd); - mpz_clear (t); - return inex; - } -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2021-02-11 12:40:40.119363040 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:43:51.801257430 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0-p1"; -+ return "4.1.0-p2"; - } -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:46:49.075316772 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:46:49.115316335 +0000 -@@ -0,0 +1 @@ -+set_z_2exp-overflow -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2021-02-11 12:43:51.801257430 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:46:49.115316335 +0000 -@@ -1 +1 @@ --4.1.0-p2 -+4.1.0-p3 -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2021-02-11 12:43:51.801257430 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:46:49.115316335 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0-p2" -+#define MPFR_VERSION_STRING "4.1.0-p3" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd mpfr-4.1.0-a/src/set_z_exp.c mpfr-4.1.0-b/src/set_z_exp.c ---- mpfr-4.1.0-a/src/set_z_exp.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/set_z_exp.c 2021-02-11 12:46:49.103316466 +0000 -@@ -28,10 +28,11 @@ - int - mpfr_set_z_2exp (mpfr_ptr f, mpz_srcptr z, mpfr_exp_t e, mpfr_rnd_t rnd_mode) - { -- mp_size_t fn, zn, dif, en; -+ mp_size_t fn, zn, dif; - int k, sign_z, inex; - mp_limb_t *fp, *zp; -- mpfr_exp_t exp; -+ mpfr_exp_t exp, nmax; -+ mpfr_uexp_t uexp; - - sign_z = mpz_sgn (z); - if (MPFR_UNLIKELY (sign_z == 0)) /* ignore the exponent for 0 */ -@@ -43,10 +44,15 @@ - MPFR_ASSERTD (sign_z == MPFR_SIGN_POS || sign_z == MPFR_SIGN_NEG); - - zn = ABSIZ(z); /* limb size of z */ -- /* compute en = floor(e/GMP_NUMB_BITS) */ -- en = (e >= 0) ? e / GMP_NUMB_BITS : (e + 1) / GMP_NUMB_BITS - 1; - MPFR_ASSERTD (zn >= 1); -- if (MPFR_UNLIKELY (zn + en > MPFR_EMAX_MAX / GMP_NUMB_BITS + 1)) -+ nmax = MPFR_EMAX_MAX / GMP_NUMB_BITS + 1; -+ /* Detect early overflow with zn + en > nmax, -+ where en = floor(e / GMP_NUMB_BITS). -+ This is checked without an integer overflow (even assuming some -+ future version of GMP, where limitations may be removed). */ -+ if (MPFR_UNLIKELY (e >= 0 ? -+ zn > nmax - e / GMP_NUMB_BITS : -+ zn + (e + 1) / GMP_NUMB_BITS - 1 > nmax)) - return mpfr_overflow (f, rnd_mode, sign_z); - /* because zn + en >= MPFR_EMAX_MAX / GMP_NUMB_BITS + 2 - implies (zn + en) * GMP_NUMB_BITS >= MPFR_EMAX_MAX + GMP_NUMB_BITS + 1 -@@ -64,8 +70,21 @@ - and exp = zn * GMP_NUMB_BITS + e - k - <= (zn + en) * GMP_NUMB_BITS - k + GMP_NUMB_BITS - 1 - <= MPFR_EMAX_MAX + 2 * GMP_NUMB_BITS - 1 */ -- exp = (mpfr_prec_t) zn * GMP_NUMB_BITS + e - k; -+ /* We need to compute exp = zn * GMP_NUMB_BITS + e - k with well-defined -+ operations (no integer overflows / no implementation-defined results). -+ The mathematical result of zn * GMP_NUMB_BITS may be larger than -+ the largest value of mpfr_exp_t while exp could still be less than -+ __gmpfr_emax. Thanks to early overflow detection, we can compute the -+ result in modular arithmetic, using mpfr_uexp_t, and convert it to -+ mpfr_exp_t. */ -+ uexp = (mpfr_uexp_t) zn * GMP_NUMB_BITS + (mpfr_uexp_t) e - k; -+ -+ /* Convert to signed in a portable way (see doc/README.dev). -+ On most platforms, this can be optimized to identity (no-op). */ -+ exp = uexp > MPFR_EXP_MAX ? -1 - (mpfr_exp_t) ~uexp : (mpfr_exp_t) uexp; -+ - /* The exponent will be exp or exp + 1 (due to rounding) */ -+ - if (MPFR_UNLIKELY (exp > __gmpfr_emax)) - return mpfr_overflow (f, rnd_mode, sign_z); - if (MPFR_UNLIKELY (exp + 1 < __gmpfr_emin)) -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2021-02-11 12:43:51.801257430 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:46:49.115316335 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0-p2"; -+ return "4.1.0-p3"; - } -diff -Naurd mpfr-4.1.0-a/tests/tset_z_exp.c mpfr-4.1.0-b/tests/tset_z_exp.c ---- mpfr-4.1.0-a/tests/tset_z_exp.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tset_z_exp.c 2021-02-11 12:46:49.103316466 +0000 -@@ -97,49 +97,149 @@ - mpfr_get_si is a rather indirect test of a low level routine. */ - - static void --check (long i, mpfr_rnd_t rnd) -+check (long i, mpfr_rnd_t rnd, int reduced) - { -- mpfr_t f; -+ mpfr_t f1, f2, f3; - mpz_t z; -- mpfr_exp_t e; -+ mpfr_exp_t e, old_emin, old_emax; - int inex; -+ mpfr_flags_t flags; -+ -+ old_emin = mpfr_get_emin (); -+ old_emax = mpfr_get_emax (); - - /* using CHAR_BIT * sizeof(long) bits of precision ensures that - mpfr_set_z_2exp is exact below */ -- mpfr_init2 (f, CHAR_BIT * sizeof(long)); -+ mpfr_inits2 (CHAR_BIT * sizeof(long), f1, f2, f3, (mpfr_ptr) 0); - mpz_init (z); - mpz_set_ui (z, i); - /* the following loop ensures that no overflow occurs */ - do - e = randexp (); - while (e > mpfr_get_emax () - CHAR_BIT * sizeof(long)); -- inex = mpfr_set_z_2exp (f, z, e, rnd); -- if (inex != 0) -+ -+ mpfr_clear_flags (); -+ inex = mpfr_set_z_2exp (f1, z, e, rnd); -+ flags = __gmpfr_flags; -+ -+ if (inex != 0 || flags != 0 || -+ (mpfr_div_2si (f2, f1, e, rnd), mpfr_get_si (f2, MPFR_RNDZ) != i)) - { -- printf ("Error in mpfr_set_z_2exp for i=%ld, e=%ld," -- " wrong ternary value\n", i, (long) e); -- printf ("expected 0, got %d\n", inex); -+ printf ("Error in mpfr_set_z_2exp for i=%ld e=%" MPFR_EXP_FSPEC -+ "d rnd_mode=%d\n", i, (mpfr_eexp_t) e, rnd); -+ mpfr_set_si_2exp (f2, i, e, MPFR_RNDN); -+ printf ("expected "); mpfr_dump (f2); -+ printf ("with inex = %d and flags =", 0); -+ flags_out (0); -+ printf ("got "); mpfr_dump (f1); -+ printf ("with inex = %d and flags =", inex); -+ flags_out (flags); - exit (1); - } -- mpfr_div_2si (f, f, e, rnd); -- if (mpfr_get_si (f, MPFR_RNDZ) != i) -+ -+ if (reduced) - { -- printf ("Error in mpfr_set_z_2exp for i=%ld e=", i); -- if (e < LONG_MIN) -- printf ("( LONG_MAX) -- printf ("(>LONG_MAX)"); -- else -- printf ("%ld", (long) e); -- printf (" rnd_mode=%d\n", rnd); -- printf ("expected %ld\n", i); -- printf ("got "); mpfr_dump (f); -- exit (1); -+ mpfr_exp_t ef, emin, emax; -+ int inex2, inex3; -+ mpfr_flags_t flags2, flags3; -+ -+ ef = i == 0 ? 0 : mpfr_get_exp (f1); -+ for (emin = ef - 2; emin <= ef + 2; emin++) -+ for (emax = emin; emax <= ef + 2; emax++) -+ { -+ inex3 = mpfr_set (f3, f1, rnd); -+ MPFR_ASSERTN (inex3 == 0); -+ mpfr_set_emin (emin); -+ mpfr_set_emax (emax); -+ mpfr_clear_flags (); -+ inex2 = mpfr_set_z_2exp (f2, z, e, rnd); -+ flags2 = __gmpfr_flags; -+ mpfr_clear_flags (); -+ inex3 = mpfr_check_range (f3, 0, rnd); -+ flags3 = __gmpfr_flags; -+ if (!(mpfr_equal_p (f2, f3) && -+ SAME_SIGN (inex2, inex3) && -+ flags2 == flags3)) -+ { -+ printf ("Error in mpfr_set_z_2exp for i=%ld e=%" -+ MPFR_EXP_FSPEC "d rnd_mode=%d\nand emin=%" -+ MPFR_EXP_FSPEC "d emax=%" MPFR_EXP_FSPEC -+ "d\n", i, (mpfr_eexp_t) e, rnd, -+ (mpfr_eexp_t) emin, (mpfr_eexp_t) emax); -+ printf ("expected "); mpfr_dump (f3); -+ printf ("with inex = %d and flags =", inex3); -+ flags_out (flags3); -+ printf ("got "); mpfr_dump (f2); -+ printf ("with inex = %d and flags =", inex2); -+ flags_out (flags2); -+ exit (1); -+ } -+ } -+ mpfr_set_emin (old_emin); -+ mpfr_set_emax (old_emax); - } -- mpfr_clear (f); -+ -+ mpfr_clears (f1, f2, f3, (mpfr_ptr) 0); - mpz_clear (z); - } - -+static void -+check_huge (void) -+{ -+ if (getenv ("MPFR_CHECK_LARGEMEM") != NULL) -+ { -+ mpfr_t x; -+ mpz_t z; -+ long e; -+ -+ /* Increase tests_memory_limit to the maximum in order to avoid -+ an obvious failure due to insufficient memory. */ -+ tests_memory_limit = (size_t) -1; /* no memory limit */ -+ -+ mpfr_init2 (x, 32); -+ -+ /* In r14140, with a 32-bit ABI (GCC's -m32): -+ - With UBsan (-fsanitize=undefined -fno-sanitize-recover), -+ this fails with: -+ set_z_2exp.c:71:26: runtime error: signed integer overflow: -+ 67108864 * 32 cannot be represented in type 'long int' -+ - With -D_MPFR_EXP_FORMAT=4, this fails with: -+ Expected 0.10001000000000000000000000000000E5 -+ Got 0 -+ */ -+ mpz_init_set_ui (z, 17); -+ e = 0x7ffffff0; -+ mpz_mul_2exp (z, z, e); -+ mpz_add_ui (z, z, 1); -+ mpfr_set_z_2exp (x, z, -e, MPFR_RNDN); -+ if (mpfr_cmp_ui0 (x, 17) != 0) -+ { -+ printf ("Error 1 in check_huge\n"); -+ printf ("Expected 0.10001000000000000000000000000000E5\n"); -+ printf ("Got "); -+ mpfr_dump (x); -+ exit (1); -+ } -+ mpz_clear (z); -+ -+ mpz_init_set_ui (z, 17); -+ mpz_mul_2exp (z, z, 0xffffffb0); -+ mpz_add_ui (z, z, 1); -+ mpfr_set_z_2exp (x, z, -1, MPFR_RNDN); -+ if (! MPFR_IS_INF (x) || MPFR_IS_NEG (x)) -+ { -+ printf ("Error 2 in check_huge\n"); -+ printf ("Expected @Inf@\n"); -+ printf ("Got "); -+ mpfr_dump (x); -+ exit (1); -+ } -+ mpz_clear (z); -+ -+ mpfr_clear (x); -+ } -+} -+ - int - main (int argc, char *argv[]) - { -@@ -147,11 +247,13 @@ - - tests_start_mpfr (); - -- check (0, MPFR_RNDN); -+ check (0, MPFR_RNDN, 0); - for (j = 0; j < 200000; j++) -- check (randlimb () & LONG_MAX, RND_RAND ()); -+ check (randlimb () & LONG_MAX, RND_RAND (), j < 200); - check0 (); - -+ check_huge (); -+ - tests_end_mpfr (); - - return 0; -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:48:27.322243271 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:48:27.370242746 +0000 -@@ -0,0 +1 @@ -+prototypes -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2021-02-11 12:46:49.115316335 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:48:27.370242746 +0000 -@@ -1 +1 @@ --4.1.0-p3 -+4.1.0-p4 -diff -Naurd mpfr-4.1.0-a/src/atan.c mpfr-4.1.0-b/src/atan.c ---- mpfr-4.1.0-a/src/atan.c 2020-04-22 15:27:07.000000000 +0000 -+++ mpfr-4.1.0-b/src/atan.c 2021-02-11 12:48:27.354242922 +0000 -@@ -56,7 +56,7 @@ - }; - - static void --set_table (mpfr_t y, const mp_limb_t x[3]) -+set_table (mpfr_ptr y, const mp_limb_t x[3]) - { - mpfr_prec_t p = MPFR_PREC(y); - mp_size_t n = MPFR_PREC2LIMBS(p); -diff -Naurd mpfr-4.1.0-a/src/const_euler.c mpfr-4.1.0-b/src/const_euler.c ---- mpfr-4.1.0-a/src/const_euler.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/const_euler.c 2021-02-11 12:48:27.354242922 +0000 -@@ -181,7 +181,7 @@ - } - - int --mpfr_const_euler_internal (mpfr_t x, mpfr_rnd_t rnd) -+mpfr_const_euler_internal (mpfr_ptr x, mpfr_rnd_t rnd) - { - mpfr_const_euler_bs_t sum; - mpz_t t, u, v; -diff -Naurd mpfr-4.1.0-a/src/eint.c mpfr-4.1.0-b/src/eint.c ---- mpfr-4.1.0-a/src/eint.c 2020-03-09 15:31:45.000000000 +0000 -+++ mpfr-4.1.0-b/src/eint.c 2021-02-11 12:48:27.354242922 +0000 -@@ -36,7 +36,7 @@ - Return PREC(y) when the truncated series does not converge. - */ - static mpfr_exp_t --mpfr_eint_aux (mpfr_t y, mpfr_srcptr x) -+mpfr_eint_aux (mpfr_ptr y, mpfr_srcptr x) - { - mpfr_t eps; /* dynamic (absolute) error bound on t */ - mpfr_t erru, errs; -diff -Naurd mpfr-4.1.0-a/src/erandom.c mpfr-4.1.0-b/src/erandom.c ---- mpfr-4.1.0-a/src/erandom.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/erandom.c 2021-02-11 12:48:27.354242922 +0000 -@@ -80,7 +80,7 @@ - - /* return an exponential random deviate with mean 1 as a MPFR */ - int --mpfr_erandom (mpfr_t z, gmp_randstate_t r, mpfr_rnd_t rnd) -+mpfr_erandom (mpfr_ptr z, gmp_randstate_t r, mpfr_rnd_t rnd) - { - mpfr_random_deviate_t x, p, q; - int inex; -diff -Naurd mpfr-4.1.0-a/src/fpif.c mpfr-4.1.0-b/src/fpif.c ---- mpfr-4.1.0-a/src/fpif.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/fpif.c 2021-02-11 12:48:27.354242922 +0000 -@@ -291,7 +291,8 @@ - * until one has integer types larger than 128 bits). - */ - static unsigned char* --mpfr_fpif_store_exponent (unsigned char *buffer, size_t *buffer_size, mpfr_t x) -+mpfr_fpif_store_exponent (unsigned char *buffer, size_t *buffer_size, -+ mpfr_ptr x) - { - unsigned char *result; - mpfr_uexp_t uexp; -@@ -372,7 +373,7 @@ - * than 128 bits). - */ - static int --mpfr_fpif_read_exponent_from_file (mpfr_t x, FILE * fh) -+mpfr_fpif_read_exponent_from_file (mpfr_ptr x, FILE * fh) - { - mpfr_exp_t exponent; - mpfr_uexp_t uexp; -@@ -456,7 +457,7 @@ - * format - */ - static unsigned char* --mpfr_fpif_store_limbs (unsigned char *buffer, size_t *buffer_size, mpfr_t x) -+mpfr_fpif_store_limbs (unsigned char *buffer, size_t *buffer_size, mpfr_ptr x) - { - unsigned char *result; - mpfr_prec_t precision; -@@ -492,7 +493,7 @@ - * Assume buffer is not NULL. - */ - static void --mpfr_fpif_read_limbs (mpfr_t x, unsigned char *buffer, size_t nb_byte) -+mpfr_fpif_read_limbs (mpfr_ptr x, unsigned char *buffer, size_t nb_byte) - { - size_t mp_bytes_per_limb; - size_t nb_partial_byte; -@@ -522,7 +523,7 @@ - * return 0 if successful - */ - int --mpfr_fpif_export (FILE *fh, mpfr_t x) -+mpfr_fpif_export (FILE *fh, mpfr_ptr x) - { - int status; - unsigned char *buf; -@@ -582,7 +583,7 @@ - * Return 0 if the import was successful. - */ - int --mpfr_fpif_import (mpfr_t x, FILE *fh) -+mpfr_fpif_import (mpfr_ptr x, FILE *fh) - { - int status; - mpfr_prec_t precision; -diff -Naurd mpfr-4.1.0-a/src/li2.c mpfr-4.1.0-b/src/li2.c ---- mpfr-4.1.0-a/src/li2.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/li2.c 2021-02-11 12:48:27.354242922 +0000 -@@ -31,7 +31,7 @@ - for determinating the relative error. - */ - static int --li2_series (mpfr_t sum, mpfr_srcptr z, mpfr_rnd_t rnd_mode) -+li2_series (mpfr_ptr sum, mpfr_srcptr z, mpfr_rnd_t rnd_mode) - { - int i; - mpfr_t s, u, v, w; -diff -Naurd mpfr-4.1.0-a/src/lngamma.c mpfr-4.1.0-b/src/lngamma.c ---- mpfr-4.1.0-a/src/lngamma.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/lngamma.c 2021-02-11 12:48:27.354242922 +0000 -@@ -31,7 +31,7 @@ - precision should be >= 4. - */ - static void --mpfr_gamma_alpha (mpfr_t s, mpfr_prec_t p) -+mpfr_gamma_alpha (mpfr_ptr s, mpfr_prec_t p) - { - MPFR_LOG_FUNC - (("p=%Pu", p), -diff -Naurd mpfr-4.1.0-a/src/mpfr-impl.h mpfr-4.1.0-b/src/mpfr-impl.h ---- mpfr-4.1.0-a/src/mpfr-impl.h 2020-06-10 21:50:12.000000000 +0000 -+++ mpfr-4.1.0-b/src/mpfr-impl.h 2021-02-11 12:48:27.354242922 +0000 -@@ -2474,7 +2474,8 @@ - __MPFR_DECLSPEC mpz_srcptr mpfr_bernoulli_cache (unsigned long); - __MPFR_DECLSPEC void mpfr_bernoulli_freecache (void); - --__MPFR_DECLSPEC int mpfr_sincos_fast (mpfr_t, mpfr_t, mpfr_srcptr, mpfr_rnd_t); -+__MPFR_DECLSPEC int mpfr_sincos_fast (mpfr_ptr, mpfr_ptr, mpfr_srcptr, -+ mpfr_rnd_t); - - __MPFR_DECLSPEC double mpfr_scale2 (double, int); - -@@ -2485,7 +2486,7 @@ - mpfr_prec_t); - - __MPFR_DECLSPEC void mpfr_mpz_init (mpz_ptr); --__MPFR_DECLSPEC void mpfr_mpz_init2 (mpz_t, mp_bitcnt_t); -+__MPFR_DECLSPEC void mpfr_mpz_init2 (mpz_ptr, mp_bitcnt_t); - __MPFR_DECLSPEC void mpfr_mpz_clear (mpz_ptr); - - __MPFR_DECLSPEC int mpfr_odd_p (mpfr_srcptr); -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2021-02-11 12:46:49.115316335 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:48:27.366242791 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0-p3" -+#define MPFR_VERSION_STRING "4.1.0-p4" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -@@ -781,8 +781,8 @@ - __MPFR_DECLSPEC int mpfr_strtofr (mpfr_ptr, const char *, char **, int, - mpfr_rnd_t); - --__MPFR_DECLSPEC void mpfr_round_nearest_away_begin (mpfr_t); --__MPFR_DECLSPEC int mpfr_round_nearest_away_end (mpfr_t, int); -+__MPFR_DECLSPEC void mpfr_round_nearest_away_begin (mpfr_ptr); -+__MPFR_DECLSPEC int mpfr_round_nearest_away_end (mpfr_ptr, int); - - __MPFR_DECLSPEC size_t mpfr_custom_get_size (mpfr_prec_t); - __MPFR_DECLSPEC void mpfr_custom_init (void *, mpfr_prec_t); -@@ -1080,10 +1080,12 @@ - #define mpfr_set_uj_2exp __gmpfr_set_uj_2exp - #define mpfr_get_sj __gmpfr_mpfr_get_sj - #define mpfr_get_uj __gmpfr_mpfr_get_uj --__MPFR_DECLSPEC int mpfr_set_sj (mpfr_t, intmax_t, mpfr_rnd_t); --__MPFR_DECLSPEC int mpfr_set_sj_2exp (mpfr_t, intmax_t, intmax_t, mpfr_rnd_t); --__MPFR_DECLSPEC int mpfr_set_uj (mpfr_t, uintmax_t, mpfr_rnd_t); --__MPFR_DECLSPEC int mpfr_set_uj_2exp (mpfr_t, uintmax_t, intmax_t, mpfr_rnd_t); -+__MPFR_DECLSPEC int mpfr_set_sj (mpfr_ptr, intmax_t, mpfr_rnd_t); -+__MPFR_DECLSPEC int mpfr_set_sj_2exp (mpfr_ptr, intmax_t, intmax_t, -+ mpfr_rnd_t); -+__MPFR_DECLSPEC int mpfr_set_uj (mpfr_ptr, uintmax_t, mpfr_rnd_t); -+__MPFR_DECLSPEC int mpfr_set_uj_2exp (mpfr_ptr, uintmax_t, intmax_t, -+ mpfr_rnd_t); - __MPFR_DECLSPEC intmax_t mpfr_get_sj (mpfr_srcptr, mpfr_rnd_t); - __MPFR_DECLSPEC uintmax_t mpfr_get_uj (mpfr_srcptr, mpfr_rnd_t); - -diff -Naurd mpfr-4.1.0-a/src/nrandom.c mpfr-4.1.0-b/src/nrandom.c ---- mpfr-4.1.0-a/src/nrandom.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/nrandom.c 2021-02-11 12:48:27.354242922 +0000 -@@ -155,7 +155,7 @@ - - /* return a normal random deviate with mean 0 and variance 1 as a MPFR */ - int --mpfr_nrandom (mpfr_t z, gmp_randstate_t r, mpfr_rnd_t rnd) -+mpfr_nrandom (mpfr_ptr z, gmp_randstate_t r, mpfr_rnd_t rnd) - { - mpfr_random_deviate_t x, p, q; - int inex; -diff -Naurd mpfr-4.1.0-a/src/pool.c mpfr-4.1.0-b/src/pool.c ---- mpfr-4.1.0-a/src/pool.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/pool.c 2021-02-11 12:48:27.354242922 +0000 -@@ -35,7 +35,7 @@ - static MPFR_THREAD_ATTR __mpz_struct mpz_tab[MPFR_POOL_NENTRIES]; - - MPFR_HOT_FUNCTION_ATTR void --mpfr_mpz_init (mpz_t z) -+mpfr_mpz_init (mpz_ptr z) - { - if (MPFR_LIKELY (n_alloc > 0)) - { -@@ -54,7 +54,7 @@ - } - - MPFR_HOT_FUNCTION_ATTR void --mpfr_mpz_init2 (mpz_t z, mp_bitcnt_t n) -+mpfr_mpz_init2 (mpz_ptr z, mp_bitcnt_t n) - { - /* The condition on n is used below as the argument n will be ignored if - the mpz_t is obtained from the MPFR stack of previously used mpz_t. -@@ -82,7 +82,7 @@ - - - MPFR_HOT_FUNCTION_ATTR void --mpfr_mpz_clear (mpz_t z) -+mpfr_mpz_clear (mpz_ptr z) - { - /* We only put objects with at most MPFR_POOL_MAX_SIZE in the mpz_t pool, - to avoid it takes too much memory (and anyway the speedup is mainly -diff -Naurd mpfr-4.1.0-a/src/random_deviate.c mpfr-4.1.0-b/src/random_deviate.c ---- mpfr-4.1.0-a/src/random_deviate.c 2021-02-11 12:43:51.789257562 +0000 -+++ mpfr-4.1.0-b/src/random_deviate.c 2021-02-11 12:48:27.354242922 +0000 -@@ -64,7 +64,7 @@ - - /* allocate and set to (0,1) */ - void --mpfr_random_deviate_init (mpfr_random_deviate_t x) -+mpfr_random_deviate_init (mpfr_random_deviate_ptr x) - { - mpz_init (x->f); - x->e = 0; -@@ -72,21 +72,22 @@ - - /* reset to (0,1) */ - void --mpfr_random_deviate_reset (mpfr_random_deviate_t x) -+mpfr_random_deviate_reset (mpfr_random_deviate_ptr x) - { - x->e = 0; - } - - /* deallocate */ - void --mpfr_random_deviate_clear (mpfr_random_deviate_t x) -+mpfr_random_deviate_clear (mpfr_random_deviate_ptr x) - { - mpz_clear (x->f); - } - - /* swap two random deviates */ - void --mpfr_random_deviate_swap (mpfr_random_deviate_t x, mpfr_random_deviate_t y) -+mpfr_random_deviate_swap (mpfr_random_deviate_ptr x, -+ mpfr_random_deviate_ptr y) - { - mpfr_random_size_t s; - unsigned long t; -@@ -107,7 +108,7 @@ - - /* ensure x has at least k bits */ - static void --random_deviate_generate (mpfr_random_deviate_t x, mpfr_random_size_t k, -+random_deviate_generate (mpfr_random_deviate_ptr x, mpfr_random_size_t k, - gmp_randstate_t r, mpz_t t) - { - /* Various compile time checks on mpfr_random_deviate_t */ -@@ -223,7 +224,7 @@ - - /* return position of leading bit, counting from 1 */ - static mpfr_random_size_t --random_deviate_leading_bit (mpfr_random_deviate_t x, gmp_randstate_t r) -+random_deviate_leading_bit (mpfr_random_deviate_ptr x, gmp_randstate_t r) - { - mpfr_random_size_t l; - random_deviate_generate (x, W, r, 0); -@@ -243,7 +244,7 @@ - - /* return kth bit of fraction, representing 2^-k */ - int --mpfr_random_deviate_tstbit (mpfr_random_deviate_t x, mpfr_random_size_t k, -+mpfr_random_deviate_tstbit (mpfr_random_deviate_ptr x, mpfr_random_size_t k, - gmp_randstate_t r) - { - if (k == 0) -@@ -256,7 +257,8 @@ - - /* compare two random deviates, x < y */ - int --mpfr_random_deviate_less (mpfr_random_deviate_t x, mpfr_random_deviate_t y, -+mpfr_random_deviate_less (mpfr_random_deviate_ptr x, -+ mpfr_random_deviate_ptr y, - gmp_randstate_t r) - { - mpfr_random_size_t k = 1; -@@ -280,7 +282,7 @@ - /* set mpfr_t z = (neg ? -1 : 1) * (n + x) */ - int - mpfr_random_deviate_value (int neg, unsigned long n, -- mpfr_random_deviate_t x, mpfr_t z, -+ mpfr_random_deviate_ptr x, mpfr_ptr z, - gmp_randstate_t r, mpfr_rnd_t rnd) - { - /* r is used to add as many bits as necessary to match the precision of z */ -diff -Naurd mpfr-4.1.0-a/src/random_deviate.h mpfr-4.1.0-b/src/random_deviate.h ---- mpfr-4.1.0-a/src/random_deviate.h 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/random_deviate.h 2021-02-11 12:48:27.354242922 +0000 -@@ -76,7 +76,7 @@ - /* set mpfr_t z = (neg ? -1 : 1) * (n + x) */ - __MPFR_DECLSPEC int - mpfr_random_deviate_value (int, unsigned long, -- mpfr_random_deviate_ptr, mpfr_t, -+ mpfr_random_deviate_ptr, mpfr_ptr, - gmp_randstate_t, mpfr_rnd_t); - - #if defined(__cplusplus) -diff -Naurd mpfr-4.1.0-a/src/rndna.c mpfr-4.1.0-b/src/rndna.c ---- mpfr-4.1.0-a/src/rndna.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/rndna.c 2021-02-11 12:48:27.354242922 +0000 -@@ -61,7 +61,7 @@ - and prepares rop to give it one more bit of precision - and to save its old value within it. */ - void --mpfr_round_nearest_away_begin (mpfr_t rop) -+mpfr_round_nearest_away_begin (mpfr_ptr rop) - { - mpfr_t tmp; - mp_size_t xsize; -@@ -129,7 +129,7 @@ - copying it back the result of the applied function - and performing additional roundings. */ - int --mpfr_round_nearest_away_end (mpfr_t rop, int inex) -+mpfr_round_nearest_away_end (mpfr_ptr rop, int inex) - { - mpfr_t tmp; - mp_size_t xsize; -diff -Naurd mpfr-4.1.0-a/src/set_sj.c mpfr-4.1.0-b/src/set_sj.c ---- mpfr-4.1.0-a/src/set_sj.c 2020-06-01 10:39:52.000000000 +0000 -+++ mpfr-4.1.0-b/src/set_sj.c 2021-02-11 12:48:27.354242922 +0000 -@@ -26,13 +26,13 @@ - #ifdef _MPFR_H_HAVE_INTMAX_T - - int --mpfr_set_sj (mpfr_t x, intmax_t j, mpfr_rnd_t rnd) -+mpfr_set_sj (mpfr_ptr x, intmax_t j, mpfr_rnd_t rnd) - { - return mpfr_set_sj_2exp (x, j, 0, rnd); - } - - int --mpfr_set_sj_2exp (mpfr_t x, intmax_t j, intmax_t e, mpfr_rnd_t rnd) -+mpfr_set_sj_2exp (mpfr_ptr x, intmax_t j, intmax_t e, mpfr_rnd_t rnd) - { - if (j >= 0) - return mpfr_set_uj_2exp (x, j, e, rnd); -diff -Naurd mpfr-4.1.0-a/src/set_str.c mpfr-4.1.0-b/src/set_str.c ---- mpfr-4.1.0-a/src/set_str.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/set_str.c 2021-02-11 12:48:27.354242922 +0000 -@@ -23,7 +23,7 @@ - #include "mpfr-impl.h" - - int --mpfr_set_str (mpfr_t x, const char *str, int base, mpfr_rnd_t rnd) -+mpfr_set_str (mpfr_ptr x, const char *str, int base, mpfr_rnd_t rnd) - { - char *p; - -diff -Naurd mpfr-4.1.0-a/src/set_uj.c mpfr-4.1.0-b/src/set_uj.c ---- mpfr-4.1.0-a/src/set_uj.c 2020-06-01 10:39:52.000000000 +0000 -+++ mpfr-4.1.0-b/src/set_uj.c 2021-02-11 12:48:27.354242922 +0000 -@@ -29,13 +29,13 @@ - #define uintmaxpml (sizeof(uintmax_t) / sizeof(mp_limb_t)) - - int --mpfr_set_uj (mpfr_t x, uintmax_t j, mpfr_rnd_t rnd) -+mpfr_set_uj (mpfr_ptr x, uintmax_t j, mpfr_rnd_t rnd) - { - return mpfr_set_uj_2exp (x, j, 0, rnd); - } - - int --mpfr_set_uj_2exp (mpfr_t x, uintmax_t j, intmax_t e, mpfr_rnd_t rnd) -+mpfr_set_uj_2exp (mpfr_ptr x, uintmax_t j, intmax_t e, mpfr_rnd_t rnd) - { - int cnt, inex; - mp_size_t i, k; -diff -Naurd mpfr-4.1.0-a/src/sin_cos.c mpfr-4.1.0-b/src/sin_cos.c ---- mpfr-4.1.0-a/src/sin_cos.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/sin_cos.c 2021-02-11 12:48:27.354242922 +0000 -@@ -463,7 +463,7 @@ - Return err such that the relative error is bounded by 2^err ulps. - */ - static int --sincos_aux (mpfr_t s, mpfr_t c, mpfr_srcptr x, mpfr_rnd_t rnd_mode) -+sincos_aux (mpfr_ptr s, mpfr_ptr c, mpfr_srcptr x, mpfr_rnd_t rnd_mode) - { - mpfr_prec_t prec_s, sh; - mpz_t Q, S, C, Q2, S2, C2, y; -@@ -577,7 +577,7 @@ - Assumes s differs from c. - */ - int --mpfr_sincos_fast (mpfr_t s, mpfr_t c, mpfr_srcptr x, mpfr_rnd_t rnd) -+mpfr_sincos_fast (mpfr_ptr s, mpfr_ptr c, mpfr_srcptr x, mpfr_rnd_t rnd) - { - int inexs, inexc; - mpfr_t x_red, ts, tc; -diff -Naurd mpfr-4.1.0-a/src/strtofr.c mpfr-4.1.0-b/src/strtofr.c ---- mpfr-4.1.0-a/src/strtofr.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/strtofr.c 2021-02-11 12:48:27.354242922 +0000 -@@ -226,7 +226,7 @@ - BUT if it returns 0 (NAN or INF), the ternary value is also '0' - (ie NAN and INF are exact) */ - static int --parse_string (mpfr_t x, struct parsed_string *pstr, -+parse_string (mpfr_ptr x, struct parsed_string *pstr, - const char **string, int base) - { - const char *str = *string; -@@ -451,7 +451,7 @@ - and the precision of x. - Returns the ternary value. */ - static int --parsed_string_to_mpfr (mpfr_t x, struct parsed_string *pstr, mpfr_rnd_t rnd) -+parsed_string_to_mpfr (mpfr_ptr x, struct parsed_string *pstr, mpfr_rnd_t rnd) - { - mpfr_prec_t precx, prec, ysize_bits, pstr_size; - mpfr_exp_t exp; -@@ -934,7 +934,7 @@ - } - - int --mpfr_strtofr (mpfr_t x, const char *string, char **end, int base, -+mpfr_strtofr (mpfr_ptr x, const char *string, char **end, int base, - mpfr_rnd_t rnd) - { - int res; -diff -Naurd mpfr-4.1.0-a/src/vasprintf.c mpfr-4.1.0-b/src/vasprintf.c ---- mpfr-4.1.0-a/src/vasprintf.c 2020-06-01 10:39:52.000000000 +0000 -+++ mpfr-4.1.0-b/src/vasprintf.c 2021-02-11 12:48:27.354242922 +0000 -@@ -963,7 +963,7 @@ - #define NDIGITS 8 - - MPFR_RETURNS_NONNULL static char * --mpfr_get_str_wrapper (mpfr_exp_t *exp, int base, size_t n, const mpfr_t op, -+mpfr_get_str_wrapper (mpfr_exp_t *exp, int base, size_t n, mpfr_srcptr op, - const struct printf_spec spec) - { - size_t ndigits; -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2021-02-11 12:46:49.115316335 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:48:27.370242746 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0-p3"; -+ return "4.1.0-p4"; - } -diff -Naurd mpfr-4.1.0-a/src/zeta.c mpfr-4.1.0-b/src/zeta.c ---- mpfr-4.1.0-a/src/zeta.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/src/zeta.c 2021-02-11 12:48:27.354242922 +0000 -@@ -35,7 +35,7 @@ - sum(tc[i]*product((s+2j)*(s+2j-1)/n^2,j=1..i-1), i=1..p)*s*n^(-s-1) - */ - static void --mpfr_zeta_part_b (mpfr_t b, mpfr_srcptr s, int n, int p, mpfr_t *tc) -+mpfr_zeta_part_b (mpfr_ptr b, mpfr_srcptr s, int n, int p, mpfr_t *tc) - { - mpfr_t s1, d, u; - unsigned long n2; -@@ -130,7 +130,7 @@ - n - an integer - Output: sum - a floating-point number approximating sum(1/i^s, i=1..n-1) */ - static void --mpfr_zeta_part_a (mpfr_t sum, mpfr_srcptr s, int n) -+mpfr_zeta_part_a (mpfr_ptr sum, mpfr_srcptr s, int n) - { - mpfr_t u, s1; - int i; -@@ -158,7 +158,7 @@ - Output: z - Zeta(s) rounded to the precision of z with direction rnd_mode - */ - static int --mpfr_zeta_pos (mpfr_t z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) -+mpfr_zeta_pos (mpfr_ptr z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) - { - mpfr_t b, c, z_pre, f, s1; - double beta, sd, dnep; -@@ -356,8 +356,8 @@ - At input, p is Pi rounded down. - The comments in the code are for rnd = RNDD. */ - static void --mpfr_reflection_overflow (mpfr_t z, mpfr_t s1, const mpfr_t s, mpfr_t y, -- mpfr_t p, mpfr_rnd_t rnd) -+mpfr_reflection_overflow (mpfr_ptr z, mpfr_ptr s1, mpfr_srcptr s, mpfr_ptr y, -+ mpfr_ptr p, mpfr_rnd_t rnd) - { - mpz_t sint; - -@@ -432,7 +432,7 @@ - } - - int --mpfr_zeta (mpfr_t z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) -+mpfr_zeta (mpfr_ptr z, mpfr_srcptr s, mpfr_rnd_t rnd_mode) - { - mpfr_t z_pre, s1, y, p; - long add; -diff -Naurd mpfr-4.1.0-a/tests/tcmp2.c mpfr-4.1.0-b/tests/tcmp2.c ---- mpfr-4.1.0-a/tests/tcmp2.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tcmp2.c 2021-02-11 12:48:27.350242965 +0000 -@@ -24,7 +24,7 @@ - - /* set bit n of x to b, where bit 0 is the most significant one */ - static void --set_bit (mpfr_t x, unsigned int n, int b) -+set_bit (mpfr_ptr x, unsigned int n, int b) - { - unsigned l; - mp_size_t xn; -diff -Naurd mpfr-4.1.0-a/tests/tdiv.c mpfr-4.1.0-b/tests/tdiv.c ---- mpfr-4.1.0-a/tests/tdiv.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tdiv.c 2021-02-11 12:48:27.350242965 +0000 -@@ -369,7 +369,7 @@ - /* given y = o(x/u), x, u, find the inexact flag by - multiplying y by u */ - static int --get_inexact (mpfr_t y, mpfr_t x, mpfr_t u) -+get_inexact (mpfr_ptr y, mpfr_ptr x, mpfr_ptr u) - { - mpfr_t xx; - int inex; -diff -Naurd mpfr-4.1.0-a/tests/teq.c mpfr-4.1.0-b/tests/teq.c ---- mpfr-4.1.0-a/tests/teq.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/teq.c 2021-02-11 12:48:27.350242965 +0000 -@@ -23,7 +23,7 @@ - #include "mpfr-test.h" - - static void --teq (mpfr_t x) -+teq (mpfr_ptr x) - { - mpfr_t y; - unsigned long k, px, mx; -diff -Naurd mpfr-4.1.0-a/tests/terandom_chisq.c mpfr-4.1.0-b/tests/terandom_chisq.c ---- mpfr-4.1.0-a/tests/terandom_chisq.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/terandom_chisq.c 2021-02-11 12:48:27.350242965 +0000 -@@ -26,7 +26,7 @@ - * exponential distribution. We only take differences of this function so the - * offset doesn't matter; here Phi(0) = 0. */ - static void --exponential_cumulative (mpfr_t z, mpfr_t x, mpfr_rnd_t rnd) -+exponential_cumulative (mpfr_ptr z, mpfr_ptr x, mpfr_rnd_t rnd) - { - mpfr_neg (z, x, rnd); - mpfr_expm1 (z, z, rnd); -@@ -43,7 +43,7 @@ - * TAOCP, Vol 2, 3.3.1, Table 1. It more accurate than the similar formula, - * DLMF 8.11.10. */ - static void --chisq_prob (mpfr_t q, long nu, mpfr_t chisqp) -+chisq_prob (mpfr_ptr q, long nu, mpfr_ptr chisqp) - { - mpfr_t t; - mpfr_rnd_t rnd; -@@ -170,7 +170,7 @@ - * this function. low precision means prec = 2, 3, or 4. High values of - * precision will result in integer overflow. */ - static long --sequential (mpfr_t x) -+sequential (mpfr_ptr x) - { - long expt, prec; - -diff -Naurd mpfr-4.1.0-a/tests/tfmma.c mpfr-4.1.0-b/tests/tfmma.c ---- mpfr-4.1.0-a/tests/tfmma.c 2020-03-24 13:47:38.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tfmma.c 2021-02-11 12:48:27.350242965 +0000 -@@ -24,7 +24,7 @@ - - /* check both mpfr_fmma and mpfr_fmms */ - static void --random_test (mpfr_t a, mpfr_t b, mpfr_t c, mpfr_t d, mpfr_rnd_t rnd) -+random_test (mpfr_ptr a, mpfr_ptr b, mpfr_ptr c, mpfr_ptr d, mpfr_rnd_t rnd) - { - mpfr_t ref, res, ab, cd; - int inex_ref, inex_res; -diff -Naurd mpfr-4.1.0-a/tests/tfmod.c mpfr-4.1.0-b/tests/tfmod.c ---- mpfr-4.1.0-a/tests/tfmod.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tfmod.c 2021-02-11 12:48:27.350242965 +0000 -@@ -62,8 +62,8 @@ - } - - static void --test_failed (mpfr_t erem, mpfr_t grem, int eret, int gret, mpfr_t x, mpfr_t y, -- mpfr_rnd_t rnd) -+test_failed (mpfr_ptr erem, mpfr_ptr grem, int eret, int gret, -+ mpfr_ptr x, mpfr_ptr y, mpfr_rnd_t rnd) - { - printf ("error: mpfr_fmod (r, x, y, rnd)\n x = "); - mpfr_out_str (stdout, 10, 0, x, MPFR_RNDD); -@@ -83,7 +83,7 @@ - } - - static void --check (mpfr_t r0, mpfr_t x, mpfr_t y, mpfr_rnd_t rnd) -+check (mpfr_ptr r0, mpfr_ptr x, mpfr_ptr y, mpfr_rnd_t rnd) - { - int inex0, inex1; - mpfr_t r1; -diff -Naurd mpfr-4.1.0-a/tests/tfprintf.c mpfr-4.1.0-b/tests/tfprintf.c ---- mpfr-4.1.0-a/tests/tfprintf.c 2020-06-01 10:39:52.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tfprintf.c 2021-02-11 12:48:27.350242965 +0000 -@@ -65,7 +65,7 @@ - const int prec_max_printf = 5000; - - static void --check (FILE *fout, const char *fmt, mpfr_t x) -+check (FILE *fout, const char *fmt, mpfr_ptr x) - { - if (mpfr_fprintf (fout, fmt, x) == -1) - { -diff -Naurd mpfr-4.1.0-a/tests/tgamma.c mpfr-4.1.0-b/tests/tgamma.c ---- mpfr-4.1.0-a/tests/tgamma.c 2020-06-01 00:15:37.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tgamma.c 2021-02-11 12:48:27.350242965 +0000 -@@ -890,7 +890,7 @@ - computing with a working precision p2. Assume that x is not an - integer <= 2. */ - static void --exp_lgamma (mpfr_t x, mpfr_prec_t p1, mpfr_prec_t p2) -+exp_lgamma (mpfr_ptr x, mpfr_prec_t p1, mpfr_prec_t p2) - { - mpfr_t yd, yu, zd, zu; - int inexd, inexu, sign; -diff -Naurd mpfr-4.1.0-a/tests/tnrandom_chisq.c mpfr-4.1.0-b/tests/tnrandom_chisq.c ---- mpfr-4.1.0-a/tests/tnrandom_chisq.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tnrandom_chisq.c 2021-02-11 12:48:27.350242965 +0000 -@@ -26,7 +26,7 @@ - * for the normal distribution. We only take differences of this function so - * the offset doesn't matter; here Phi(0) = 0. */ - static void --normal_cumulative (mpfr_t z, mpfr_t x, mpfr_rnd_t rnd) -+normal_cumulative (mpfr_ptr z, mpfr_ptr x, mpfr_rnd_t rnd) - { - mpfr_sqrt_ui (z, 2, rnd); - mpfr_div (z, x, z, rnd); -@@ -44,7 +44,7 @@ - * TAOCP, Vol 2, 3.3.1, Table 1. It more accurate than the similar formula, - * DLMF 8.11.10. */ - static void --chisq_prob (mpfr_t q, long nu, mpfr_t chisqp) -+chisq_prob (mpfr_ptr q, long nu, mpfr_ptr chisqp) - { - mpfr_t t; - mpfr_rnd_t rnd; -@@ -166,7 +166,7 @@ - * this function. low precision means prec = 2, 3, or 4. High values of - * precision will result in integer overflow. */ - static long --sequential (mpfr_t x) -+sequential (mpfr_ptr x) - { - long expt, prec; - -diff -Naurd mpfr-4.1.0-a/tests/tprintf.c mpfr-4.1.0-b/tests/tprintf.c ---- mpfr-4.1.0-a/tests/tprintf.c 2020-06-01 10:39:52.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tprintf.c 2021-02-11 12:48:27.350242965 +0000 -@@ -74,7 +74,7 @@ - int stdout_redirect; - - static void --check (const char *fmt, mpfr_t x) -+check (const char *fmt, mpfr_ptr x) - { - if (mpfr_printf (fmt, x) == -1) - { -diff -Naurd mpfr-4.1.0-a/tests/trint.c mpfr-4.1.0-b/tests/trint.c ---- mpfr-4.1.0-a/tests/trint.c 2020-02-12 13:04:50.000000000 +0000 -+++ mpfr-4.1.0-b/tests/trint.c 2021-02-11 12:48:27.350242965 +0000 -@@ -367,7 +367,7 @@ - #endif - - static void --err (const char *str, mp_size_t s, mpfr_t x, mpfr_t y, mpfr_prec_t p, -+err (const char *str, mp_size_t s, mpfr_ptr x, mpfr_ptr y, mpfr_prec_t p, - mpfr_rnd_t r, int trint, int inexact) - { - printf ("Error: %s\ns = %u, p = %u, r = %s, trint = %d, inexact = %d\nx = ", -diff -Naurd mpfr-4.1.0-a/tests/tsinh_cosh.c mpfr-4.1.0-b/tests/tsinh_cosh.c ---- mpfr-4.1.0-a/tests/tsinh_cosh.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tsinh_cosh.c 2021-02-11 12:48:27.350242965 +0000 -@@ -23,7 +23,7 @@ - #include "mpfr-test.h" - - static void --failed (mpfr_t x, mpfr_t esh, mpfr_t gsh, mpfr_t ech, mpfr_t gch) -+failed (mpfr_ptr x, mpfr_ptr esh, mpfr_ptr gsh, mpfr_ptr ech, mpfr_ptr gch) - { - printf ("error : mpfr_sinh_cosh (x) x = "); - mpfr_out_str (stdout, 10, 0, x, MPFR_RNDD); -@@ -43,7 +43,7 @@ - - /* check against sinh, cosh */ - static void --check (mpfr_t x, mpfr_rnd_t rnd) -+check (mpfr_ptr x, mpfr_rnd_t rnd) - { - mpfr_t s, c, sx, cx; - int isc, is, ic; -diff -Naurd mpfr-4.1.0-a/tests/tsqr.c mpfr-4.1.0-b/tests/tsqr.c ---- mpfr-4.1.0-a/tests/tsqr.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tsqr.c 2021-02-11 12:48:27.350242965 +0000 -@@ -33,7 +33,7 @@ - - static void - error1 (mpfr_rnd_t rnd, mpfr_prec_t prec, -- mpfr_t in, mpfr_t outmul, mpfr_t outsqr) -+ mpfr_t in, mpfr_ptr outmul, mpfr_ptr outsqr) - { - printf("ERROR: for %s and prec=%lu\nINPUT=", mpfr_print_rnd_mode(rnd), - (unsigned long) prec); -@@ -44,7 +44,7 @@ - } - - static void --error2 (mpfr_rnd_t rnd, mpfr_prec_t prec, mpfr_t in, mpfr_t out, -+error2 (mpfr_rnd_t rnd, mpfr_prec_t prec, mpfr_ptr in, mpfr_ptr out, - int inexactmul, int inexactsqr) - { - printf("ERROR: for %s and prec=%lu\nINPUT=", mpfr_print_rnd_mode(rnd), -diff -Naurd mpfr-4.1.0-a/tests/tsum.c mpfr-4.1.0-b/tests/tsum.c ---- mpfr-4.1.0-a/tests/tsum.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tsum.c 2021-02-11 12:48:27.350242965 +0000 -@@ -59,7 +59,7 @@ - } - - static void --get_exact_sum (mpfr_t sum, mpfr_t *tab, int n) -+get_exact_sum (mpfr_ptr sum, mpfr_t *tab, int n) - { - int i; - -@@ -1198,7 +1198,7 @@ - } - - static int --mpfr_sum_naive (mpfr_t s, mpfr_t *x, int n, mpfr_rnd_t rnd) -+mpfr_sum_naive (mpfr_ptr s, mpfr_t *x, int n, mpfr_rnd_t rnd) - { - int ret, i; - switch (n) -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:50:22.384987438 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:50:22.424987002 +0000 -@@ -0,0 +1 @@ -+digamma-hugemem -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2021-02-11 12:48:27.370242746 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:50:22.424987002 +0000 -@@ -1 +1 @@ --4.1.0-p4 -+4.1.0-p5 -diff -Naurd mpfr-4.1.0-a/src/digamma.c mpfr-4.1.0-b/src/digamma.c ---- mpfr-4.1.0-a/src/digamma.c 2020-06-18 17:17:18.000000000 +0000 -+++ mpfr-4.1.0-b/src/digamma.c 2021-02-11 12:50:22.412987133 +0000 -@@ -214,19 +214,27 @@ - (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec(x), mpfr_log_prec, x, rnd_mode), - ("y[%Pu]=%.*Rg inexact=%d", mpfr_get_prec(y), mpfr_log_prec, y, inex)); - -- /* compute a precision q such that x+1 is exact */ -- if (MPFR_PREC(x) < MPFR_GET_EXP(x)) -- q = MPFR_EXP(x); -- else -- q = MPFR_PREC(x) + 1; -- -- /* for very large x, use |digamma(x) - log(x)| < 1/x < 2^(1-EXP(x)) */ -- if (MPFR_PREC(y) + 10 < MPFR_EXP(x)) -+ /* For very large x, use |digamma(x) - log(x)| < 1/x < 2^(1-EXP(x)). -+ However, for a fixed value of GUARD, MPFR_CAN_ROUND() might fail -+ with probability 1/2^GUARD, in which case the default code will -+ fail since it requires x+1 to be exact, thus a huge precision if -+ x is huge. There are two workarounds: -+ * either perform a Ziv's loop, by increasing GUARD at each step. -+ However, this might fail if x is moderately large, in which case -+ more terms of the asymptotic expansion would be needed. -+ * implement a full asymptotic expansion (with Ziv's loop). */ -+#define GUARD 30 -+ if (MPFR_PREC(y) + GUARD < MPFR_EXP(x)) - { - /* this ensures EXP(x) >= 3, thus x >= 4, thus log(x) > 1 */ -- mpfr_init2 (t, MPFR_PREC(y) + 10); -- mpfr_log (t, x, MPFR_RNDZ); -- if (MPFR_CAN_ROUND (t, MPFR_PREC(y) + 10, MPFR_PREC(y), rnd_mode)) -+ mpfr_init2 (t, MPFR_PREC(y) + GUARD); -+ mpfr_log (t, x, MPFR_RNDN); -+ /* |t - digamma(x)| <= 1/2*ulp(t) + |digamma(x) - log(x)| -+ <= 1/2*ulp(t) + 2^(1-EXP(x)) -+ <= 1/2*ulp(t) + 2^(-PREC(y)-GUARD) -+ <= ulp(t) -+ since |t| >= 1 thus ulp(t) >= 2^(1-PREC(y)-GUARD) */ -+ if (MPFR_CAN_ROUND (t, MPFR_PREC(y) + GUARD, MPFR_PREC(y), rnd_mode)) - { - inex = mpfr_set (y, t, rnd_mode); - mpfr_clear (t); -@@ -235,6 +243,21 @@ - mpfr_clear (t); - } - -+ /* compute a precision q such that x+1 is exact */ -+ if (MPFR_PREC(x) < MPFR_GET_EXP(x)) -+ { -+ /* The goal of the first assertion is to let the compiler ignore -+ the second one when MPFR_EMAX_MAX <= MPFR_PREC_MAX. */ -+ MPFR_ASSERTD (MPFR_EXP(x) <= MPFR_EMAX_MAX); -+ MPFR_ASSERTN (MPFR_EXP(x) <= MPFR_PREC_MAX); -+ q = MPFR_EXP(x); -+ } -+ else -+ q = MPFR_PREC(x) + 1; -+ -+ /* FIXME: q can be much too large, e.g. equal to the maximum exponent! */ -+ MPFR_LOG_MSG (("q=%Pu\n", q)); -+ - mpfr_init2 (x_plus_j, q); - - mpfr_init2 (t, p); -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2021-02-11 12:48:27.366242791 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:50:22.424987002 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0-p4" -+#define MPFR_VERSION_STRING "4.1.0-p5" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2021-02-11 12:48:27.370242746 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:50:22.424987002 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0-p4"; -+ return "4.1.0-p5"; - } -diff -Naurd mpfr-4.1.0-a/tests/tdigamma.c mpfr-4.1.0-b/tests/tdigamma.c ---- mpfr-4.1.0-a/tests/tdigamma.c 2020-06-18 17:17:18.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tdigamma.c 2021-02-11 12:50:22.412987133 +0000 -@@ -49,12 +49,54 @@ - mpfr_clear (y); - } - -+/* With some GMP_CHECK_RANDOMIZE values, test_generic triggers an error -+ tests_addsize(): too much memory (576460752303432776 bytes) -+ Each time on prec = 200, n = 3, xprec = 140. -+ The following test is a more general testcase. -+*/ -+static void -+bug20210206 (void) -+{ -+#define NPREC 4 -+ mpfr_t x, y[NPREC], z; -+ mpfr_exp_t emin, emax; -+ int i, precx, precy[NPREC] = { 200, 400, 520, 1416 }; -+ -+ emin = mpfr_get_emin (); -+ emax = mpfr_get_emax (); -+ set_emin (MPFR_EMIN_MIN); -+ set_emax (MPFR_EMAX_MAX); -+ -+ for (i = 0; i < NPREC; i++) -+ mpfr_init2 (y[i], precy[i]); -+ mpfr_init2 (z, precy[0]); -+ -+ for (precx = MPFR_PREC_MIN; precx < 150; precx++) -+ { -+ mpfr_init2 (x, precx); -+ mpfr_setmax (x, __gmpfr_emax); -+ for (i = 0; i < NPREC; i++) -+ mpfr_digamma (y[i], x, MPFR_RNDA); -+ mpfr_set (z, y[1], MPFR_RNDA); -+ MPFR_ASSERTN (mpfr_equal_p (y[0], z)); -+ mpfr_clear (x); -+ } -+ -+ for (i = 0; i < NPREC; i++) -+ mpfr_clear (y[i]); -+ mpfr_clear (z); -+ -+ set_emin (emin); -+ set_emax (emax); -+} -+ - int - main (int argc, char *argv[]) - { - tests_start_mpfr (); - - special (); -+ bug20210206 (); - - test_generic (MPFR_PREC_MIN, 200, 20); - -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:52:52.519350662 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:52:52.563350183 +0000 -@@ -0,0 +1 @@ -+digamma-interm-zero -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2021-02-11 12:50:22.424987002 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:52:52.563350183 +0000 -@@ -1 +1 @@ --4.1.0-p5 -+4.1.0-p6 -diff -Naurd mpfr-4.1.0-a/src/digamma.c mpfr-4.1.0-b/src/digamma.c ---- mpfr-4.1.0-a/src/digamma.c 2021-02-11 12:50:22.412987133 +0000 -+++ mpfr-4.1.0-b/src/digamma.c 2021-02-11 12:52:52.547350357 +0000 -@@ -296,21 +296,26 @@ - errt = mpfr_digamma_approx (t, x_plus_j); - expt = MPFR_GET_EXP (t); - mpfr_sub (t, t, u, MPFR_RNDN); -- if (MPFR_GET_EXP (t) < expt) -- errt += expt - MPFR_EXP(t); -- /* Warning: if u is zero (which happens when x_plus_j >= min at the -- beginning of the while loop above), EXP(u) is not defined. -- In this case we have no error from u. */ -- if (MPFR_NOTZERO(u) && MPFR_GET_EXP (t) < MPFR_GET_EXP (u)) -- erru += MPFR_EXP(u) - MPFR_EXP(t); -- if (errt > erru) -- errt = errt + 1; -- else if (errt == erru) -- errt = errt + 2; -- else -- errt = erru + 1; -- if (MPFR_CAN_ROUND (t, p - errt, MPFR_PREC(y), rnd_mode)) -- break; -+ /* Warning! t may be zero (more likely in small precision). Note -+ that in this case, this is an exact zero, not an underflow. */ -+ if (MPFR_NOTZERO(t)) -+ { -+ if (MPFR_GET_EXP (t) < expt) -+ errt += expt - MPFR_EXP(t); -+ /* Warning: if u is zero (which happens when x_plus_j >= min at the -+ beginning of the while loop above), EXP(u) is not defined. -+ In this case we have no error from u. */ -+ if (MPFR_NOTZERO(u) && MPFR_GET_EXP (t) < MPFR_GET_EXP (u)) -+ erru += MPFR_EXP(u) - MPFR_EXP(t); -+ if (errt > erru) -+ errt = errt + 1; -+ else if (errt == erru) -+ errt = errt + 2; -+ else -+ errt = erru + 1; -+ if (MPFR_CAN_ROUND (t, p - errt, MPFR_PREC(y), rnd_mode)) -+ break; -+ } - MPFR_ZIV_NEXT (loop, p); - mpfr_set_prec (t, p); - mpfr_set_prec (u, p); -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2021-02-11 12:50:22.424987002 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:52:52.559350226 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0-p5" -+#define MPFR_VERSION_STRING "4.1.0-p6" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2021-02-11 12:50:22.424987002 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:52:52.559350226 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0-p5"; -+ return "4.1.0-p6"; - } -diff -Naurd mpfr-4.1.0-a/tests/tdigamma.c mpfr-4.1.0-b/tests/tdigamma.c ---- mpfr-4.1.0-a/tests/tdigamma.c 2021-02-11 12:50:22.412987133 +0000 -+++ mpfr-4.1.0-b/tests/tdigamma.c 2021-02-11 12:52:52.547350357 +0000 -@@ -90,6 +90,26 @@ - set_emax (emax); - } - -+/* another test that fails with GMP_CHECK_RANDOMIZE=1612741376857003 -+ on revision 14398 */ -+static void -+bug20210208 (void) -+{ -+ mpfr_t x, y; -+ int inex; -+ -+ mpfr_init2 (x, 73); -+ mpfr_init2 (y, 1); -+ mpfr_set_str (x, "1.4613470547060071827450", 10, MPFR_RNDN); -+ mpfr_clear_flags (); -+ inex = mpfr_digamma (y, x, MPFR_RNDU); -+ MPFR_ASSERTN (mpfr_cmp_si_2exp (y, -1, -12) == 0); -+ MPFR_ASSERTN (inex > 0); -+ MPFR_ASSERTN (__gmpfr_flags == MPFR_FLAGS_INEXACT); -+ mpfr_clear (x); -+ mpfr_clear (y); -+} -+ - int - main (int argc, char *argv[]) - { -@@ -97,6 +117,7 @@ - - special (); - bug20210206 (); -+ bug20210208 (); - - test_generic (MPFR_PREC_MIN, 200, 20); - -diff -Naurd mpfr-4.1.0-a/PATCHES mpfr-4.1.0-b/PATCHES ---- mpfr-4.1.0-a/PATCHES 2021-02-11 12:53:38.382850990 +0000 -+++ mpfr-4.1.0-b/PATCHES 2021-02-11 12:53:38.426850512 +0000 -@@ -0,0 +1 @@ -+jn-interm-zero -diff -Naurd mpfr-4.1.0-a/VERSION mpfr-4.1.0-b/VERSION ---- mpfr-4.1.0-a/VERSION 2021-02-11 12:52:52.563350183 +0000 -+++ mpfr-4.1.0-b/VERSION 2021-02-11 12:53:38.426850512 +0000 -@@ -1 +1 @@ --4.1.0-p6 -+4.1.0-p7 -diff -Naurd mpfr-4.1.0-a/src/jyn_asympt.c mpfr-4.1.0-b/src/jyn_asympt.c ---- mpfr-4.1.0-a/src/jyn_asympt.c 2020-07-10 10:33:32.000000000 +0000 -+++ mpfr-4.1.0-b/src/jyn_asympt.c 2021-02-11 12:53:38.410850685 +0000 -@@ -69,6 +69,8 @@ - MPFR_ZIV_INIT (loop, w); - for (;;) - { -+ int ok = 1; -+ - mpfr_set_prec (c, w); - mpfr_init2 (s, w); - mpfr_init2 (P, w); -@@ -92,6 +94,13 @@ - /* now s approximates sin(z)+cos(z), and c approximates sin(z)-cos(z), - with total absolute error bounded by 2^(1-w). */ - -+ /* if s or c is zero, MPFR_GET_EXP will fail below */ -+ if (MPFR_IS_ZERO(s) || MPFR_IS_ZERO(c)) -+ { -+ ok = 0; -+ goto clear; -+ } -+ - /* precompute 1/(8|z|) */ - mpfr_si_div (iz, MPFR_IS_POS(z) ? 1 : -1, z, MPFR_RNDN); /* err <= 1 */ - mpfr_div_2ui (iz, iz, 3, MPFR_RNDN); -@@ -257,6 +266,9 @@ - err = (err >= err2) ? err + 1 : err2 + 1; - /* the absolute error on c is bounded by 2^(err - w) */ - -+ err -= MPFR_GET_EXP (c); -+ -+ clear: - mpfr_clear (s); - mpfr_clear (P); - mpfr_clear (Q); -@@ -266,8 +278,7 @@ - mpfr_clear (err_s); - mpfr_clear (err_u); - -- err -= MPFR_GET_EXP (c); -- if (MPFR_LIKELY (MPFR_CAN_ROUND (c, w - err, MPFR_PREC(res), r))) -+ if (ok && MPFR_LIKELY (MPFR_CAN_ROUND (c, w - err, MPFR_PREC(res), r))) - break; - if (diverge != 0) - { -diff -Naurd mpfr-4.1.0-a/src/mpfr.h mpfr-4.1.0-b/src/mpfr.h ---- mpfr-4.1.0-a/src/mpfr.h 2021-02-11 12:52:52.559350226 +0000 -+++ mpfr-4.1.0-b/src/mpfr.h 2021-02-11 12:53:38.422850555 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 4 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 0 --#define MPFR_VERSION_STRING "4.1.0-p6" -+#define MPFR_VERSION_STRING "4.1.0-p7" - - /* User macros: - MPFR_USE_FILE: Define it to make MPFR define functions dealing -diff -Naurd mpfr-4.1.0-a/src/version.c mpfr-4.1.0-b/src/version.c ---- mpfr-4.1.0-a/src/version.c 2021-02-11 12:52:52.559350226 +0000 -+++ mpfr-4.1.0-b/src/version.c 2021-02-11 12:53:38.426850512 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "4.1.0-p6"; -+ return "4.1.0-p7"; - } -diff -Naurd mpfr-4.1.0-a/tests/tj0.c mpfr-4.1.0-b/tests/tj0.c ---- mpfr-4.1.0-a/tests/tj0.c 2020-01-08 18:11:13.000000000 +0000 -+++ mpfr-4.1.0-b/tests/tj0.c 2021-02-11 12:53:38.410850685 +0000 -@@ -27,6 +27,25 @@ - #define REDUCE_EMAX 262143 /* otherwise arg. reduction is too expensive */ - #include "tgeneric.c" - -+/* bug found in revision 14399 with GMP_CHECK_RANDOMIZE=1612721106588971 */ -+static void -+bug20210208 (void) -+{ -+ mpfr_t x, y; -+ int inex; -+ -+ mpfr_init2 (x, 79); -+ mpfr_init2 (y, 1); -+ mpfr_set_str (x, "2.552495117262005805960565e+02", 10, MPFR_RNDN); -+ mpfr_clear_flags (); -+ inex = mpfr_j0 (y, x, MPFR_RNDZ); -+ MPFR_ASSERTN (mpfr_cmp_si_2exp (y, -1, -5) == 0); -+ MPFR_ASSERTN (inex > 0); -+ MPFR_ASSERTN (__gmpfr_flags == MPFR_FLAGS_INEXACT); -+ mpfr_clear (x); -+ mpfr_clear (y); -+} -+ - int - main (int argc, char *argv[]) - { -@@ -35,6 +54,8 @@ - - tests_start_mpfr (); - -+ bug20210208 (); -+ - mpfr_init (x); - mpfr_init (y); - diff --git a/mpfr-4.1.0.tar.xz b/mpfr-4.1.0.tar.xz deleted file mode 100644 index eaadaaa..0000000 --- a/mpfr-4.1.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f -size 1525476 diff --git a/mpfr-4.1.0.tar.xz.asc b/mpfr-4.1.0.tar.xz.asc deleted file mode 100644 index 3d09ebf..0000000 --- a/mpfr-4.1.0.tar.xz.asc +++ /dev/null @@ -1,6 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iF0EABECAB0WIQQH89u+zBo5YFB4CU2YDBl2mMNznQUCXwhYlgAKCRCYDBl2mMNz -ncEeAKCxmXnOHBms19QKSwkIDlavaSY2VgCcDP3KIqC/u2Rww8pBzNyrjSpRrdc= -=mGk3 ------END PGP SIGNATURE----- diff --git a/mpfr-4.1.1.tar.xz b/mpfr-4.1.1.tar.xz new file mode 100644 index 0000000..44954c9 --- /dev/null +++ b/mpfr-4.1.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffd195bd567dbaffc3b98b23fd00aad0537680c9896171e44fe3ff79e28ac33d +size 1429836 diff --git a/mpfr-4.1.1.tar.xz.asc b/mpfr-4.1.1.tar.xz.asc new file mode 100644 index 0000000..1829dc6 --- /dev/null +++ b/mpfr-4.1.1.tar.xz.asc @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- + +iHUEABYIAB0WIQSlNL4/g+JB2RgoCutYMdEaDU2wKgUCY3Y8nQAKCRBYMdEaDU2w +Kl5VAP0RgeqbW7slZlfkxAtJ5FF4pM/cXzkc9BlLSqazc0vD2AEAuYw6eA5QmjjH +5Un62IrZMVzSmp98XqG18IF9k/J7RAM= +=pqz1 +-----END PGP SIGNATURE----- diff --git a/mpfr.changes b/mpfr.changes index a3a2fea..ef88a4b 100644 --- a/mpfr.changes +++ b/mpfr.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Nov 18 07:52:35 UTC 2022 - Richard Biener + +- Update to mpfr 4.1.1 + * Bug fixes (see and/or the + ChangeLog file), in particular for macros implementing functions. + * Improved manual formatting. + * Accumulated bugfixes +- Remove mpfr-4.1.0-p7.diff, all patches are contained in the + new version. +- Update mpfr.keyring + ------------------------------------------------------------------- Fri Feb 12 08:05:33 UTC 2021 - Richard Biener diff --git a/mpfr.keyring b/mpfr.keyring index 9fbcc01..b5cf3cb 100644 --- a/mpfr.keyring +++ b/mpfr.keyring @@ -1,5 +1,4 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 mQGiBDpu6yARBACaqhVMzAymKhrUcY1uR1pjYxM5LSuYq6mmCPTNwlGRV5RqQL0p uXrYlfofu8xsKiVuUKk+Dx5aJT6SDxMNkfogPGMgHK8iCaHiMrw4nTtvrJDaoxDo @@ -9,51 +8,14 @@ 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 @@ -64,100 +26,210 @@ sQTn3/72JFFkySZPM31gCaerzH2olT4bEr2zZNptw+/+KHU4WjQbj+w0qVFhcuTM 33I7mbAVJhv4TU6ZOSYwQb87AAg+2gnRYi2Joieg4Vfc0dOjwlcWaQoIJwRk2qQf bMucDrhN0pkI/NE91v5khAiTW7vMaD8fAEQyt9krbp9YWGNWdw4/UQtu7nlUYwYg KMxT31iT2dmx7ivPQ8KfWk9FF3PrTM4NAWdXRACQpG97HxlYDjuCTbCxw0eowRGr -jAI4JqQQTRSamwI32OIcy3vtST3X4Q9SLy8btCVWaW5jZW50IExlZsOodnJlIDx2 -aW5jZW50QHZpbmMxNy5vcmc+iEYEEBEIAAYFAk3yUoAACgkQRoAVF6FpbStn6gCa -Avwi5Yj6SuDrDXKHPMv4VRiJtisAoKAi2eNpNgKsXd5pqcWigmxxmdkYiGAEExEC -ACAFAkghoW0CGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCYDBl2mMNzneCo -AJ99r2C/Qn970kS3ogUuRhh9GZu39gCeKspuwHLNK9LRywuE4XH+44D6oHmJAhwE -EAEIAAYFAk3yUxwACgkQlZIe1umhQ0RAZBAAlW7ce5wXxvVmDG/mVjlstqqBeSKl -5SQwavuV8CrnDLEpDr0bgdVsf7A7LY9pH6C/VbmRv/PgmsmFtr0k0N7cm1Bv8wHm -zIHUd4qqBV44kzzOq3gGvRBwuOQBpUMJ1j9/EMfmzVyldcqfC4egsDBNcwgNofKN -KNuzAPqVKUiXwHO2bu7vL/NBUTXzTBtg8AguzbVLKfNMmcniwTeiRGpG81RloQFV -Xh8x+Nykf1UJJu1uYxQ+602kmuU/9ozzEMTcY7Go+z0KejzQKAMyGUIbLo0mtCR0 -Q1aU1/UewjeNPuLP0yWHa5/ygTircWW6JVqwUT09AJ5c//WUoooAm9v+qqe9ioiz -pddw30G1KyLKUmjov/9aS1punqjQirpLRsUd9CA7VHxKfTsp7Q+acsdZXq4cqf0q -ONYg87CCrMlD3xe4S2veU9to6EISLySFCN7GdW2k5MCLq1hE9KOdhzGy5Yx+/uAh -jUp7y3jTzQkjOLEpgvzHTNSP+91ft9BJE1mI5KxOAe3X9WalEDIvzl/+k0UExX5U -t4PUgQjOoKUfwOf5yU0YKgcfndRo69ARB3M8NFCVTHtH1hEgzmp+/XbhUVhEsjeA -icKOwy6lRh0FUEisTms5a+vqwIxZ7lH0JDJQVDi2vjkWUg/lvcuppyUm5Xrhj5p0 -LIpkLv0k7VEhPku0KlZpbmNlbnQgTGVmZXZyZSA8VmluY2VudC5MZWZldnJlQGlu -cmlhLmZyPohGBBARCAAGBQJN8lKAAAoJEEaAFRehaW0rki0AoI9NUbDRcyOnA6hA -bLWtabKauEH0AJ977QAuX5bgJKX+d4SCV1sGL6L3W4hgBBMRAgAgAhsjBgsJCAcD -AgQVAggDBBYCAwECHgECF4AFAkghomgACgkQmAwZdpjDc53y8gCgqoUWUHoGDA2K -CfT6PuUcTh7XkpcAn1QERO0GLmhD1nURhN4RCOpda4UaiGAEExECACAFAkghnp8C -GyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCYDBl2mMNznTUGAJ9v4CdQnQur -U6NTt3HOBg/jBvdtuwCbBIvYQ/MZCCakvSf+ygqcugpvofSJAhwEEAEIAAYFAk3y -UxwACgkQlZIe1umhQ0T4zw/9HR/baeSHRJWJ9BThr9KbgHPz3eX0oGJq3y0Pxtxx -2JQqcB5QIcGdGOUdcwrwytT2e35uM6limasgEIgqdoMqJuYDDm1/Iex2B4apIprt -FcohE8HqnLGCi7bqnIS5rM/jUIY52LPfYrcvGAlgFH3L70ZJb0b6uxB5mxB1YzYB -h/+bFLt8MJCX7zUzrH/nmbsKTkCKPMt9llT+prnLVdMMdIudXTyxDxrgpl5Ok6ph -fz7Dqgj6b0QO+KARkjXtZXr50E/0NWeGYvEwziBA+mywQIg+WJCjcQaykRYMT54h -IB//uDi95ELC7ZmTcDmbdcg+1vS0+s0JzukAgG3A5BS2/WEadah13soOmxlDUTLF -Wk13aESqjH/IH9XPJXDSmCujKje088I/DHdlFUBAxpFA3jXpS+MD67p0Y3HXg8Oz -c44StGx44u6Xzd4FdFN4mO6NIblDIgZg5ctA73hxDnmKKF3sqhKfXVfexm321s0Y -L9ke2+a76uLvzfK+1UUjoS74/Ga80qc1ggmSY3SqVrjIrpqapiKdvL4KcvKiHvEf -XZVVagvpi3uHab0iE6eVPV9uk/mmz6CoYkJmvSBZngoWSVtuNuV4ZdmAjwQxo7Bz -px/ybCvXyKUvN1gFGS2o9L8/eJWIOFp2q+3+s/Zp/VpZQNNYyyJ1f+nkKm5Xj0tZ -vxm0K1ZpbmNlbnQgTGVmw6h2cmUgPFZpbmNlbnQuTGVmZXZyZUBpbnJpYS5mcj6I -RgQQEQgABgUCTfJSgAAKCRBGgBUXoWltK27LAKCIBU+dzTW4ipNUtZurC91x0WP/ -uQCeN29l1Ad7uQO5xvLxYCu5GKXcSSWIYAQTEQIAIAUCSCGhhAIbIwYLCQgHAwIE -FQIIAwQWAgMBAh4BAheAAAoJEJgMGXaYw3OdnPIAnjaVP8orDRr3m89dIn6M+ndN -178gAJ94TSBvGgnpi3T4JhxnYQE6kyXBpokCHAQQAQgABgUCTfJTHAAKCRCVkh7W -6aFDRHZGEACc0XTKCDAEXPJH2SP52M+pA52/24UzCJDuQVlUPVVrQWICU30Edtsp -FJ6S51BD99lHXDqc7PnrJZJJE/yNFrraHrorqJLqSjiIFLdQ9Tzq9wBVfNh/vspY -KyzwvVKVwvMhCPdXEDwz6uoBNSgqFsfGH1UvTkyU5iCgGnNeSAw/VTKM8yfz1luD -kYfHSLBgy4Ue00JpEA9M7lkMllvxqLUwAQkUkuClQ9MlPx5gF6IP6lqVIx+v6crt -nuyJnaCUx2dHA0+LEcVEXQzPcwIlyIO8mx6DWjSDvnsgTlFGL6IXU9RS/g6hz76C -6AlJnINFM23NAwWUDzepI5J6e7Nv37nwmnasaKZZfTtL69LlcVV3mX4MymLiSWaq -hnsf53EjxqKhfmxzRIyURgkXTCrVQEfRKyesmBcwb0zJDoP5Ptr5WJzACns/CIfF -xofF4CC4zmvsbejv8JBIgw7i4W6VLC/DDocaoku/E2Yr4VMVI/R9oWZeNGBGTdN7 -rCSBLWuGPFlaGYZjv6p/kuRtJT34QJiHXEYThFwkeXqFCBTfoYn3iquW+LfgsDvu -foPga7sdeAXt8RfxUhqLwCIBBZvuINb9jrafrXbQTfg4YPqcirBpUQqXotuOsN8x -Q+ydcnBviNqRbT6+5YwXAF0/vEG5I0OR7oYyHMDoeCAEhxI4wDSU37QtVmluY2Vu -dCBMZWZldnJlIDxWaW5jZW50LkxlZmV2cmVAZW5zLWx5b24uZnI+iEYEEBEIAAYF -Ak3yUoAACgkQRoAVF6FpbSuYbQCfc7Y7a7n6eMkdvYIl50RPgUf5pl4An00znIfi -Zy92AJ5RM64xZn2fsSNyiGAEExECACAFAkghnsACGyMGCwkIBwMCBBUCCAMEFgID -AQIeAQIXgAAKCRCYDBl2mMNznbGYAJ42N2JMtPSnkVn4qVPHUc7WOU3YCACdFgBS -10cg1wzkTF40k8PKy5IKnVOJAhwEEAEIAAYFAk3yUxwACgkQlZIe1umhQ0SbwA/+ -P+BATcDcu6aqWttork7JDN5YaM7oLBu4Z+F+230+zULqGHW1+a0qAT/hTw0D9I6X -HEXcORtVnjNnEusa6EqgPoM4jJC+gRF5KGoKwZVLFhIn+UZ2rebsZ8qopLVgucu7 -iKKIPK+CauD1xgq7YfEkRysLz36I6mPt/7pNSLHhLrEZdCe5RxBfnFxKov3cyMYT -5sSS4F8+VfIZVS2U/l1fvoDbEbIRHYIYXul2+bKW0tttzWgOSy/GhChL8UZV2sfB -ht5N+Z55v4K7jh4HSB1NXpmD9PkWBTDOWhrUh1JBhrsgv7SdsboPQZBC6lnRs+EQ -XZuF+R9jeH7vzkkoHbslG5OE+XiRp+cgVxPyVX76ZZ1ER1UPPUT2z38JzpZSqEwg -R9dRdBFvvX3zJBMitOfIQ3cZQJ7Cd++nMJlDFT4G/6FSKScXiEaEOahrnO/7Dn6G -F9g2uEo7ksVx7mCCFuBJRrLaLHvt0LQHLm4tFx5xA4wS1y7PTKMH8jXS3ISoA2UC -L/Ef6cHjx8kWcrSlipjt4X1zwrBCW4DkqRSYuAwakRCh18FoId2Y3NhC/Z4Zwkwi -JqciLLY7+RkL9hAOkcRSK7u2sSgDdWfE9x2HTMQITkEnQajHzLDCuRWVuv8NZhzF -WMF07JeW5zZO4SeRjZ/rG5djSd0ND7vaC7Bcsx8aq9u0LlZpbmNlbnQgTGVmw6h2 -cmUgPFZpbmNlbnQuTGVmZXZyZUBlbnMtbHlvbi5mcj6IRgQQEQgABgUCTfJSgAAK -CRBGgBUXoWltKxXKAKCNJzZ7hvMofWPHSct7umL10nVgQwCgjycEpm22c+KofVEi -6T2k/7tSnkWIYAQTEQIAIAUCSCGhoAIbIwYLCQgHAwIEFQIIAwQWAgMBAh4BAheA -AAoJEJgMGXaYw3OdvAwAn3Lux4sL+FNQGaFKviI+4GG+1BlIAKCGu8WiBKIsUjxC -98SjMVG+4xN16okCHAQQAQgABgUCTfJTHAAKCRCVkh7W6aFDRHAQEACV7Eo2kuWj -LmEGmJ1h/eSik9bqv86y47QjZUuGQnoYKIzSNrCJIBs/ajLFE0k7LofxkhZdh0Kc -m7I4tHJF/zbveSBQgiH2+AfIe1JXYQJXAuN7QiOWk3tlYUZ96NvpImZuPuAoXoDa -78uEOoHKw2uueGgg1eT8gAL/ftFJRgZZ5tAPtuWH5s2dT11ytIrRl1oVOFydEqgP -TBEwKPLOgo2YBJivkXoDy9HeV9wiElT8z0yCWDpE5cuGFIgpIJXUePawpkoCRHpb -piP2CLDOc4DppXiWEVT8+3haEqi1NE5TY0OAnjEbEC3/LXEJtyawwMtRF4WVC2DC -leaaZsg2v+BHmQr1h4RC/zrI2t3IKtBAMzhEACbcpx5atfS/ov7JAJJ7OnTi3sDG -VoqQUFxO6E0JNYGB+bJ+1iJ11JARxICnPXEorm/2Nt7I2osSx9GOxHBesAO1RGO1 -b7BTjtDTQHwcfGQstLpRylLdMoP2GtlKXn/c2L8g7OQO5SKifnEyHgTSAzbKwXNe -8+LDoL8qQOAERqYAvQbo6E85ualr+bljOT2QEfqGhZ2KpUlEzhluF/nYlNsZ1Eb6 -83lCI3jGFP3N6khIDWJHhZhG97e8YJiveEXkaVxEW3nUtW6fHu0dXXR/eT0t7S8I -2GiMC+T4TZoKQ+hNTRNb9fL4FLjHOf6YHrkCDQQ6butMEAgAgUyl/BQ0OA7B/GSD -dx6J/wjS/S4QDx7ZehgigOhJAA74e1rUqeFykb1sqxxkKnCyAOSqHu2BQXqk7G7o -zor5bU8eE6Rki7H6Vf734TprsQgYqPrztgcVxL2InRHcMw8IGMZZKhWbSzKST6Xa -Eg7Yxy7pkvNhl29bc9scWNjOCxkUt6L9wtp2UEZQf5bL41k1A7B1/dGOAe+DOX64 -x2lNYAlry3f7WV7Yq99YgcFy+V+o2wW5OBb/404x8DIm7bKTzBiOO1QNNe8vGJAE -f1lAhldPE03T9aNNXr0tHytLcDsQbHkbnsJELtY6C2AQiAKythMo1OVC+y0+Kr3J -MFfumwADBQf8CiymrdhZGEZYsgJfpih+eaoBVgnlY6lHx1bQOvfol4x7B+szlNtH -jA+r3PV9uPsrxa6J5qT31iPPHgwu1utTJ8tQov9OpXvEB/2J8DV8lYzTMpAB/GKo -DUFZEGc4q+BQAvTfYYv+6WKoFjRL6iKt+Qb6WyonjG6ViPebIURoMP6eE7wPFCVw -K8xWHvB32jdf+ni9a2XuE9bLkF8pHcC2pz0gi7vIk88FPo8EypKTL5MjC0/7+nYK -9K45PZwmWNO0m5BooyP6ddGP0xJq8gisZuSWAFW3I+SW5DyPnvxpOXCzSj0vCHuH -vDbdsUArdNWUTpxw5k3XvAIxPLMBsFK3qIhGBBgRAgAGBQI6butMAAoJEJgMGXaY -w3OdiYYAn2SsLZg3Cj2Rg7ZziZ01NE5QpP5CAKCLyZeqvx28Lt44/DBv052TOb47 -tw== -=WUMJ +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 +DA== +=Mh3X -----END PGP PUBLIC KEY BLOCK----- diff --git a/mpfr.spec b/mpfr.spec index 25c72b0..d2da5d9 100644 --- a/mpfr.spec +++ b/mpfr.spec @@ -1,7 +1,7 @@ # # spec file for package mpfr # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: mpfr -Version: 4.1.0 +Version: 4.1.1 Release: 0 Summary: The GNU multiple-precision floating-point library License: LGPL-3.0-or-later @@ -27,7 +27,6 @@ Source0: https://www.mpfr.org/mpfr-%{version}/mpfr-%{version}.tar.xz Source1: https://www.mpfr.org/mpfr-%{version}/mpfr-%{version}.tar.xz.asc Source2: %{name}.keyring Source3: baselibs.conf -Patch: mpfr-4.1.0-p7.diff BuildRequires: gmp-devel BuildRequires: pkgconfig @@ -56,8 +55,8 @@ Summary: Development files for the GNU multiple-precision floating-point Group: Development/Libraries/C and C++ Requires: gmp-devel Requires: libmpfr6 = %{version} -Requires(post): %{install_info_prereq} -Requires(preun): %{install_info_prereq} +Requires(post): %{install_info_prereq} +Requires(preun):%{install_info_prereq} %description devel Development files for the GNU multiple-precision floating-point library. @@ -68,7 +67,6 @@ based on the GMP multiple-precision library. %prep %setup -q -%patch -p1 %build %configure \ @@ -90,6 +88,7 @@ make check %{?_smp_mflags} find %{buildroot} -type f -name "*.la" -delete -print %post -n libmpfr6 -p /sbin/ldconfig + %post devel %install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz