diff options
author | Alexey Neyman <stilor@att.net> | 2017-08-19 19:43:51 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-19 19:43:51 (GMT) |
commit | 434c205e89f9d4e06d0210ae8504fb6a88a11d00 (patch) | |
tree | 5c381b037991f0ef5a46bf539e83122894c84887 /packages/mpfr/3.1.3/130-muldiv-2exp-underflow.patch | |
parent | 73e8b0b228e29f6cac1b186cbcb7e3d1a47711ac (diff) | |
parent | d26dc5d5f5509232e7bd162baa70697c86307079 (diff) |
Merge pull request #803 from stilor/upgrades
Various package upgrades
Diffstat (limited to 'packages/mpfr/3.1.3/130-muldiv-2exp-underflow.patch')
-rw-r--r-- | packages/mpfr/3.1.3/130-muldiv-2exp-underflow.patch | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/packages/mpfr/3.1.3/130-muldiv-2exp-underflow.patch b/packages/mpfr/3.1.3/130-muldiv-2exp-underflow.patch deleted file mode 100644 index c7be09f..0000000 --- a/packages/mpfr/3.1.3/130-muldiv-2exp-underflow.patch +++ /dev/null @@ -1,217 +0,0 @@ -diff -Naurd mpfr-3.1.3-a/PATCHES mpfr-3.1.3-b/PATCHES ---- mpfr-3.1.3-a/PATCHES 2015-07-17 08:54:48.592799981 +0000 -+++ mpfr-3.1.3-b/PATCHES 2015-07-17 08:54:48.616811495 +0000 -@@ -0,0 +1 @@ -+muldiv-2exp-underflow -diff -Naurd mpfr-3.1.3-a/VERSION mpfr-3.1.3-b/VERSION ---- mpfr-3.1.3-a/VERSION 2015-07-02 10:50:08.126574142 +0000 -+++ mpfr-3.1.3-b/VERSION 2015-07-17 08:54:48.616811495 +0000 -@@ -1 +1 @@ --3.1.3-p2 -+3.1.3-p3 -diff -Naurd mpfr-3.1.3-a/src/div_2si.c mpfr-3.1.3-b/src/div_2si.c ---- mpfr-3.1.3-a/src/div_2si.c 2015-07-02 10:50:08.106573933 +0000 -+++ mpfr-3.1.3-b/src/div_2si.c 2015-07-17 08:54:48.608807656 +0000 -@@ -45,7 +45,8 @@ - if (rnd_mode == MPFR_RNDN && - (__gmpfr_emin > MPFR_EMAX_MAX - (n - 1) || - exp < __gmpfr_emin + (n - 1) || -- (inexact >= 0 && mpfr_powerof2_raw (y)))) -+ ((MPFR_IS_NEG (y) ? inexact <= 0 : inexact >= 0) && -+ mpfr_powerof2_raw (y)))) - rnd_mode = MPFR_RNDZ; - return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y)); - } -diff -Naurd mpfr-3.1.3-a/src/div_2ui.c mpfr-3.1.3-b/src/div_2ui.c ---- mpfr-3.1.3-a/src/div_2ui.c 2015-07-02 10:50:08.106573933 +0000 -+++ mpfr-3.1.3-b/src/div_2ui.c 2015-07-17 08:54:48.608807656 +0000 -@@ -44,7 +44,9 @@ - if (MPFR_UNLIKELY (n >= diffexp)) /* exp - n <= emin - 1 */ - { - if (rnd_mode == MPFR_RNDN && -- (n > diffexp || (inexact >= 0 && mpfr_powerof2_raw (y)))) -+ (n > diffexp || -+ ((MPFR_IS_NEG (y) ? inexact <= 0 : inexact >= 0) && -+ mpfr_powerof2_raw (y)))) - rnd_mode = MPFR_RNDZ; - return mpfr_underflow (y, rnd_mode, MPFR_SIGN (y)); - } -diff -Naurd mpfr-3.1.3-a/src/mpfr.h mpfr-3.1.3-b/src/mpfr.h ---- mpfr-3.1.3-a/src/mpfr.h 2015-07-02 10:50:08.126574142 +0000 -+++ mpfr-3.1.3-b/src/mpfr.h 2015-07-17 08:54:48.616811495 +0000 -@@ -27,7 +27,7 @@ - #define MPFR_VERSION_MAJOR 3 - #define MPFR_VERSION_MINOR 1 - #define MPFR_VERSION_PATCHLEVEL 3 --#define MPFR_VERSION_STRING "3.1.3-p2" -+#define MPFR_VERSION_STRING "3.1.3-p3" - - /* Macros dealing with MPFR VERSION */ - #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) -diff -Naurd mpfr-3.1.3-a/src/mul_2si.c mpfr-3.1.3-b/src/mul_2si.c ---- mpfr-3.1.3-a/src/mul_2si.c 2015-07-02 10:50:08.106573933 +0000 -+++ mpfr-3.1.3-b/src/mul_2si.c 2015-07-17 08:54:48.608807656 +0000 -@@ -48,7 +48,8 @@ - if (rnd_mode == MPFR_RNDN && - (__gmpfr_emin > MPFR_EMAX_MAX + (n + 1) || - exp < __gmpfr_emin - (n + 1) || -- (inexact >= 0 && mpfr_powerof2_raw (y)))) -+ ((MPFR_IS_NEG (y) ? inexact <= 0 : inexact >= 0) && -+ mpfr_powerof2_raw (y)))) - rnd_mode = MPFR_RNDZ; - return mpfr_underflow (y, rnd_mode, MPFR_SIGN(y)); - } -diff -Naurd mpfr-3.1.3-a/src/version.c mpfr-3.1.3-b/src/version.c ---- mpfr-3.1.3-a/src/version.c 2015-07-02 10:50:08.126574142 +0000 -+++ mpfr-3.1.3-b/src/version.c 2015-07-17 08:54:48.616811495 +0000 -@@ -25,5 +25,5 @@ - const char * - mpfr_get_version (void) - { -- return "3.1.3-p2"; -+ return "3.1.3-p3"; - } -diff -Naurd mpfr-3.1.3-a/tests/tmul_2exp.c mpfr-3.1.3-b/tests/tmul_2exp.c ---- mpfr-3.1.3-a/tests/tmul_2exp.c 2015-07-02 10:50:08.106573933 +0000 -+++ mpfr-3.1.3-b/tests/tmul_2exp.c 2015-07-17 08:54:48.608807656 +0000 -@@ -50,77 +50,82 @@ - { - mpfr_t x, y, z1, z2; - mpfr_exp_t emin; -- int i, k; -+ int i, k, s; - int prec; - int rnd; - int div; - int inex1, inex2; - unsigned int flags1, flags2; - -- /* Test mul_2si(x, e - k), div_2si(x, k - e) and div_2ui(x, k - e) -- * with emin = e, x = 1 + i/16, i in { -1, 0, 1 }, and k = 1 to 4, -- * by comparing the result with the one of a simple division. -+ /* Test mul_2si(x, e - k), div_2si(x, k - e) and div_2ui(x, k - e) with -+ * emin = e, x = s * (1 + i/16), i in { -1, 0, 1 }, s in { -1, 1 }, and -+ * k = 1 to 4, by comparing the result with the one of a simple division. - */ - emin = mpfr_get_emin (); - set_emin (e); - mpfr_inits2 (8, x, y, (mpfr_ptr) 0); - for (i = 15; i <= 17; i++) -- { -- inex1 = mpfr_set_ui_2exp (x, i, -4, MPFR_RNDN); -- MPFR_ASSERTN (inex1 == 0); -- for (prec = 6; prec >= 3; prec -= 3) -- { -- mpfr_inits2 (prec, z1, z2, (mpfr_ptr) 0); -- RND_LOOP (rnd) -- for (k = 1; k <= 4; k++) -- { -- /* The following one is assumed to be correct. */ -- inex1 = mpfr_mul_2si (y, x, e, MPFR_RNDN); -- MPFR_ASSERTN (inex1 == 0); -- inex1 = mpfr_set_ui (z1, 1 << k, MPFR_RNDN); -- MPFR_ASSERTN (inex1 == 0); -- mpfr_clear_flags (); -- /* Do not use mpfr_div_ui to avoid the optimization -- by mpfr_div_2si. */ -- inex1 = mpfr_div (z1, y, z1, (mpfr_rnd_t) rnd); -- flags1 = __gmpfr_flags; -- -- for (div = 0; div <= 2; div++) -+ for (s = 1; s >= -1; s -= 2) -+ { -+ inex1 = mpfr_set_si_2exp (x, s * i, -4, MPFR_RNDN); -+ MPFR_ASSERTN (inex1 == 0); -+ for (prec = 6; prec >= 3; prec -= 3) -+ { -+ mpfr_inits2 (prec, z1, z2, (mpfr_ptr) 0); -+ RND_LOOP (rnd) -+ for (k = 1; k <= 4; k++) - { -+ /* The following one is assumed to be correct. */ -+ inex1 = mpfr_mul_2si (y, x, e, MPFR_RNDN); -+ MPFR_ASSERTN (inex1 == 0); -+ inex1 = mpfr_set_ui (z1, 1 << k, MPFR_RNDN); -+ MPFR_ASSERTN (inex1 == 0); - mpfr_clear_flags (); -- inex2 = div == 0 ? -- mpfr_mul_2si (z2, x, e - k, (mpfr_rnd_t) rnd) : div == 1 ? -- mpfr_div_2si (z2, x, k - e, (mpfr_rnd_t) rnd) : -- mpfr_div_2ui (z2, x, k - e, (mpfr_rnd_t) rnd); -- flags2 = __gmpfr_flags; -- if (flags1 == flags2 && SAME_SIGN (inex1, inex2) && -- mpfr_equal_p (z1, z2)) -- continue; -- printf ("Error in underflow("); -- if (e == MPFR_EMIN_MIN) -- printf ("MPFR_EMIN_MIN"); -- else if (e == emin) -- printf ("default emin"); -- else if (e >= LONG_MIN) -- printf ("%ld", (long) e); -- else -- printf ("<LONG_MIN"); -- printf (") with mpfr_%s,\nx = %d/16, prec = %d, k = %d, " -- "%s\n", div == 0 ? "mul_2si" : div == 1 ? -- "div_2si" : "div_2ui", i, prec, k, -- mpfr_print_rnd_mode ((mpfr_rnd_t) rnd)); -- printf ("Expected "); -- mpfr_out_str (stdout, 16, 0, z1, MPFR_RNDN); -- printf (", inex = %d, flags = %u\n", SIGN (inex1), flags1); -- printf ("Got "); -- mpfr_out_str (stdout, 16, 0, z2, MPFR_RNDN); -- printf (", inex = %d, flags = %u\n", SIGN (inex2), flags2); -- exit (1); -- } /* div */ -- } /* k */ -- mpfr_clears (z1, z2, (mpfr_ptr) 0); -- } /* prec */ -- } /* i */ -+ /* Do not use mpfr_div_ui to avoid the optimization -+ by mpfr_div_2si. */ -+ inex1 = mpfr_div (z1, y, z1, (mpfr_rnd_t) rnd); -+ flags1 = __gmpfr_flags; -+ -+ for (div = 0; div <= 2; div++) -+ { -+ mpfr_clear_flags (); -+ inex2 = -+ div == 0 ? -+ mpfr_mul_2si (z2, x, e - k, (mpfr_rnd_t) rnd) : -+ div == 1 ? -+ mpfr_div_2si (z2, x, k - e, (mpfr_rnd_t) rnd) : -+ mpfr_div_2ui (z2, x, k - e, (mpfr_rnd_t) rnd); -+ flags2 = __gmpfr_flags; -+ if (flags1 == flags2 && SAME_SIGN (inex1, inex2) && -+ mpfr_equal_p (z1, z2)) -+ continue; -+ printf ("Error in underflow("); -+ if (e == MPFR_EMIN_MIN) -+ printf ("MPFR_EMIN_MIN"); -+ else if (e == emin) -+ printf ("default emin"); -+ else if (e >= LONG_MIN) -+ printf ("%ld", (long) e); -+ else -+ printf ("<LONG_MIN"); -+ printf (") with mpfr_%s,\nx = %d/16, prec = %d, k = %d," -+ " %s\n", div == 0 ? "mul_2si" : div == 1 ? -+ "div_2si" : "div_2ui", s * i, prec, k, -+ mpfr_print_rnd_mode ((mpfr_rnd_t) rnd)); -+ printf ("Expected "); -+ mpfr_out_str (stdout, 16, 0, z1, MPFR_RNDN); -+ printf (", inex = %d, flags = %u\n", -+ SIGN (inex1), flags1); -+ printf ("Got "); -+ mpfr_out_str (stdout, 16, 0, z2, MPFR_RNDN); -+ printf (", inex = %d, flags = %u\n", -+ SIGN (inex2), flags2); -+ exit (1); -+ } /* div */ -+ } /* k */ -+ mpfr_clears (z1, z2, (mpfr_ptr) 0); -+ } /* prec */ -+ } /* i */ - mpfr_clears (x, y, (mpfr_ptr) 0); - set_emin (emin); - } |