From: Joseph Myers Date: Thu, 6 Sep 2012 15:33:06 +0000 (+0000) Subject: Fix strtod test for values above maximum for IBM long double. X-Git-Tag: upstream/2.16.90~580 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ed8c2ecd21d07e9e116fc494742a2b3af8193144;p=platform%2Fupstream%2Fglibc.git Fix strtod test for values above maximum for IBM long double. --- diff --git a/ChangeLog b/ChangeLog index b978444..a48a5cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-09-06 Joseph Myers + + * stdlib/gen-tst-strtod-round.c: Include . + (round_str): Handle values above the maximum for IBM long double + as inexact. + * stdlib/tst-strtod-round.c (tests): Regenerated. + 2012-09-06 Andreas Krebbel * sysdeps/s390/s390-32/multiarch/Makefile: Remove -mzarch diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c index f4ad270..56aafab 100644 --- a/stdlib/gen-tst-strtod-round.c +++ b/stdlib/gen-tst-strtod-round.c @@ -18,6 +18,7 @@ . */ #define _GNU_SOURCE +#include #include #include #include @@ -65,7 +66,19 @@ round_str (const char *s, const char *suffix, mpfr_init (f); int r = string_to_fp (f, s, MPFR_RNDD); if (need_exact) - mpfr_printf ("\t%s,\n", r ? "false" : "true"); + { + assert (prec == 106 && emin == -1073 && emax == 1024); + /* The maximum value in IBM long double has discontiguous + mantissa bits. */ + mpfr_t max_value; + mpfr_init2 (max_value, 107); + mpfr_set_str (max_value, "0x1.fffffffffffff7ffffffffffffcp+1023", 0, + MPFR_RNDN); + if (mpfr_cmpabs (f, max_value) > 0) + r = 1; + mpfr_printf ("\t%s,\n", r ? "false" : "true"); + mpfr_clear (max_value); + } print_fp (f, suffix, ",\n"); string_to_fp (f, s, MPFR_RNDN); print_fp (f, suffix, ",\n"); diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c index 1edeff6..c6ad126 100644 --- a/stdlib/tst-strtod-round.c +++ b/stdlib/tst-strtod-round.c @@ -1927,7 +1927,7 @@ static const struct test tests[] = { 0xf.ffffffffffffcp+1020L, 0xf.ffffffffffffcp+1020L, 0xf.ffffffffffffcp+1020L, - true, + false, 0xf.ffffffffffffcp+1020L, 0xf.ffffffffffffcp+1020L, 0xf.ffffffffffffcp+1020L, @@ -2032,7 +2032,7 @@ static const struct test tests[] = { -0xf.ffffffffffffcp+1020L, -0xf.ffffffffffffcp+1020L, -0xf.ffffffffffffcp+1020L, - true, + false, -0xf.ffffffffffffcp+1020L, -0xf.ffffffffffffcp+1020L, -0xf.ffffffffffffcp+1020L,