This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Ping Re: Fix strtod rounding (bug 3479)
- From: Andreas Schwab <schwab at linux-m68k dot org>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: <libc-alpha at sourceware dot org>
- Date: Wed, 05 Sep 2012 13:55:48 +0200
- Subject: Re: Ping Re: Fix strtod rounding (bug 3479)
- References: <Pine.LNX.4.64.1208142055120.19862@digraph.polyomino.org.uk><20120814210740.4A0092C0E5@topped-with-meat.com><Pine.LNX.4.64.1208151907250.22955@digraph.polyomino.org.uk><Pine.LNX.4.64.1208201102390.4976@digraph.polyomino.org.uk><Pine.LNX.4.64.1208251539310.12613@digraph.polyomino.org.uk><m2wr08lpeb.fsf@igel.home>
Actually I can distinguish the formats with LDBL_MIN_EXP, so I added
this on top to avoid testing the cpu macros.
Andreas.
diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c
index 3e75c11..1edeff6 100644
--- a/stdlib/tst-strtod-round.c
+++ b/stdlib/tst-strtod-round.c
@@ -39,26 +39,22 @@ struct test {
ld106exact, ld106d, ld106n, ld106z, ld106u, \
ld113d, ld113n, ld113z, ld113u) \
{ s, fn, dn, true, ld53n }
-#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-# if defined __i386__ || defined __x86_64__ || defined __ia64__
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381
/* This is for the Intel extended float format. */
-# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \
- ld64id, ld64in, ld64iz, ld64iu, \
- ld64md, ld64mn, ld64mz, ld64mu, \
- ld106exact, ld106d, ld106n, ld106z, ld106u, \
- ld113d, ld113n, ld113z, ld113u) \
+# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \
+ ld64id, ld64in, ld64iz, ld64iu, \
+ ld64md, ld64mn, ld64mz, ld64mu, \
+ ld106exact, ld106d, ld106n, ld106z, ld106u, \
+ ld113d, ld113n, ld113z, ld113u) \
{ s, fn, dn, true, ld64in }
-# elif defined __mc68000__
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382
/* This is for the Motorola extended float format. */
-# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \
- ld64id, ld64in, ld64iz, ld64iu, \
- ld64md, ld64mn, ld64mz, ld64mu, \
- ld106exact, ld106d, ld106n, ld106z, ld106u, \
- ld113d, ld113n, ld113z, ld113u) \
+# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \
+ ld64id, ld64in, ld64iz, ld64iu, \
+ ld64md, ld64mn, ld64mz, ld64mu, \
+ ld106exact, ld106d, ld106n, ld106z, ld106u, \
+ ld113d, ld113n, ld113z, ld113u) \
{ s, fn, dn, true, ld64mn }
-# else
-# error "unknown long double format"
-# endif
#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024
# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \
ld64id, ld64in, ld64iz, ld64iu, \
--
1.7.12
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."