Ping Re: Fix strtod rounding (bug 3479)

Andreas Schwab schwab@linux-m68k.org
Wed Sep 5 11:56:00 GMT 2012


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."



More information about the Libc-alpha mailing list