Date: Sunday, November 19, 2017 @ 22:34:53 Author: jgc Revision: 310459
upgpkg: mpfr 3.1.6.p1-1 Added: mpfr/trunk/mpfr-3.1.6-p1.patch Modified: mpfr/trunk/PKGBUILD Deleted: mpfr/trunk/mpfr-3.1.5-p2.patch ---------------------+ PKGBUILD | 10 - mpfr-3.1.5-p2.patch | 174 ------------------------------ mpfr-3.1.6-p1.patch | 285 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 290 insertions(+), 179 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-11-19 22:34:27 UTC (rev 310458) +++ PKGBUILD 2017-11-19 22:34:53 UTC (rev 310459) @@ -3,8 +3,8 @@ # Contributor: damir <da...@archlinux.org> pkgname=mpfr -_pkgver=3.1.5 -_patchlevel=p2 +_pkgver=3.1.6 +_patchlevel=p1 pkgver=${_pkgver}.${_patchlevel} #pkgver=${_pkgver} pkgrel=1 @@ -15,9 +15,9 @@ depends=('gmp>=5.0') source=(http://www.mpfr.org/mpfr-current/mpfr-${_pkgver}.tar.xz{,.asc} mpfr-${_pkgver}-${_patchlevel}.patch) -md5sums=('c4ac246cf9795a4491e7766002cd528f' - 'SKIP' - 'f388b7983bf69e2bfd3216426c89954c') +sha256sums=('7a62ac1a04408614fccdc506e4844b10cf0ad2c2b1677097f8f35d3a1344a950' + 'SKIP' + '5d37e47d9d206b1b306dfd590b3019c3f2651013403bb5cb290d1173ed080b28') validpgpkeys=('07F3DBBECC1A39605078094D980C197698C3739D') prepare() { Deleted: mpfr-3.1.5-p2.patch =================================================================== --- mpfr-3.1.5-p2.patch 2017-11-19 22:34:27 UTC (rev 310458) +++ mpfr-3.1.5-p2.patch 2017-11-19 22:34:53 UTC (rev 310459) @@ -1,174 +0,0 @@ -diff -Naurd mpfr-3.1.5-a/PATCHES mpfr-3.1.5-b/PATCHES ---- mpfr-3.1.5-a/PATCHES 2016-12-15 08:35:46.476430238 +0000 -+++ mpfr-3.1.5-b/PATCHES 2016-12-15 08:35:46.544430346 +0000 -@@ -0,0 +1 @@ -+vasprintf -diff -Naurd mpfr-3.1.5-a/VERSION mpfr-3.1.5-b/VERSION ---- mpfr-3.1.5-a/VERSION 2016-09-27 07:58:14.000000000 +0000 -+++ mpfr-3.1.5-b/VERSION 2016-12-15 08:35:46.544430346 +0000 -@@ -1 +1 @@ --3.1.5 -+3.1.5-p1 -diff -Naurd mpfr-3.1.5-a/src/mpfr.h mpfr-3.1.5-b/src/mpfr.h ---- mpfr-3.1.5-a/src/mpfr.h 2016-09-27 07:58:15.000000000 +0000 -+++ mpfr-3.1.5-b/src/mpfr.h 2016-12-15 08:35:46.540430340 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 5 --#define MPFR_VERSION_STRING "3.1.5" -+#define MPFR_VERSION_STRING "3.1.5-p1" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.5-a/src/vasprintf.c mpfr-3.1.5-b/src/vasprintf.c ---- mpfr-3.1.5-a/src/vasprintf.c 2016-09-27 07:58:15.000000000 +0000 -+++ mpfr-3.1.5-b/src/vasprintf.c 2016-12-15 08:35:46.520430308 +0000 -@@ -1593,7 +1593,7 @@ - } - else if (spec.spec == 'f' || spec.spec == 'F') - { -- if (spec.prec == -1) -+ if (spec.prec < 0) - spec.prec = 6; - if (regular_fg (np, p, spec, NULL) == -1) - goto error; -diff -Naurd mpfr-3.1.5-a/src/version.c mpfr-3.1.5-b/src/version.c ---- mpfr-3.1.5-a/src/version.c 2016-09-27 07:58:15.000000000 +0000 -+++ mpfr-3.1.5-b/src/version.c 2016-12-15 08:35:46.544430346 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.5"; -+ return "3.1.5-p1"; - } -diff -Naurd mpfr-3.1.5-a/tests/tsprintf.c mpfr-3.1.5-b/tests/tsprintf.c ---- mpfr-3.1.5-a/tests/tsprintf.c 2016-09-27 07:58:14.000000000 +0000 -+++ mpfr-3.1.5-b/tests/tsprintf.c 2016-12-15 08:35:46.520430308 +0000 -@@ -1251,6 +1251,25 @@ - check_emin_aux (MPFR_EMIN_MIN); - } - -+static void -+test20161214 (void) -+{ -+ mpfr_t x; -+ char buf[32]; -+ const char s[] = "0x0.fffffffffffff8p+1024"; -+ int r; -+ -+ mpfr_init2 (x, 64); -+ mpfr_set_str (x, s, 16, MPFR_RNDN); -+ r = mpfr_snprintf (buf, 32, "%.*RDf", -2, x); -+ MPFR_ASSERTN(r == 316); -+ r = mpfr_snprintf (buf, 32, "%.*RDf", INT_MIN + 1, x); -+ MPFR_ASSERTN(r == 316); -+ r = mpfr_snprintf (buf, 32, "%.*RDf", INT_MIN, x); -+ MPFR_ASSERTN(r == 316); -+ mpfr_clear (x); -+} -+ - int - main (int argc, char **argv) - { -@@ -1271,6 +1290,7 @@ - mixed (); - check_emax (); - check_emin (); -+ test20161214 (); - - #if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE) - #if MPFR_LCONV_DPTS -diff -Naurd mpfr-3.1.5-a/PATCHES mpfr-3.1.5-b/PATCHES ---- mpfr-3.1.5-a/PATCHES 2016-12-19 22:11:17.022676737 +0000 -+++ mpfr-3.1.5-b/PATCHES 2016-12-19 22:11:17.094676820 +0000 -@@ -0,0 +1 @@ -+strtofr -diff -Naurd mpfr-3.1.5-a/VERSION mpfr-3.1.5-b/VERSION ---- mpfr-3.1.5-a/VERSION 2016-12-15 08:35:46.544430346 +0000 -+++ mpfr-3.1.5-b/VERSION 2016-12-19 22:11:17.094676820 +0000 -@@ -1 +1 @@ --3.1.5-p1 -+3.1.5-p2 -diff -Naurd mpfr-3.1.5-a/src/mpfr.h mpfr-3.1.5-b/src/mpfr.h ---- mpfr-3.1.5-a/src/mpfr.h 2016-12-15 08:35:46.540430340 +0000 -+++ mpfr-3.1.5-b/src/mpfr.h 2016-12-19 22:11:17.090676815 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 5 --#define MPFR_VERSION_STRING "3.1.5-p1" -+#define MPFR_VERSION_STRING "3.1.5-p2" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.5-a/src/strtofr.c mpfr-3.1.5-b/src/strtofr.c ---- mpfr-3.1.5-a/src/strtofr.c 2016-09-27 07:58:15.000000000 +0000 -+++ mpfr-3.1.5-b/src/strtofr.c 2016-12-19 22:11:17.066676788 +0000 -@@ -743,11 +743,14 @@ - of the pstr_size most significant digits of pstr->mant, with - equality in case exact is non-zero. */ - -- /* test if rounding is possible, and if so exit the loop */ -- if (exact || mpfr_can_round_raw (result, ysize, -- (pstr->negative) ? -1 : 1, -- ysize_bits - err - 1, -- MPFR_RNDN, rnd, MPFR_PREC(x))) -+ /* test if rounding is possible, and if so exit the loop. -+ Note: we also need to be able to determine the correct ternary value, -+ thus we use the MPFR_PREC(x) + (rnd == MPFR_RNDN) trick. -+ For example if result = xxx...xxx111...111 and rnd = RNDN, -+ then we know the correct rounding is xxx...xx(x+1), but we cannot know -+ the correct ternary value. */ -+ if (exact || mpfr_round_p (result, ysize, ysize_bits - err - 1, -+ MPFR_PREC(x) + (rnd == MPFR_RNDN))) - break; - - next_loop: -diff -Naurd mpfr-3.1.5-a/src/version.c mpfr-3.1.5-b/src/version.c ---- mpfr-3.1.5-a/src/version.c 2016-12-15 08:35:46.544430346 +0000 -+++ mpfr-3.1.5-b/src/version.c 2016-12-19 22:11:17.094676820 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.5-p1"; -+ return "3.1.5-p2"; - } -diff -Naurd mpfr-3.1.5-a/tests/tstrtofr.c mpfr-3.1.5-b/tests/tstrtofr.c ---- mpfr-3.1.5-a/tests/tstrtofr.c 2016-09-27 07:58:14.000000000 +0000 -+++ mpfr-3.1.5-b/tests/tstrtofr.c 2016-12-19 22:11:17.066676788 +0000 -@@ -1191,6 +1191,24 @@ - mpfr_clears (e, x1, x2, (mpfr_ptr) 0); - } - -+/* Note: the number is 5^47/2^9. */ -+static void -+bug20161217 (void) -+{ -+ mpfr_t fp, z; -+ static const char * num = "0.1387778780781445675529539585113525390625e31"; -+ int inex; -+ -+ mpfr_init2 (fp, 110); -+ mpfr_init2 (z, 110); -+ inex = mpfr_strtofr (fp, num, NULL, 10, MPFR_RNDN); -+ MPFR_ASSERTN(inex == 0); -+ mpfr_set_str_binary (z, "10001100001000010011110110011101101001010000001011011110010001010100010100100110111101000010001011001100001101E-9"); -+ MPFR_ASSERTN(mpfr_equal_p (fp, z)); -+ mpfr_clear (fp); -+ mpfr_clear (z); -+} -+ - int - main (int argc, char *argv[]) - { -@@ -1205,6 +1223,7 @@ - test20100310 (); - bug20120814 (); - bug20120829 (); -+ bug20161217 (); - - tests_end_mpfr (); - return 0; Added: mpfr-3.1.6-p1.patch =================================================================== --- mpfr-3.1.6-p1.patch (rev 0) +++ mpfr-3.1.6-p1.patch 2017-11-19 22:34:53 UTC (rev 310459) @@ -0,0 +1,285 @@ +diff -Naurd mpfr-3.1.6-a/PATCHES mpfr-3.1.6-b/PATCHES +--- mpfr-3.1.6-a/PATCHES 2017-10-26 13:55:51.168013439 +0000 ++++ mpfr-3.1.6-b/PATCHES 2017-10-26 13:55:51.236013121 +0000 +@@ -0,0 +1 @@ ++mpfr_get +diff -Naurd mpfr-3.1.6-a/VERSION mpfr-3.1.6-b/VERSION +--- mpfr-3.1.6-a/VERSION 2017-09-07 11:36:44.000000000 +0000 ++++ mpfr-3.1.6-b/VERSION 2017-10-26 13:55:51.236013121 +0000 +@@ -1 +1 @@ +-3.1.6 ++3.1.6-p1 +diff -Naurd mpfr-3.1.6-a/src/get_ld.c mpfr-3.1.6-b/src/get_ld.c +--- mpfr-3.1.6-a/src/get_ld.c 2017-01-01 01:39:09.000000000 +0000 ++++ mpfr-3.1.6-b/src/get_ld.c 2017-10-26 13:55:51.208013252 +0000 +@@ -41,6 +41,9 @@ + mpfr_exp_t sh; /* exponent shift, so that x/2^sh is in the double range */ + mpfr_t y, z; + int sign; ++ MPFR_SAVE_EXPO_DECL (expo); ++ ++ MPFR_SAVE_EXPO_MARK (expo); + + /* first round x to the target long double precision, so that + all subsequent operations are exact (this avoids double rounding +@@ -103,6 +106,7 @@ + } + if (sign < 0) + r = -r; ++ MPFR_SAVE_EXPO_FREE (expo); + return r; + } + } +diff -Naurd mpfr-3.1.6-a/src/get_si.c mpfr-3.1.6-b/src/get_si.c +--- mpfr-3.1.6-a/src/get_si.c 2017-01-01 01:39:09.000000000 +0000 ++++ mpfr-3.1.6-b/src/get_si.c 2017-10-26 13:55:51.208013252 +0000 +@@ -28,6 +28,7 @@ + mpfr_prec_t prec; + long s; + mpfr_t x; ++ MPFR_SAVE_EXPO_DECL (expo); + + if (MPFR_UNLIKELY (!mpfr_fits_slong_p (f, rnd))) + { +@@ -39,14 +40,22 @@ + if (MPFR_IS_ZERO (f)) + return (long) 0; + +- /* determine prec of long */ +- for (s = LONG_MIN, prec = 0; s != 0; s /= 2, prec++) ++ /* Determine the precision of long. |LONG_MIN| may have one more bit ++ as an integer, but in this case, this is a power of 2, thus fits ++ in a precision-prec floating-point number. */ ++ for (s = LONG_MAX, prec = 0; s != 0; s /= 2, prec++) + { } + ++ MPFR_SAVE_EXPO_MARK (expo); ++ + /* first round to prec bits */ + mpfr_init2 (x, prec); + mpfr_rint (x, f, rnd); + ++ /* The flags from mpfr_rint are the wanted ones. In particular, ++ it sets the inexact flag when necessary. */ ++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); ++ + /* warning: if x=0, taking its exponent is illegal */ + if (MPFR_UNLIKELY (MPFR_IS_ZERO(x))) + s = 0; +@@ -65,5 +74,7 @@ + + mpfr_clear (x); + ++ MPFR_SAVE_EXPO_FREE (expo); ++ + return s; + } +diff -Naurd mpfr-3.1.6-a/src/get_sj.c mpfr-3.1.6-b/src/get_sj.c +--- mpfr-3.1.6-a/src/get_sj.c 2017-01-01 01:39:09.000000000 +0000 ++++ mpfr-3.1.6-b/src/get_sj.c 2017-10-26 13:55:51.208013252 +0000 +@@ -35,6 +35,7 @@ + intmax_t r; + mpfr_prec_t prec; + mpfr_t x; ++ MPFR_SAVE_EXPO_DECL (expo); + + if (MPFR_UNLIKELY (!mpfr_fits_intmax_p (f, rnd))) + { +@@ -46,20 +47,24 @@ + if (MPFR_IS_ZERO (f)) + return (intmax_t) 0; + +- /* determine the precision of intmax_t */ +- for (r = MPFR_INTMAX_MIN, prec = 0; r != 0; r /= 2, prec++) ++ /* Determine the precision of intmax_t. |INTMAX_MIN| may have one ++ more bit as an integer, but in this case, this is a power of 2, ++ thus fits in a precision-prec floating-point number. */ ++ for (r = MPFR_INTMAX_MAX, prec = 0; r != 0; r /= 2, prec++) + { } +- /* Note: though INTMAX_MAX would have been sufficient for the conversion, +- we chose INTMAX_MIN so that INTMAX_MIN - 1 is always representable in +- precision prec; this is useful to detect overflows in MPFR_RNDZ (will +- be needed later). */ + +- /* Now, r = 0. */ ++ MPFR_ASSERTD (r == 0); ++ ++ MPFR_SAVE_EXPO_MARK (expo); + + mpfr_init2 (x, prec); + mpfr_rint (x, f, rnd); + MPFR_ASSERTN (MPFR_IS_FP (x)); + ++ /* The flags from mpfr_rint are the wanted ones. In particular, ++ it sets the inexact flag when necessary. */ ++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); ++ + if (MPFR_NOTZERO (x)) + { + mp_limb_t *xp; +@@ -67,15 +72,15 @@ + + xp = MPFR_MANT (x); + sh = MPFR_GET_EXP (x); +- MPFR_ASSERTN ((mpfr_prec_t) sh <= prec); ++ MPFR_ASSERTN ((mpfr_prec_t) sh <= prec + 1); + if (MPFR_INTMAX_MIN + MPFR_INTMAX_MAX != 0 +- && MPFR_UNLIKELY ((mpfr_prec_t) sh == prec)) ++ && MPFR_UNLIKELY ((mpfr_prec_t) sh > prec)) + { + /* 2's complement and x <= INTMAX_MIN: in the case mp_limb_t + has the same size as intmax_t, we cannot use the code in + the for loop since the operations would be performed in + unsigned arithmetic. */ +- MPFR_ASSERTN (MPFR_IS_NEG (x) && (mpfr_powerof2_raw (x))); ++ MPFR_ASSERTN (MPFR_IS_NEG (x) && mpfr_powerof2_raw (x)); + r = MPFR_INTMAX_MIN; + } + else if (MPFR_IS_POS (x)) +@@ -117,6 +122,8 @@ + + mpfr_clear (x); + ++ MPFR_SAVE_EXPO_FREE (expo); ++ + return r; + } + +diff -Naurd mpfr-3.1.6-a/src/get_ui.c mpfr-3.1.6-b/src/get_ui.c +--- mpfr-3.1.6-a/src/get_ui.c 2017-01-01 01:39:09.000000000 +0000 ++++ mpfr-3.1.6-b/src/get_ui.c 2017-10-26 13:55:51.208013252 +0000 +@@ -30,6 +30,7 @@ + mpfr_t x; + mp_size_t n; + mpfr_exp_t exp; ++ MPFR_SAVE_EXPO_DECL (expo); + + if (MPFR_UNLIKELY (!mpfr_fits_ulong_p (f, rnd))) + { +@@ -44,10 +45,16 @@ + for (s = ULONG_MAX, prec = 0; s != 0; s /= 2, prec ++) + { } + ++ MPFR_SAVE_EXPO_MARK (expo); ++ + /* first round to prec bits */ + mpfr_init2 (x, prec); + mpfr_rint (x, f, rnd); + ++ /* The flags from mpfr_rint are the wanted ones. In particular, ++ it sets the inexact flag when necessary. */ ++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); ++ + /* warning: if x=0, taking its exponent is illegal */ + if (MPFR_IS_ZERO(x)) + s = 0; +@@ -61,5 +68,7 @@ + + mpfr_clear (x); + ++ MPFR_SAVE_EXPO_FREE (expo); ++ + return s; + } +diff -Naurd mpfr-3.1.6-a/src/get_uj.c mpfr-3.1.6-b/src/get_uj.c +--- mpfr-3.1.6-a/src/get_uj.c 2017-01-01 01:39:09.000000000 +0000 ++++ mpfr-3.1.6-b/src/get_uj.c 2017-10-26 13:55:51.208013252 +0000 +@@ -35,6 +35,7 @@ + uintmax_t r; + mpfr_prec_t prec; + mpfr_t x; ++ MPFR_SAVE_EXPO_DECL (expo); + + if (MPFR_UNLIKELY (!mpfr_fits_uintmax_p (f, rnd))) + { +@@ -50,12 +51,18 @@ + for (r = MPFR_UINTMAX_MAX, prec = 0; r != 0; r /= 2, prec++) + { } + +- /* Now, r = 0. */ ++ MPFR_ASSERTD (r == 0); ++ ++ MPFR_SAVE_EXPO_MARK (expo); + + mpfr_init2 (x, prec); + mpfr_rint (x, f, rnd); + MPFR_ASSERTN (MPFR_IS_FP (x)); + ++ /* The flags from mpfr_rint are the wanted ones. In particular, ++ it sets the inexact flag when necessary. */ ++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); ++ + if (MPFR_NOTZERO (x)) + { + mp_limb_t *xp; +@@ -76,6 +83,8 @@ + + mpfr_clear (x); + ++ MPFR_SAVE_EXPO_FREE (expo); ++ + return r; + } + +diff -Naurd mpfr-3.1.6-a/src/get_z.c mpfr-3.1.6-b/src/get_z.c +--- mpfr-3.1.6-a/src/get_z.c 2017-01-01 01:39:09.000000000 +0000 ++++ mpfr-3.1.6-b/src/get_z.c 2017-10-26 13:55:51.208013252 +0000 +@@ -29,6 +29,7 @@ + int inex; + mpfr_t r; + mpfr_exp_t exp; ++ MPFR_SAVE_EXPO_DECL (expo); + + if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f))) + { +@@ -41,6 +42,8 @@ + return 0; + } + ++ MPFR_SAVE_EXPO_MARK (expo); ++ + exp = MPFR_GET_EXP (f); + /* if exp <= 0, then |f|<1, thus |o(f)|<=1 */ + MPFR_ASSERTN (exp < 0 || exp <= MPFR_PREC_MAX); +@@ -50,6 +53,11 @@ + MPFR_ASSERTN (inex != 1 && inex != -1); /* integral part of f is + representable in r */ + MPFR_ASSERTN (MPFR_IS_FP (r)); ++ ++ /* The flags from mpfr_rint are the wanted ones. In particular, ++ it sets the inexact flag when necessary. */ ++ MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags); ++ + exp = mpfr_get_z_2exp (z, r); + if (exp >= 0) + mpz_mul_2exp (z, z, exp); +@@ -57,5 +65,7 @@ + mpz_fdiv_q_2exp (z, z, -exp); + mpfr_clear (r); + ++ MPFR_SAVE_EXPO_FREE (expo); ++ + return inex; + } +diff -Naurd mpfr-3.1.6-a/src/mpfr.h mpfr-3.1.6-b/src/mpfr.h +--- mpfr-3.1.6-a/src/mpfr.h 2017-09-07 11:36:44.000000000 +0000 ++++ mpfr-3.1.6-b/src/mpfr.h 2017-10-26 13:55:51.232013138 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 6 +-#define MPFR_VERSION_STRING "3.1.6" ++#define MPFR_VERSION_STRING "3.1.6-p1" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.6-a/src/version.c mpfr-3.1.6-b/src/version.c +--- mpfr-3.1.6-a/src/version.c 2017-09-07 11:36:44.000000000 +0000 ++++ mpfr-3.1.6-b/src/version.c 2017-10-26 13:55:51.232013138 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.6"; ++ return "3.1.6-p1"; + }