vapier 14/11/01 07:24:34 Added: patch09 patch08 patch10 patch07 patch06 Log: Version bump. Add multilib support #510248 by Thibaud CANALE. (Portage version: 2.2.14/cvs/Linux x86_64, signed Manifest commit with key D2E96200)
Revision Changes Path 1.1 dev-libs/mpfr/files/3.1.2/patch09 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch09?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch09?rev=1.1&content-type=text/plain Index: patch09 =================================================================== diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES --- mpfr-3.1.2-a/PATCHES 2014-06-30 15:15:25.533266905 +0000 +++ mpfr-3.1.2-b/PATCHES 2014-06-30 15:15:25.617269178 +0000 @@ -0,0 +1 @@ +div-overflow diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION --- mpfr-3.1.2-a/VERSION 2014-06-30 15:15:25.529266797 +0000 +++ mpfr-3.1.2-b/VERSION 2014-06-30 15:15:25.617269178 +0000 @@ -1 +1 @@ -3.1.2-p8 +3.1.2-p9 diff -Naurd mpfr-3.1.2-a/src/div.c mpfr-3.1.2-b/src/div.c --- mpfr-3.1.2-a/src/div.c 2013-03-13 15:37:33.000000000 +0000 +++ mpfr-3.1.2-b/src/div.c 2014-06-30 15:15:25.585268312 +0000 @@ -750,7 +750,9 @@ truncate_check_qh: if (qh) { - qexp ++; + if (MPFR_LIKELY (qexp < MPFR_EXP_MAX)) + qexp ++; + /* else qexp is now incorrect, but one will still get an overflow */ q0p[q0size - 1] = MPFR_LIMB_HIGHBIT; } goto truncate; @@ -765,7 +767,9 @@ inex = 1; /* always here */ if (mpn_add_1 (q0p, q0p, q0size, MPFR_LIMB_ONE << sh)) { - qexp ++; + if (MPFR_LIKELY (qexp < MPFR_EXP_MAX)) + qexp ++; + /* else qexp is now incorrect, but one will still get an overflow */ q0p[q0size - 1] = MPFR_LIMB_HIGHBIT; } diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h --- mpfr-3.1.2-a/src/mpfr.h 2014-06-30 15:15:25.533266905 +0000 +++ mpfr-3.1.2-b/src/mpfr.h 2014-06-30 15:15:25.613269070 +0000 @@ -27,7 +27,7 @@ #define MPFR_VERSION_MAJOR 3 #define MPFR_VERSION_MINOR 1 #define MPFR_VERSION_PATCHLEVEL 2 -#define MPFR_VERSION_STRING "3.1.2-p8" +#define MPFR_VERSION_STRING "3.1.2-p9" /* Macros dealing with MPFR VERSION */ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c --- mpfr-3.1.2-a/src/version.c 2014-06-30 15:15:25.533266905 +0000 +++ mpfr-3.1.2-b/src/version.c 2014-06-30 15:15:25.613269070 +0000 @@ -25,5 +25,5 @@ const char * mpfr_get_version (void) { - return "3.1.2-p8"; + return "3.1.2-p9"; } diff -Naurd mpfr-3.1.2-a/tests/tdiv.c mpfr-3.1.2-b/tests/tdiv.c --- mpfr-3.1.2-a/tests/tdiv.c 2013-03-13 15:37:44.000000000 +0000 +++ mpfr-3.1.2-b/tests/tdiv.c 2014-06-30 15:15:25.585268312 +0000 @@ -1104,6 +1104,96 @@ #define RAND_FUNCTION(x) mpfr_random2(x, MPFR_LIMB_SIZE (x), randlimb () % 100, RANDS) #include "tgeneric.c" +static void +test_extreme (void) +{ + mpfr_t x, y, z; + mpfr_exp_t emin, emax; + mpfr_prec_t p[4] = { 8, 32, 64, 256 }; + int xi, yi, zi, j, r; + unsigned int flags, ex_flags; + + emin = mpfr_get_emin (); + emax = mpfr_get_emax (); + + mpfr_set_emin (MPFR_EMIN_MIN); + mpfr_set_emax (MPFR_EMAX_MAX); + + for (xi = 0; xi < 4; xi++) + { + mpfr_init2 (x, p[xi]); + mpfr_setmax (x, MPFR_EMAX_MAX); + MPFR_ASSERTN (mpfr_check (x)); + for (yi = 0; yi < 4; yi++) + { + mpfr_init2 (y, p[yi]); + mpfr_setmin (y, MPFR_EMIN_MIN); + for (j = 0; j < 2; j++) + { + MPFR_ASSERTN (mpfr_check (y)); + for (zi = 0; zi < 4; zi++) + { + mpfr_init2 (z, p[zi]); + RND_LOOP (r) + { + mpfr_clear_flags (); + mpfr_div (z, x, y, (mpfr_rnd_t) r); + flags = __gmpfr_flags; + MPFR_ASSERTN (mpfr_check (z)); + ex_flags = MPFR_FLAGS_OVERFLOW | MPFR_FLAGS_INEXACT; + if (flags != ex_flags) + { + printf ("Bad flags in test_extreme on z = a/b" + " with %s and\n", + mpfr_print_rnd_mode ((mpfr_rnd_t) r)); + printf ("a = "); + mpfr_dump (x); + printf ("b = "); + mpfr_dump (y); + printf ("Expected flags:"); + flags_out (ex_flags); + printf ("Got flags: "); + flags_out (flags); + printf ("z = "); + mpfr_dump (z); + exit (1); + } + mpfr_clear_flags (); + mpfr_div (z, y, x, (mpfr_rnd_t) r); + flags = __gmpfr_flags; + MPFR_ASSERTN (mpfr_check (z)); + ex_flags = MPFR_FLAGS_UNDERFLOW | MPFR_FLAGS_INEXACT; + if (flags != ex_flags) + { + printf ("Bad flags in test_extreme on z = a/b" + " with %s and\n", + mpfr_print_rnd_mode ((mpfr_rnd_t) r)); + printf ("a = "); + mpfr_dump (y); + printf ("b = "); + mpfr_dump (x); + printf ("Expected flags:"); + flags_out (ex_flags); + printf ("Got flags: "); + flags_out (flags); + printf ("z = "); + mpfr_dump (z); + exit (1); + } + } + mpfr_clear (z); + } /* zi */ + mpfr_nextabove (y); + } /* j */ + mpfr_clear (y); + } /* yi */ + mpfr_clear (x); + } /* xi */ + + set_emin (emin); + set_emax (emax); +} + int main (int argc, char *argv[]) { @@ -1130,6 +1220,7 @@ test_20070603 (); test_20070628 (); test_generic (2, 800, 50); + test_extreme (); tests_end_mpfr (); return 0; 1.1 dev-libs/mpfr/files/3.1.2/patch08 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch08?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch08?rev=1.1&content-type=text/plain Index: patch08 =================================================================== diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES --- mpfr-3.1.2-a/PATCHES 2014-04-15 22:20:32.243481506 +0000 +++ mpfr-3.1.2-b/PATCHES 2014-04-15 22:22:32.418722707 +0000 @@ -0,0 +1 @@ +gmp6-compat diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION --- mpfr-3.1.2-a/VERSION 2014-04-15 22:20:20.755171478 +0000 +++ mpfr-3.1.2-b/VERSION 2014-04-15 22:21:45.225450147 +0000 @@ -1 +1 @@ -3.1.2-p7 +3.1.2-p8 diff -Naurd mpfr-3.1.2-a/configure mpfr-3.1.2-b/configure --- mpfr-3.1.2-a/configure 2013-03-13 15:38:20.000000000 +0000 +++ mpfr-3.1.2-b/configure 2014-04-15 22:21:38.821277476 +0000 @@ -14545,26 +14545,30 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -if test "$use_gmp_build" = yes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for valid GMP_NUMB_BITS" >&5 -$as_echo_n "checking for valid GMP_NUMB_BITS... " >&6; } - if test "$cross_compiling" = yes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency" >&5 +$as_echo_n "checking for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency... " >&6; } +if test "$cross_compiling" = yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: can't test" >&5 $as_echo "can't test" >&6; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include <stdio.h> #include <limits.h> #include "gmp.h" -#include "gmp-impl.h" int main () { - return GMP_NUMB_BITS == BYTES_PER_MP_LIMB * CHAR_BIT - && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1; + if (GMP_NUMB_BITS == sizeof(mp_limb_t) * CHAR_BIT) + return 0; + fprintf (stderr, "GMP_NUMB_BITS = %ld\n", (long) GMP_NUMB_BITS); + fprintf (stderr, "sizeof(mp_limb_t) = %ld\n", (long) sizeof(mp_limb_t)); + fprintf (stderr, "sizeof(mp_limb_t) * CHAR_BIT = %ld != GMP_NUMB_BITS\n", + (long) (sizeof(mp_limb_t) * CHAR_BIT)); + return 1; ; return 0; @@ -14577,14 +14581,14 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error $? "GMP_NUMB_BITS is incorrect. -You probably need to change some of the GMP or MPFR compile options." "$LINENO" 5 + as_fn_error $? "GMP_NUMB_BITS and sizeof(mp_limb_t) are not consistent. +You probably need to change some of the GMP or MPFR compile options. +See 'config.log' for details (search for GMP_NUMB_BITS)." "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -fi if test "$dont_link_with_gmp" = yes ; then diff -Naurd mpfr-3.1.2-a/configure.ac mpfr-3.1.2-b/configure.ac --- mpfr-3.1.2-a/configure.ac 2013-03-13 15:37:46.000000000 +0000 +++ mpfr-3.1.2-b/configure.ac 2013-03-13 15:37:46.000000000 +0000 @@ -435,23 +435,29 @@ ]) fi -dnl Check for valid GMP_NUMB_BITS and BYTES_PER_MP_LIMB +dnl Check for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency. +dnl Problems may occur if gmp.h was generated with some ABI +dnl and is used with another ABI (or if nails are used). dnl This test doesn't need to link with libgmp (at least it shouldn't). -if test "$use_gmp_build" = yes ; then - AC_MSG_CHECKING(for valid GMP_NUMB_BITS) - AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +AC_MSG_CHECKING(for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency) +AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include <stdio.h> #include <limits.h> #include "gmp.h" -#include "gmp-impl.h" ]], [[ - return GMP_NUMB_BITS == BYTES_PER_MP_LIMB * CHAR_BIT - && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ? 0 : 1; + if (GMP_NUMB_BITS == sizeof(mp_limb_t) * CHAR_BIT) + return 0; + fprintf (stderr, "GMP_NUMB_BITS = %ld\n", (long) GMP_NUMB_BITS); + fprintf (stderr, "sizeof(mp_limb_t) = %ld\n", (long) sizeof(mp_limb_t)); + fprintf (stderr, "sizeof(mp_limb_t) * CHAR_BIT = %ld != GMP_NUMB_BITS\n", + (long) (sizeof(mp_limb_t) * CHAR_BIT)); + return 1; ]])], [AC_MSG_RESULT(yes)], [ AC_MSG_RESULT(no) - AC_MSG_ERROR([GMP_NUMB_BITS is incorrect. -You probably need to change some of the GMP or MPFR compile options.])], + AC_MSG_ERROR([GMP_NUMB_BITS and sizeof(mp_limb_t) are not consistent. +You probably need to change some of the GMP or MPFR compile options. +See 'config.log' for details (search for GMP_NUMB_BITS).])], [AC_MSG_RESULT([can't test])]) -fi dnl We really need to link using libtool. But it is impossible with the current diff -Naurd mpfr-3.1.2-a/src/init2.c mpfr-3.1.2-b/src/init2.c --- mpfr-3.1.2-a/src/init2.c 2013-03-13 15:37:32.000000000 +0000 +++ mpfr-3.1.2-b/src/init2.c 2014-04-15 22:21:06.220398489 +0000 @@ -30,11 +30,11 @@ /* Check if we can represent the number of limbs * associated to the maximum of mpfr_prec_t*/ - MPFR_ASSERTN( MP_SIZE_T_MAX >= (MPFR_PREC_MAX/BYTES_PER_MP_LIMB) ); + MPFR_ASSERTN( MP_SIZE_T_MAX >= (MPFR_PREC_MAX/MPFR_BYTES_PER_MP_LIMB) ); - /* Check for correct GMP_NUMB_BITS and BYTES_PER_MP_LIMB */ - MPFR_ASSERTN( GMP_NUMB_BITS == BYTES_PER_MP_LIMB * CHAR_BIT - && sizeof(mp_limb_t) == BYTES_PER_MP_LIMB ); + /* Check for correct GMP_NUMB_BITS and MPFR_BYTES_PER_MP_LIMB */ + MPFR_ASSERTN( GMP_NUMB_BITS == MPFR_BYTES_PER_MP_LIMB * CHAR_BIT + && sizeof(mp_limb_t) == MPFR_BYTES_PER_MP_LIMB ); MPFR_ASSERTN (mp_bits_per_limb == GMP_NUMB_BITS); diff -Naurd mpfr-3.1.2-a/src/mpfr-gmp.h mpfr-3.1.2-b/src/mpfr-gmp.h --- mpfr-3.1.2-a/src/mpfr-gmp.h 2013-03-13 15:37:32.000000000 +0000 +++ mpfr-3.1.2-b/src/mpfr-gmp.h 2014-04-15 22:21:06.220398489 +0000 @@ -72,7 +72,6 @@ #endif /* Define some macros */ -#define BYTES_PER_MP_LIMB (GMP_NUMB_BITS/CHAR_BIT) #define MP_LIMB_T_MAX (~(mp_limb_t)0) @@ -96,19 +95,19 @@ #define SHRT_HIGHBIT SHRT_MIN /* MP_LIMB macros */ -#define MPN_ZERO(dst, n) memset((dst), 0, (n)*BYTES_PER_MP_LIMB) -#define MPN_COPY_DECR(dst,src,n) memmove((dst),(src),(n)*BYTES_PER_MP_LIMB) -#define MPN_COPY_INCR(dst,src,n) memmove((dst),(src),(n)*BYTES_PER_MP_LIMB) +#define MPN_ZERO(dst, n) memset((dst), 0, (n)*MPFR_BYTES_PER_MP_LIMB) +#define MPN_COPY_DECR(dst,src,n) memmove((dst),(src),(n)*MPFR_BYTES_PER_MP_LIMB) +#define MPN_COPY_INCR(dst,src,n) memmove((dst),(src),(n)*MPFR_BYTES_PER_MP_LIMB) #define MPN_COPY(dst,src,n) \ do \ { \ if ((dst) != (src)) \ { \ MPFR_ASSERTD ((char *) (dst) >= (char *) (src) + \ - (n) * BYTES_PER_MP_LIMB || \ + (n) * MPFR_BYTES_PER_MP_LIMB || \ (char *) (src) >= (char *) (dst) + \ - (n) * BYTES_PER_MP_LIMB); \ - memcpy ((dst), (src), (n) * BYTES_PER_MP_LIMB); \ + (n) * MPFR_BYTES_PER_MP_LIMB); \ + memcpy ((dst), (src), (n) * MPFR_BYTES_PER_MP_LIMB); \ } \ } \ while (0) diff -Naurd mpfr-3.1.2-a/src/mpfr-impl.h mpfr-3.1.2-b/src/mpfr-impl.h --- mpfr-3.1.2-a/src/mpfr-impl.h 2013-10-09 13:34:21.000000000 +0000 +++ mpfr-3.1.2-b/src/mpfr-impl.h 2014-04-15 22:21:06.220398489 +0000 @@ -191,7 +191,7 @@ # endif #endif - +#define MPFR_BYTES_PER_MP_LIMB (GMP_NUMB_BITS/CHAR_BIT) /****************************************************** ******************** Check GMP *********************** @@ -930,7 +930,7 @@ #define MPFR_SET_ALLOC_SIZE(x, n) \ ( ((mp_size_t*) MPFR_MANT(x))[-1] = n) #define MPFR_MALLOC_SIZE(s) \ - ( sizeof(mpfr_size_limb_t) + BYTES_PER_MP_LIMB * ((size_t) s) ) + ( sizeof(mpfr_size_limb_t) + MPFR_BYTES_PER_MP_LIMB * ((size_t) s) ) #define MPFR_SET_MANT_PTR(x,p) \ (MPFR_MANT(x) = (mp_limb_t*) ((mpfr_size_limb_t*) p + 1)) #define MPFR_GET_REAL_PTR(x) \ @@ -964,7 +964,7 @@ #endif #define MPFR_TMP_LIMBS_ALLOC(N) \ - ((mp_limb_t *) MPFR_TMP_ALLOC ((size_t) (N) * BYTES_PER_MP_LIMB)) + ((mp_limb_t *) MPFR_TMP_ALLOC ((size_t) (N) * MPFR_BYTES_PER_MP_LIMB)) /* temporary allocate 1 limb at xp, and initialize mpfr variable x */ /* The temporary var doesn't have any size field, but it doesn't matter diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h --- mpfr-3.1.2-a/src/mpfr.h 2014-04-15 22:20:20.755171478 +0000 +++ mpfr-3.1.2-b/src/mpfr.h 2014-04-15 22:21:45.225450147 +0000 @@ -27,7 +27,7 @@ #define MPFR_VERSION_MAJOR 3 #define MPFR_VERSION_MINOR 1 #define MPFR_VERSION_PATCHLEVEL 2 -#define MPFR_VERSION_STRING "3.1.2-p7" +#define MPFR_VERSION_STRING "3.1.2-p8" /* Macros dealing with MPFR VERSION */ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) diff -Naurd mpfr-3.1.2-a/src/mul.c mpfr-3.1.2-b/src/mul.c --- mpfr-3.1.2-a/src/mul.c 2013-03-13 15:37:37.000000000 +0000 +++ mpfr-3.1.2-b/src/mul.c 2014-04-15 22:21:06.224398597 +0000 @@ -106,7 +106,7 @@ MPFR_ASSERTD(tn <= k); /* Check for no size_t overflow*/ - MPFR_ASSERTD((size_t) k <= ((size_t) -1) / BYTES_PER_MP_LIMB); + MPFR_ASSERTD((size_t) k <= ((size_t) -1) / MPFR_BYTES_PER_MP_LIMB); MPFR_TMP_MARK(marker); tmp = MPFR_TMP_LIMBS_ALLOC (k); @@ -301,7 +301,7 @@ MPFR_ASSERTD (tn <= k); /* tn <= k, thus no int overflow */ /* Check for no size_t overflow*/ - MPFR_ASSERTD ((size_t) k <= ((size_t) -1) / BYTES_PER_MP_LIMB); + MPFR_ASSERTD ((size_t) k <= ((size_t) -1) / MPFR_BYTES_PER_MP_LIMB); MPFR_TMP_MARK (marker); tmp = MPFR_TMP_LIMBS_ALLOC (k); diff -Naurd mpfr-3.1.2-a/src/stack_interface.c mpfr-3.1.2-b/src/stack_interface.c --- mpfr-3.1.2-a/src/stack_interface.c 2013-03-13 15:37:32.000000000 +0000 +++ mpfr-3.1.2-b/src/stack_interface.c 2014-04-15 22:21:06.220398489 +0000 @@ -26,7 +26,7 @@ size_t mpfr_custom_get_size (mpfr_prec_t prec) { - return MPFR_PREC2LIMBS (prec) * BYTES_PER_MP_LIMB; + return MPFR_PREC2LIMBS (prec) * MPFR_BYTES_PER_MP_LIMB; } #undef mpfr_custom_init diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c --- mpfr-3.1.2-a/src/version.c 2014-04-15 22:20:20.755171478 +0000 +++ mpfr-3.1.2-b/src/version.c 2014-04-15 22:21:45.225450147 +0000 @@ -25,5 +25,5 @@ const char * mpfr_get_version (void) { - return "3.1.2-p7"; + return "3.1.2-p8"; } 1.1 dev-libs/mpfr/files/3.1.2/patch10 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch10?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch10?rev=1.1&content-type=text/plain Index: patch10 =================================================================== diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES --- mpfr-3.1.2-a/PATCHES 2014-06-30 15:17:53.337268149 +0000 +++ mpfr-3.1.2-b/PATCHES 2014-06-30 15:17:53.417270314 +0000 @@ -0,0 +1 @@ +vasprintf diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION --- mpfr-3.1.2-a/VERSION 2014-06-30 15:17:53.337268149 +0000 +++ mpfr-3.1.2-b/VERSION 2014-06-30 15:17:53.413270206 +0000 @@ -1 +1 @@ -3.1.2-p9 +3.1.2-p10 diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h --- mpfr-3.1.2-a/src/mpfr.h 2014-06-30 15:17:53.337268149 +0000 +++ mpfr-3.1.2-b/src/mpfr.h 2014-06-30 15:17:53.413270206 +0000 @@ -27,7 +27,7 @@ #define MPFR_VERSION_MAJOR 3 #define MPFR_VERSION_MINOR 1 #define MPFR_VERSION_PATCHLEVEL 2 -#define MPFR_VERSION_STRING "3.1.2-p9" +#define MPFR_VERSION_STRING "3.1.2-p10" /* Macros dealing with MPFR VERSION */ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) diff -Naurd mpfr-3.1.2-a/src/vasprintf.c mpfr-3.1.2-b/src/vasprintf.c --- mpfr-3.1.2-a/src/vasprintf.c 2013-11-15 00:51:49.267334408 +0000 +++ mpfr-3.1.2-b/src/vasprintf.c 2014-06-30 15:17:53.377269231 +0000 @@ -884,14 +884,18 @@ first digit, we want the exponent for radix two and the decimal point AFTER the first digit. */ { - MPFR_ASSERTN (exp > MPFR_EMIN_MIN /4); /* possible overflow */ + /* An integer overflow is normally not possible since MPFR_EXP_MIN + is twice as large as MPFR_EMIN_MIN. */ + MPFR_ASSERTN (exp > (MPFR_EXP_MIN + 3) / 4); exp = (exp - 1) * 4; } else /* EXP is the exponent for decimal point BEFORE the first digit, we want the exponent for decimal point AFTER the first digit. */ { - MPFR_ASSERTN (exp > MPFR_EMIN_MIN); /* possible overflow */ + /* An integer overflow is normally not possible since MPFR_EXP_MIN + is twice as large as MPFR_EMIN_MIN. */ + MPFR_ASSERTN (exp > MPFR_EXP_MIN); --exp; } } diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c --- mpfr-3.1.2-a/src/version.c 2014-06-30 15:17:53.337268149 +0000 +++ mpfr-3.1.2-b/src/version.c 2014-06-30 15:17:53.413270206 +0000 @@ -25,5 +25,5 @@ const char * mpfr_get_version (void) { - return "3.1.2-p9"; + return "3.1.2-p10"; } diff -Naurd mpfr-3.1.2-a/tests/tsprintf.c mpfr-3.1.2-b/tests/tsprintf.c --- mpfr-3.1.2-a/tests/tsprintf.c 2013-11-15 00:51:49.267334408 +0000 +++ mpfr-3.1.2-b/tests/tsprintf.c 2014-06-30 15:17:53.377269231 +0000 @@ -1184,6 +1184,69 @@ check_emax_aux (MPFR_EMAX_MAX); } +static void +check_emin_aux (mpfr_exp_t e) +{ + mpfr_t x; + char *s1, s2[256]; + int i; + mpfr_exp_t emin; + mpz_t ee; + + MPFR_ASSERTN (e >= LONG_MIN); + emin = mpfr_get_emin (); + set_emin (e); + + mpfr_init2 (x, 16); + mpz_init (ee); + + mpfr_setmin (x, e); + mpz_set_si (ee, e); + mpz_sub_ui (ee, ee, 1); + + i = mpfr_asprintf (&s1, "%Ra", x); + MPFR_ASSERTN (i > 0); + + gmp_snprintf (s2, 256, "0x1p%Zd", ee); + + if (strcmp (s1, s2) != 0) + { + printf ("Error in check_emin_aux for emin = %ld\n", (long) e); + printf ("Expected %s\n", s2); + printf ("Got %s\n", s1); + exit (1); + } + + mpfr_free_str (s1); + + i = mpfr_asprintf (&s1, "%Rb", x); + MPFR_ASSERTN (i > 0); + + gmp_snprintf (s2, 256, "1p%Zd", ee); + + if (strcmp (s1, s2) != 0) + { + printf ("Error in check_emin_aux for emin = %ld\n", (long) e); + printf ("Expected %s\n", s2); + printf ("Got %s\n", s1); + exit (1); + } + + mpfr_free_str (s1); + + mpfr_clear (x); + mpz_clear (ee); + set_emin (emin); +} + +static void +check_emin (void) +{ + check_emin_aux (-15); + check_emin_aux (mpfr_get_emin ()); + check_emin_aux (MPFR_EMIN_MIN); +} + int main (int argc, char **argv) { @@ -1203,6 +1266,7 @@ decimal (); mixed (); check_emax (); + check_emin (); #if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE) locale_da_DK (); 1.1 dev-libs/mpfr/files/3.1.2/patch07 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch07?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch07?rev=1.1&content-type=text/plain Index: patch07 =================================================================== diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES --- mpfr-3.1.2-a/PATCHES 2014-04-15 22:04:57.090286262 +0000 +++ mpfr-3.1.2-b/PATCHES 2014-04-15 22:04:57.162288198 +0000 @@ -0,0 +1 @@ +exp3 diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION --- mpfr-3.1.2-a/VERSION 2014-04-15 22:04:57.086286154 +0000 +++ mpfr-3.1.2-b/VERSION 2014-04-15 22:04:57.162288198 +0000 @@ -1 +1 @@ -3.1.2-p6 +3.1.2-p7 diff -Naurd mpfr-3.1.2-a/src/exp3.c mpfr-3.1.2-b/src/exp3.c --- mpfr-3.1.2-a/src/exp3.c 2013-03-13 15:37:34.000000000 +0000 +++ mpfr-3.1.2-b/src/exp3.c 2014-04-15 22:04:57.126287230 +0000 @@ -283,7 +283,7 @@ } } - if (mpfr_can_round (shift_x > 0 ? t : tmp, realprec, MPFR_RNDD, MPFR_RNDZ, + if (mpfr_can_round (shift_x > 0 ? t : tmp, realprec, MPFR_RNDN, MPFR_RNDZ, MPFR_PREC(y) + (rnd_mode == MPFR_RNDN))) { inexact = mpfr_set (y, shift_x > 0 ? t : tmp, rnd_mode); diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h --- mpfr-3.1.2-a/src/mpfr.h 2014-04-15 22:04:57.086286154 +0000 +++ mpfr-3.1.2-b/src/mpfr.h 2014-04-15 22:04:57.162288198 +0000 @@ -27,7 +27,7 @@ #define MPFR_VERSION_MAJOR 3 #define MPFR_VERSION_MINOR 1 #define MPFR_VERSION_PATCHLEVEL 2 -#define MPFR_VERSION_STRING "3.1.2-p6" +#define MPFR_VERSION_STRING "3.1.2-p7" /* Macros dealing with MPFR VERSION */ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c --- mpfr-3.1.2-a/src/version.c 2014-04-15 22:04:57.090286262 +0000 +++ mpfr-3.1.2-b/src/version.c 2014-04-15 22:04:57.162288198 +0000 @@ -25,5 +25,5 @@ const char * mpfr_get_version (void) { - return "3.1.2-p6"; + return "3.1.2-p7"; } diff -Naurd mpfr-3.1.2-a/tests/texp.c mpfr-3.1.2-b/tests/texp.c --- mpfr-3.1.2-a/tests/texp.c 2013-03-13 15:37:44.000000000 +0000 +++ mpfr-3.1.2-b/tests/texp.c 2014-04-15 22:04:57.126287230 +0000 @@ -150,6 +150,22 @@ exit (1); } + mpfr_set_prec (x, 118); + mpfr_set_str_binary (x, "0.1110010100011101010000111110011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E-86"); + mpfr_set_prec (y, 118); + mpfr_exp_2 (y, x, MPFR_RNDU); + mpfr_exp_3 (x, x, MPFR_RNDU); + if (mpfr_cmp (x, y)) + { + printf ("mpfr_exp_2 and mpfr_exp_3 differ for prec=118\n"); + printf ("mpfr_exp_2 gives "); + mpfr_out_str (stdout, 2, 0, y, MPFR_RNDN); + printf ("\nmpfr_exp_3 gives "); + mpfr_out_str (stdout, 2, 0, x, MPFR_RNDN); + printf ("\n"); + exit (1); + } + mpfr_clear (x); mpfr_clear (y); return 0; 1.1 dev-libs/mpfr/files/3.1.2/patch06 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch06?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/mpfr/files/3.1.2/patch06?rev=1.1&content-type=text/plain Index: patch06 =================================================================== diff -Naurd mpfr-3.1.2-a/PATCHES mpfr-3.1.2-b/PATCHES --- mpfr-3.1.2-a/PATCHES 2014-04-15 21:56:49.609057464 +0000 +++ mpfr-3.1.2-b/PATCHES 2014-04-15 21:56:49.697059857 +0000 @@ -0,0 +1 @@ +li2-return diff -Naurd mpfr-3.1.2-a/VERSION mpfr-3.1.2-b/VERSION --- mpfr-3.1.2-a/VERSION 2014-04-15 21:56:49.609057464 +0000 +++ mpfr-3.1.2-b/VERSION 2014-04-15 21:56:49.697059857 +0000 @@ -1 +1 @@ -3.1.2-p5 +3.1.2-p6 diff -Naurd mpfr-3.1.2-a/src/li2.c mpfr-3.1.2-b/src/li2.c --- mpfr-3.1.2-a/src/li2.c 2013-03-13 15:37:32.000000000 +0000 +++ mpfr-3.1.2-b/src/li2.c 2014-04-15 21:56:49.653058661 +0000 @@ -630,5 +630,5 @@ return mpfr_check_range (y, inexact, rnd_mode); } - MPFR_ASSERTN (0); /* should never reach this point */ + MPFR_RET_NEVER_GO_HERE (); } diff -Naurd mpfr-3.1.2-a/src/mpfr.h mpfr-3.1.2-b/src/mpfr.h --- mpfr-3.1.2-a/src/mpfr.h 2014-04-15 21:56:49.609057464 +0000 +++ mpfr-3.1.2-b/src/mpfr.h 2014-04-15 21:56:49.697059857 +0000 @@ -27,7 +27,7 @@ #define MPFR_VERSION_MAJOR 3 #define MPFR_VERSION_MINOR 1 #define MPFR_VERSION_PATCHLEVEL 2 -#define MPFR_VERSION_STRING "3.1.2-p5" +#define MPFR_VERSION_STRING "3.1.2-p6" /* Macros dealing with MPFR VERSION */ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) diff -Naurd mpfr-3.1.2-a/src/version.c mpfr-3.1.2-b/src/version.c --- mpfr-3.1.2-a/src/version.c 2014-04-15 21:56:49.609057464 +0000 +++ mpfr-3.1.2-b/src/version.c 2014-04-15 21:56:49.697059857 +0000 @@ -25,5 +25,5 @@ const char * mpfr_get_version (void) { - return "3.1.2-p5"; + return "3.1.2-p6"; }
