about summary refs log tree commit diff
path: root/stdlib/tst-strtod-round.c
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/tst-strtod-round.c')
-rw-r--r--stdlib/tst-strtod-round.c758
1 files changed, 718 insertions, 40 deletions
diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c
index 072fc737d4..4065d1288e 100644
--- a/stdlib/tst-strtod-round.c
+++ b/stdlib/tst-strtod-round.c
@@ -25,6 +25,13 @@
 #include <stdlib.h>
 #include <string.h>
 
+struct exactness
+{
+  bool f;
+  bool d;
+  bool ld;
+};
+
 struct test_results {
   float f;
   double d;
@@ -33,19 +40,20 @@ struct test_results {
 
 struct test {
   const char *s;
-  bool ld_ok;
+  struct exactness exact;
   struct test_results rd, rn, rz, ru;
 };
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-# 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, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du,	\
+	      ld53exact, ld53d, ld53n, ld53z, ld53u,			\
+	      ld64iexact, ld64id, ld64in, ld64iz, ld64iu,		\
+	      ld64mexact, ld64md, ld64mn, ld64mz, ld64mu,		\
+	      ld106exact, ld106d, ld106n, ld106z, ld106u,		\
+	      ld113exact, ld113d, ld113n, ld113z, ld113u)		\
   {									\
     s,									\
-    true,								\
+    { fexact, dexact, ld53exact },					\
     { fd, dd, ld53d },							\
     { fn, dn, ld53n },							\
     { fz, dz, ld53z },							\
@@ -53,14 +61,15 @@ struct test {
   }
 #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, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du,	\
+	      ld53exact, ld53d, ld53n, ld53z, ld53u,			\
+	      ld64iexact, ld64id, ld64in, ld64iz, ld64iu,		\
+	      ld64mexact, ld64md, ld64mn, ld64mz, ld64mu,		\
+	      ld106exact, ld106d, ld106n, ld106z, ld106u,		\
+	      ld113exact, ld113d, ld113n, ld113z, ld113u)		\
   {									\
     s,									\
-    true,								\
+    { fexact, dexact, ld64iexact },					\
     { fd, dd, ld64id },							\
     { fn, dn, ld64in },							\
     { fz, dz, ld64iz },							\
@@ -68,42 +77,45 @@ struct test {
   }
 #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, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du,	\
+	      ld53exact, ld53d, ld53n, ld53z, ld53u,			\
+	      ld64iexact, ld64id, ld64in, ld64iz, ld64iu,		\
+	      ld64mexact, ld64md, ld64mn, ld64mz, ld64mu,		\
+	      ld106exact, ld106d, ld106n, ld106z, ld106u,		\
+	      ld113exact, ld113d, ld113n, ld113z, ld113u)		\
   {									\
     s,									\
-    true,								\
+    { fexact, dexact, ld64mexact },					\
     { fd, dd, ld64md },							\
     { fn, dn, ld64mn },							\
     { fz, dz, ld64mz },							\
     { fu, du, ld64mu }							\
   }
 #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,				      \
-	      ld64md, ld64mn, ld64mz, ld64mu,				      \
-	      ld106exact, ld106d, ld106n, ld106z, ld106u,		      \
-	      ld113d, ld113n, ld113z, ld113u)				      \
+# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du,	\
+	      ld53exact, ld53d, ld53n, ld53z, ld53u,			\
+	      ld64iexact, ld64id, ld64in, ld64iz, ld64iu,		\
+	      ld64mexact, ld64md, ld64mn, ld64mz, ld64mu,		\
+	      ld106exact, ld106d, ld106n, ld106z, ld106u,		\
+	      ld113exact, ld113d, ld113n, ld113z, ld113u)		\
   {									\
     s,									\
-    ld106exact,								\
+    { fexact, dexact, ld106exact },					\
     { fd, dd, ld106d },							\
     { fn, dn, ld106n },							\
     { fz, dz, ld106z },							\
     { fu, du, ld106u }							\
   }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
-# 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, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du,	\
+	      ld53exact, ld53d, ld53n, ld53z, ld53u,			\
+	      ld64iexact, ld64id, ld64in, ld64iz, ld64iu,		\
+	      ld64mexact, ld64md, ld64mn, ld64mz, ld64mu,		\
+	      ld106exact, ld106d, ld106n, ld106z, ld106u,		\
+	      ld113exact, ld113d, ld113n, ld113z, ld113u)		\
   {									\
     s,									\
-    true,								\
+    { fexact, dexact, ld113exact },					\
     { fd, dd, ld113d },							\
     { fn, dn, ld113n },							\
     { fz, dz, ld113z },							\
@@ -118,22 +130,27 @@ struct test {
 
 static const struct test tests[] = {
   TEST ("3.518437208883201171875E+013",
+	false,
 	0x2p+44f,
 	0x2p+44f,
 	0x2p+44f,
 	0x2.000004p+44f,
+	false,
 	0x2.0000000000002p+44,
 	0x2.0000000000004p+44,
 	0x2.0000000000002p+44,
 	0x2.0000000000004p+44,
+	false,
 	0x2.0000000000002p+44L,
 	0x2.0000000000004p+44L,
 	0x2.0000000000002p+44L,
 	0x2.0000000000004p+44L,
+	true,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
+	true,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
@@ -143,27 +160,33 @@ static const struct test tests[] = {
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
+	true,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L,
 	0x2.0000000000003p+44L),
   TEST ("1.00000005960464477550",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.0000010000001p+0,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000001p+0L,
+	false,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000004p+0L,
+	false,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
@@ -173,27 +196,33 @@ static const struct test tests[] = {
 	0x1.0000010000000002048242f2ff8p+0L,
 	0x1.0000010000000002048242f2ffp+0L,
 	0x1.0000010000000002048242f2ff8p+0L,
+	false,
 	0x1.0000010000000002048242f2ff66p+0L,
 	0x1.0000010000000002048242f2ff67p+0L,
 	0x1.0000010000000002048242f2ff66p+0L,
 	0x1.0000010000000002048242f2ff67p+0L),
   TEST ("1.0000000596046447755",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.0000010000001p+0,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000001p+0L,
+	false,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000004p+0L,
+	false,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
 	0x1.0000010000000002p+0L,
@@ -203,27 +232,33 @@ static const struct test tests[] = {
 	0x1.0000010000000002048242f2ff8p+0L,
 	0x1.0000010000000002048242f2ffp+0L,
 	0x1.0000010000000002048242f2ff8p+0L,
+	false,
 	0x1.0000010000000002048242f2ff66p+0L,
 	0x1.0000010000000002048242f2ff67p+0L,
 	0x1.0000010000000002048242f2ff66p+0L,
 	0x1.0000010000000002048242f2ff67p+0L),
   TEST ("1.000000059604644776",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.0000010000001p+0,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000001p+0L,
+	false,
 	0x1.000001000000000ap+0L,
 	0x1.000001000000000cp+0L,
 	0x1.000001000000000ap+0L,
 	0x1.000001000000000cp+0L,
+	false,
 	0x1.000001000000000ap+0L,
 	0x1.000001000000000cp+0L,
 	0x1.000001000000000ap+0L,
@@ -233,27 +268,33 @@ static const struct test tests[] = {
 	0x1.000001000000000b3db12bdc21p+0L,
 	0x1.000001000000000b3db12bdc21p+0L,
 	0x1.000001000000000b3db12bdc218p+0L,
+	false,
 	0x1.000001000000000b3db12bdc213cp+0L,
 	0x1.000001000000000b3db12bdc213dp+0L,
 	0x1.000001000000000b3db12bdc213cp+0L,
 	0x1.000001000000000b3db12bdc213dp+0L),
   TEST ("1.000000059604644775",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000000fffffffp+0,
 	0x1.000001p+0,
 	0x1.000000fffffffp+0,
 	0x1.000001p+0,
+	false,
 	0x1.000000fffffffp+0L,
 	0x1.000001p+0L,
 	0x1.000000fffffffp+0L,
 	0x1.000001p+0L,
+	false,
 	0x1.000000fffffffff8p+0L,
 	0x1.000000fffffffff8p+0L,
 	0x1.000000fffffffff8p+0L,
 	0x1.000000fffffffffap+0L,
+	false,
 	0x1.000000fffffffff8p+0L,
 	0x1.000000fffffffff8p+0L,
 	0x1.000000fffffffff8p+0L,
@@ -263,27 +304,33 @@ static const struct test tests[] = {
 	0x1.000000fffffffff8cb535a09dd8p+0L,
 	0x1.000000fffffffff8cb535a09dd8p+0L,
 	0x1.000000fffffffff8cb535a09dep+0L,
+	false,
 	0x1.000000fffffffff8cb535a09dd9p+0L,
 	0x1.000000fffffffff8cb535a09dd91p+0L,
 	0x1.000000fffffffff8cb535a09dd9p+0L,
 	0x1.000000fffffffff8cb535a09dd91p+0L),
   TEST ("1.00000005960464478",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.0000010000001p+0,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000001p+0L,
+	false,
 	0x1.0000010000000054p+0L,
 	0x1.0000010000000056p+0L,
 	0x1.0000010000000054p+0L,
 	0x1.0000010000000056p+0L,
+	false,
 	0x1.0000010000000054p+0L,
 	0x1.0000010000000056p+0L,
 	0x1.0000010000000054p+0L,
@@ -293,27 +340,33 @@ static const struct test tests[] = {
 	0x1.0000010000000055072873253p+0L,
 	0x1.0000010000000055072873252f8p+0L,
 	0x1.0000010000000055072873253p+0L,
+	false,
 	0x1.0000010000000055072873252febp+0L,
 	0x1.0000010000000055072873252febp+0L,
 	0x1.0000010000000055072873252febp+0L,
 	0x1.0000010000000055072873252fecp+0L),
   TEST ("1.0000000596046448",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.0000010000001p+0,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000001p+0L,
+	false,
 	0x1.00000100000001c4p+0L,
 	0x1.00000100000001c6p+0L,
 	0x1.00000100000001c4p+0L,
 	0x1.00000100000001c6p+0L,
+	false,
 	0x1.00000100000001c4p+0L,
 	0x1.00000100000001c6p+0L,
 	0x1.00000100000001c4p+0L,
@@ -323,27 +376,33 @@ static const struct test tests[] = {
 	0x1.00000100000001c5f67cd792798p+0L,
 	0x1.00000100000001c5f67cd79279p+0L,
 	0x1.00000100000001c5f67cd792798p+0L,
+	false,
 	0x1.00000100000001c5f67cd7927953p+0L,
 	0x1.00000100000001c5f67cd7927954p+0L,
 	0x1.00000100000001c5f67cd7927953p+0L,
 	0x1.00000100000001c5f67cd7927954p+0L),
   TEST ("1.000000059604645",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.0000010000001p+0,
 	0x1.0000010000001p+0,
 	0x1.0000010000001p+0,
 	0x1.0000010000002p+0,
+	false,
 	0x1.0000010000001p+0L,
 	0x1.0000010000001p+0L,
 	0x1.0000010000001p+0L,
 	0x1.0000010000002p+0L,
+	false,
 	0x1.000001000000102ep+0L,
 	0x1.000001000000103p+0L,
 	0x1.000001000000102ep+0L,
 	0x1.000001000000103p+0L,
+	false,
 	0x1.000001000000102ep+0L,
 	0x1.000001000000103p+0L,
 	0x1.000001000000102ep+0L,
@@ -353,27 +412,33 @@ static const struct test tests[] = {
 	0x1.000001000000102f4fc8c3d7578p+0L,
 	0x1.000001000000102f4fc8c3d757p+0L,
 	0x1.000001000000102f4fc8c3d7578p+0L,
+	false,
 	0x1.000001000000102f4fc8c3d75769p+0L,
 	0x1.000001000000102f4fc8c3d75769p+0L,
 	0x1.000001000000102f4fc8c3d75769p+0L,
 	0x1.000001000000102f4fc8c3d7576ap+0L),
   TEST ("1.00000005960464",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000000fffffeap+0,
 	0x1.000000fffffeap+0,
 	0x1.000000fffffeap+0,
 	0x1.000000fffffebp+0,
+	false,
 	0x1.000000fffffeap+0L,
 	0x1.000000fffffeap+0L,
 	0x1.000000fffffeap+0L,
 	0x1.000000fffffebp+0L,
+	false,
 	0x1.000000fffffea7e4p+0L,
 	0x1.000000fffffea7e6p+0L,
 	0x1.000000fffffea7e4p+0L,
 	0x1.000000fffffea7e6p+0L,
+	false,
 	0x1.000000fffffea7e4p+0L,
 	0x1.000000fffffea7e6p+0L,
 	0x1.000000fffffea7e4p+0L,
@@ -383,27 +448,33 @@ static const struct test tests[] = {
 	0x1.000000fffffea7e5975eb11da78p+0L,
 	0x1.000000fffffea7e5975eb11da7p+0L,
 	0x1.000000fffffea7e5975eb11da78p+0L,
+	false,
 	0x1.000000fffffea7e5975eb11da74ap+0L,
 	0x1.000000fffffea7e5975eb11da74bp+0L,
 	0x1.000000fffffea7e5975eb11da74ap+0L,
 	0x1.000000fffffea7e5975eb11da74bp+0L),
   TEST ("1.0000000596046",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000000fffff36p+0,
 	0x1.000000fffff36p+0,
 	0x1.000000fffff36p+0,
 	0x1.000000fffff37p+0,
+	false,
 	0x1.000000fffff36p+0L,
 	0x1.000000fffff36p+0L,
 	0x1.000000fffff36p+0L,
 	0x1.000000fffff37p+0L,
+	false,
 	0x1.000000fffff36596p+0L,
 	0x1.000000fffff36598p+0L,
 	0x1.000000fffff36596p+0L,
 	0x1.000000fffff36598p+0L,
+	false,
 	0x1.000000fffff36596p+0L,
 	0x1.000000fffff36598p+0L,
 	0x1.000000fffff36596p+0L,
@@ -413,27 +484,33 @@ static const struct test tests[] = {
 	0x1.000000fffff36597d40e1b50268p+0L,
 	0x1.000000fffff36597d40e1b5026p+0L,
 	0x1.000000fffff36597d40e1b50268p+0L,
+	false,
 	0x1.000000fffff36597d40e1b502655p+0L,
 	0x1.000000fffff36597d40e1b502656p+0L,
 	0x1.000000fffff36597d40e1b502655p+0L,
 	0x1.000000fffff36597d40e1b502656p+0L),
   TEST ("1.000000059605",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001000063fp+0,
 	0x1.000001000064p+0,
 	0x1.000001000063fp+0,
 	0x1.000001000064p+0,
+	false,
 	0x1.000001000063fp+0L,
 	0x1.000001000064p+0L,
 	0x1.000001000063fp+0L,
 	0x1.000001000064p+0L,
+	false,
 	0x1.000001000063fcap+0L,
 	0x1.000001000063fca2p+0L,
 	0x1.000001000063fcap+0L,
 	0x1.000001000063fca2p+0L,
+	false,
 	0x1.000001000063fcap+0L,
 	0x1.000001000063fca2p+0L,
 	0x1.000001000063fcap+0L,
@@ -443,27 +520,33 @@ static const struct test tests[] = {
 	0x1.000001000063fca17533f5573p+0L,
 	0x1.000001000063fca17533f5572f8p+0L,
 	0x1.000001000063fca17533f5573p+0L,
+	false,
 	0x1.000001000063fca17533f5572fe9p+0L,
 	0x1.000001000063fca17533f5572feap+0L,
 	0x1.000001000063fca17533f5572fe9p+0L,
 	0x1.000001000063fca17533f5572feap+0L),
   TEST ("1.00000005960",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000000fffae49p+0,
 	0x1.000000fffae4ap+0,
 	0x1.000000fffae49p+0,
 	0x1.000000fffae4ap+0,
+	false,
 	0x1.000000fffae49p+0L,
 	0x1.000000fffae4ap+0L,
 	0x1.000000fffae49p+0L,
 	0x1.000000fffae4ap+0L,
+	false,
 	0x1.000000fffae49ca8p+0L,
 	0x1.000000fffae49caap+0L,
 	0x1.000000fffae49ca8p+0L,
 	0x1.000000fffae49caap+0L,
+	false,
 	0x1.000000fffae49ca8p+0L,
 	0x1.000000fffae49caap+0L,
 	0x1.000000fffae49ca8p+0L,
@@ -473,27 +556,33 @@ static const struct test tests[] = {
 	0x1.000000fffae49ca916dacfff38p+0L,
 	0x1.000000fffae49ca916dacfff38p+0L,
 	0x1.000000fffae49ca916dacfff388p+0L,
+	false,
 	0x1.000000fffae49ca916dacfff382dp+0L,
 	0x1.000000fffae49ca916dacfff382dp+0L,
 	0x1.000000fffae49ca916dacfff382dp+0L,
 	0x1.000000fffae49ca916dacfff382ep+0L),
   TEST ("1.0000000596",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000000fffae49p+0,
 	0x1.000000fffae4ap+0,
 	0x1.000000fffae49p+0,
 	0x1.000000fffae4ap+0,
+	false,
 	0x1.000000fffae49p+0L,
 	0x1.000000fffae4ap+0L,
 	0x1.000000fffae49p+0L,
 	0x1.000000fffae4ap+0L,
+	false,
 	0x1.000000fffae49ca8p+0L,
 	0x1.000000fffae49caap+0L,
 	0x1.000000fffae49ca8p+0L,
 	0x1.000000fffae49caap+0L,
+	false,
 	0x1.000000fffae49ca8p+0L,
 	0x1.000000fffae49caap+0L,
 	0x1.000000fffae49ca8p+0L,
@@ -503,27 +592,33 @@ static const struct test tests[] = {
 	0x1.000000fffae49ca916dacfff38p+0L,
 	0x1.000000fffae49ca916dacfff38p+0L,
 	0x1.000000fffae49ca916dacfff388p+0L,
+	false,
 	0x1.000000fffae49ca916dacfff382dp+0L,
 	0x1.000000fffae49ca916dacfff382dp+0L,
 	0x1.000000fffae49ca916dacfff382dp+0L,
 	0x1.000000fffae49ca916dacfff382ep+0L),
   TEST ("1.000000060",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.00000101b2b29p+0,
 	0x1.00000101b2b2ap+0,
 	0x1.00000101b2b29p+0,
 	0x1.00000101b2b2ap+0,
+	false,
 	0x1.00000101b2b29p+0L,
 	0x1.00000101b2b2ap+0L,
 	0x1.00000101b2b29p+0L,
 	0x1.00000101b2b2ap+0L,
+	false,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a48p+0L,
+	false,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
@@ -533,27 +628,33 @@ static const struct test tests[] = {
 	0x1.00000101b2b29a4692b67b7ca3p+0L,
 	0x1.00000101b2b29a4692b67b7ca3p+0L,
 	0x1.00000101b2b29a4692b67b7ca38p+0L,
+	false,
 	0x1.00000101b2b29a4692b67b7ca313p+0L,
 	0x1.00000101b2b29a4692b67b7ca314p+0L,
 	0x1.00000101b2b29a4692b67b7ca313p+0L,
 	0x1.00000101b2b29a4692b67b7ca314p+0L),
   TEST ("1.00000006",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.00000101b2b29p+0,
 	0x1.00000101b2b2ap+0,
 	0x1.00000101b2b29p+0,
 	0x1.00000101b2b2ap+0,
+	false,
 	0x1.00000101b2b29p+0L,
 	0x1.00000101b2b2ap+0L,
 	0x1.00000101b2b29p+0L,
 	0x1.00000101b2b2ap+0L,
+	false,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a48p+0L,
+	false,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
 	0x1.00000101b2b29a46p+0L,
@@ -563,27 +664,33 @@ static const struct test tests[] = {
 	0x1.00000101b2b29a4692b67b7ca3p+0L,
 	0x1.00000101b2b29a4692b67b7ca3p+0L,
 	0x1.00000101b2b29a4692b67b7ca38p+0L,
+	false,
 	0x1.00000101b2b29a4692b67b7ca313p+0L,
 	0x1.00000101b2b29a4692b67b7ca314p+0L,
 	0x1.00000101b2b29a4692b67b7ca313p+0L,
 	0x1.00000101b2b29a4692b67b7ca314p+0L),
   TEST ("1.0000001",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001ad7f29ap+0,
 	0x1.000001ad7f29bp+0,
 	0x1.000001ad7f29ap+0,
 	0x1.000001ad7f29bp+0,
+	false,
 	0x1.000001ad7f29ap+0L,
 	0x1.000001ad7f29bp+0L,
 	0x1.000001ad7f29ap+0L,
 	0x1.000001ad7f29bp+0L,
+	false,
 	0x1.000001ad7f29abcap+0L,
 	0x1.000001ad7f29abcap+0L,
 	0x1.000001ad7f29abcap+0L,
 	0x1.000001ad7f29abccp+0L,
+	false,
 	0x1.000001ad7f29abcap+0L,
 	0x1.000001ad7f29abcap+0L,
 	0x1.000001ad7f29abcap+0L,
@@ -593,27 +700,33 @@ static const struct test tests[] = {
 	0x1.000001ad7f29abcaf485787a65p+0L,
 	0x1.000001ad7f29abcaf485787a65p+0L,
 	0x1.000001ad7f29abcaf485787a658p+0L,
+	false,
 	0x1.000001ad7f29abcaf485787a652p+0L,
 	0x1.000001ad7f29abcaf485787a6521p+0L,
 	0x1.000001ad7f29abcaf485787a652p+0L,
 	0x1.000001ad7f29abcaf485787a6521p+0L),
   TEST ("1.000000",
+	true,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
+	true,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
+	true,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
+	true,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
+	true,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
@@ -623,27 +736,33 @@ static const struct test tests[] = {
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
+	true,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L),
   TEST ("1.00000000000000011113",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1.0000000000001p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
+	false,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
 	0x1.00000000000008p+0L,
@@ -653,27 +772,33 @@ static const struct test tests[] = {
 	0x1.0000000000000801fc96557232p+0L,
 	0x1.0000000000000801fc96557232p+0L,
 	0x1.0000000000000801fc965572328p+0L,
+	false,
 	0x1.0000000000000801fc9655723222p+0L,
 	0x1.0000000000000801fc9655723222p+0L,
 	0x1.0000000000000801fc9655723222p+0L,
 	0x1.0000000000000801fc9655723223p+0L),
   TEST ("1.00000000000000011103",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1.0000000000001p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000008p+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
+	false,
 	0x1.00000000000008p+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000008p+0L,
@@ -683,27 +808,33 @@ static const struct test tests[] = {
 	0x1.00000000000008002459c076c5p+0L,
 	0x1.00000000000008002459c076c48p+0L,
 	0x1.00000000000008002459c076c5p+0L,
+	false,
 	0x1.00000000000008002459c076c4f7p+0L,
 	0x1.00000000000008002459c076c4f8p+0L,
 	0x1.00000000000008002459c076c4f7p+0L,
 	0x1.00000000000008002459c076c4f8p+0L),
   TEST ("1.00000000000000011102",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
+	false,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000007fep+0L,
@@ -713,27 +844,33 @@ static const struct test tests[] = {
 	0x1.00000000000007fff5207e5da08p+0L,
 	0x1.00000000000007fff5207e5dap+0L,
 	0x1.00000000000007fff5207e5da08p+0L,
+	false,
 	0x1.00000000000007fff5207e5da073p+0L,
 	0x1.00000000000007fff5207e5da073p+0L,
 	0x1.00000000000007fff5207e5da073p+0L,
 	0x1.00000000000007fff5207e5da074p+0L),
   TEST ("1.00000000000000011101",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
+	false,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000007fep+0L,
@@ -743,27 +880,33 @@ static const struct test tests[] = {
 	0x1.00000000000007ffc5e73c447cp+0L,
 	0x1.00000000000007ffc5e73c447b8p+0L,
 	0x1.00000000000007ffc5e73c447cp+0L,
+	false,
 	0x1.00000000000007ffc5e73c447befp+0L,
 	0x1.00000000000007ffc5e73c447befp+0L,
 	0x1.00000000000007ffc5e73c447befp+0L,
 	0x1.00000000000007ffc5e73c447bfp+0L),
   TEST ("1.0000000000000001111",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1.0000000000001p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
+	false,
 	0x1.00000000000008p+0L,
 	0x1.0000000000000802p+0L,
 	0x1.00000000000008p+0L,
@@ -773,27 +916,33 @@ static const struct test tests[] = {
 	0x1.00000000000008016eea8f26c48p+0L,
 	0x1.00000000000008016eea8f26c48p+0L,
 	0x1.00000000000008016eea8f26c5p+0L,
+	false,
 	0x1.00000000000008016eea8f26c495p+0L,
 	0x1.00000000000008016eea8f26c496p+0L,
 	0x1.00000000000008016eea8f26c495p+0L,
 	0x1.00000000000008016eea8f26c496p+0L),
   TEST ("1.000000000000000111",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
+	false,
 	0x1.00000000000007fep+0L,
 	0x1.00000000000008p+0L,
 	0x1.00000000000007fep+0L,
@@ -803,27 +952,33 @@ static const struct test tests[] = {
 	0x1.00000000000007ff96adfa2b578p+0L,
 	0x1.00000000000007ff96adfa2b57p+0L,
 	0x1.00000000000007ff96adfa2b578p+0L,
+	false,
 	0x1.00000000000007ff96adfa2b576ap+0L,
 	0x1.00000000000007ff96adfa2b576bp+0L,
 	0x1.00000000000007ff96adfa2b576ap+0L,
 	0x1.00000000000007ff96adfa2b576bp+0L),
   TEST ("1.00000000000000011",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.00000000000007ecp+0L,
 	0x1.00000000000007eep+0L,
 	0x1.00000000000007ecp+0L,
 	0x1.00000000000007eep+0L,
+	false,
 	0x1.00000000000007ecp+0L,
 	0x1.00000000000007eep+0L,
 	0x1.00000000000007ecp+0L,
@@ -833,27 +988,33 @@ static const struct test tests[] = {
 	0x1.00000000000007ed24502859138p+0L,
 	0x1.00000000000007ed24502859138p+0L,
 	0x1.00000000000007ed2450285914p+0L,
+	false,
 	0x1.00000000000007ed2450285913bfp+0L,
 	0x1.00000000000007ed2450285913bfp+0L,
 	0x1.00000000000007ed2450285913bfp+0L,
 	0x1.00000000000007ed2450285913cp+0L),
   TEST ("1.0000000000000001",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1p+0,
 	0x1p+0,
 	0x1p+0,
 	0x1.0000000000001p+0,
+	false,
 	0x1p+0L,
 	0x1p+0L,
 	0x1p+0L,
 	0x1.0000000000001p+0L,
+	false,
 	0x1.0000000000000734p+0L,
 	0x1.0000000000000734p+0L,
 	0x1.0000000000000734p+0L,
 	0x1.0000000000000736p+0L,
+	false,
 	0x1.0000000000000734p+0L,
 	0x1.0000000000000734p+0L,
 	0x1.0000000000000734p+0L,
@@ -863,27 +1024,33 @@ static const struct test tests[] = {
 	0x1.0000000000000734aca5f6226fp+0L,
 	0x1.0000000000000734aca5f6226fp+0L,
 	0x1.0000000000000734aca5f6226f8p+0L,
+	false,
 	0x1.0000000000000734aca5f6226f0ap+0L,
 	0x1.0000000000000734aca5f6226f0bp+0L,
 	0x1.0000000000000734aca5f6226f0ap+0L,
 	0x1.0000000000000734aca5f6226f0bp+0L),
   TEST ("3929201589819414e-25",
+	false,
 	0x1.b0053p-32f,
 	0x1.b00532p-32f,
 	0x1.b0053p-32f,
 	0x1.b00532p-32f,
+	false,
 	0x1.b005314e2421ep-32,
 	0x1.b005314e2421ep-32,
 	0x1.b005314e2421ep-32,
 	0x1.b005314e2421fp-32,
+	false,
 	0x1.b005314e2421ep-32L,
 	0x1.b005314e2421ep-32L,
 	0x1.b005314e2421ep-32L,
 	0x1.b005314e2421fp-32L,
+	false,
 	0x1.b005314e2421e7fep-32L,
 	0x1.b005314e2421e8p-32L,
 	0x1.b005314e2421e7fep-32L,
 	0x1.b005314e2421e8p-32L,
+	false,
 	0x1.b005314e2421e7fep-32L,
 	0x1.b005314e2421e8p-32L,
 	0x1.b005314e2421e7fep-32L,
@@ -893,6 +1060,7 @@ static const struct test tests[] = {
 	0x1.b005314e2421e7ffb472840c5a8p-32L,
 	0x1.b005314e2421e7ffb472840c5ap-32L,
 	0x1.b005314e2421e7ffb472840c5a8p-32L,
+	false,
 	0x1.b005314e2421e7ffb472840c5a6ep-32L,
 	0x1.b005314e2421e7ffb472840c5a6fp-32L,
 	0x1.b005314e2421e7ffb472840c5a6ep-32L,
@@ -900,22 +1068,27 @@ static const struct test tests[] = {
   TEST ("0.0000000000000000000000000000000000000000000021019476964872"
 	"256063855943749348741969203929128147736576356024258346866240"
 	"28790902229957282543182373046875",
+	true,
 	0x8p-152f,
 	0x1p-148f,
 	0x8p-152f,
 	0x1p-148f,
+	true,
 	0xcp-152,
 	0xcp-152,
 	0xcp-152,
 	0xcp-152,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
@@ -925,27 +1098,33 @@ static const struct test tests[] = {
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L),
   TEST ("1.00000005960464477539062499",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000000fffffffp+0,
 	0x1.000001p+0,
 	0x1.000000fffffffp+0,
 	0x1.000001p+0,
+	false,
 	0x1.000000fffffffp+0L,
 	0x1.000001p+0L,
 	0x1.000000fffffffp+0L,
 	0x1.000001p+0L,
+	false,
 	0x1.000000fffffffffep+0L,
 	0x1.000001p+0L,
 	0x1.000000fffffffffep+0L,
 	0x1.000001p+0L,
+	false,
 	0x1.000000fffffffffep+0L,
 	0x1.000001p+0L,
 	0x1.000000fffffffffep+0L,
@@ -955,27 +1134,33 @@ static const struct test tests[] = {
 	0x1.000000fffffffffffffffce7b8p+0L,
 	0x1.000000fffffffffffffffce7b78p+0L,
 	0x1.000000fffffffffffffffce7b8p+0L,
+	false,
 	0x1.000000fffffffffffffffce7b7e7p+0L,
 	0x1.000000fffffffffffffffce7b7e7p+0L,
 	0x1.000000fffffffffffffffce7b7e7p+0L,
 	0x1.000000fffffffffffffffce7b7e8p+0L),
   TEST ("1.000000059604644775390625",
+	false,
 	0x1p+0f,
 	0x1p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	true,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
+	true,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
+	true,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
+	true,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
@@ -985,27 +1170,33 @@ static const struct test tests[] = {
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
+	true,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L),
   TEST ("1.00000005960464477539062501",
+	false,
 	0x1p+0f,
 	0x1.000002p+0f,
 	0x1p+0f,
 	0x1.000002p+0f,
+	false,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.000001p+0,
 	0x1.0000010000001p+0,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000001p+0L,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.0000010000000002p+0L,
+	false,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
 	0x1.000001p+0L,
@@ -1015,27 +1206,33 @@ static const struct test tests[] = {
 	0x1.00000100000000000000031848p+0L,
 	0x1.00000100000000000000031848p+0L,
 	0x1.000001000000000000000318488p+0L,
+	false,
 	0x1.0000010000000000000003184818p+0L,
 	0x1.0000010000000000000003184819p+0L,
 	0x1.0000010000000000000003184818p+0L,
 	0x1.0000010000000000000003184819p+0L),
   TEST ("1.00000011920928955078125",
+	true,
 	0x1.000002p+0f,
 	0x1.000002p+0f,
 	0x1.000002p+0f,
 	0x1.000002p+0f,
+	true,
 	0x1.000002p+0,
 	0x1.000002p+0,
 	0x1.000002p+0,
 	0x1.000002p+0,
+	true,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
+	true,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
+	true,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
@@ -1045,27 +1242,33 @@ static const struct test tests[] = {
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
+	true,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L,
 	0x1.000002p+0L),
   TEST ("1.00000017881393432617187499",
+	false,
 	0x1.000002p+0f,
 	0x1.000002p+0f,
 	0x1.000002p+0f,
 	0x1.000004p+0f,
+	false,
 	0x1.000002fffffffp+0,
 	0x1.000003p+0,
 	0x1.000002fffffffp+0,
 	0x1.000003p+0,
+	false,
 	0x1.000002fffffffp+0L,
 	0x1.000003p+0L,
 	0x1.000002fffffffp+0L,
 	0x1.000003p+0L,
+	false,
 	0x1.000002fffffffffep+0L,
 	0x1.000003p+0L,
 	0x1.000002fffffffffep+0L,
 	0x1.000003p+0L,
+	false,
 	0x1.000002fffffffffep+0L,
 	0x1.000003p+0L,
 	0x1.000002fffffffffep+0L,
@@ -1075,27 +1278,33 @@ static const struct test tests[] = {
 	0x1.000002fffffffffffffffce7b8p+0L,
 	0x1.000002fffffffffffffffce7b78p+0L,
 	0x1.000002fffffffffffffffce7b8p+0L,
+	false,
 	0x1.000002fffffffffffffffce7b7e7p+0L,
 	0x1.000002fffffffffffffffce7b7e7p+0L,
 	0x1.000002fffffffffffffffce7b7e7p+0L,
 	0x1.000002fffffffffffffffce7b7e8p+0L),
   TEST ("1.000000178813934326171875",
+	false,
 	0x1.000002p+0f,
 	0x1.000004p+0f,
 	0x1.000002p+0f,
 	0x1.000004p+0f,
+	true,
 	0x1.000003p+0,
 	0x1.000003p+0,
 	0x1.000003p+0,
 	0x1.000003p+0,
+	true,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
+	true,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
+	true,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
@@ -1105,27 +1314,33 @@ static const struct test tests[] = {
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
+	true,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L),
   TEST ("1.00000017881393432617187501",
+	false,
 	0x1.000002p+0f,
 	0x1.000004p+0f,
 	0x1.000002p+0f,
 	0x1.000004p+0f,
+	false,
 	0x1.000003p+0,
 	0x1.000003p+0,
 	0x1.000003p+0,
 	0x1.0000030000001p+0,
+	false,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.0000030000001p+0L,
+	false,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.0000030000000002p+0L,
+	false,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
 	0x1.000003p+0L,
@@ -1135,27 +1350,33 @@ static const struct test tests[] = {
 	0x1.00000300000000000000031848p+0L,
 	0x1.00000300000000000000031848p+0L,
 	0x1.000003000000000000000318488p+0L,
+	false,
 	0x1.0000030000000000000003184818p+0L,
 	0x1.0000030000000000000003184819p+0L,
 	0x1.0000030000000000000003184818p+0L,
 	0x1.0000030000000000000003184819p+0L),
   TEST ("1.0000002384185791015625",
+	true,
 	0x1.000004p+0f,
 	0x1.000004p+0f,
 	0x1.000004p+0f,
 	0x1.000004p+0f,
+	true,
 	0x1.000004p+0,
 	0x1.000004p+0,
 	0x1.000004p+0,
 	0x1.000004p+0,
+	true,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
+	true,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
+	true,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
@@ -1165,27 +1386,33 @@ static const struct test tests[] = {
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
+	true,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L,
 	0x1.000004p+0L),
   TEST ("1.08420217248550443400745280086994171142578125e-19",
+	true,
 	0x2p-64f,
 	0x2p-64f,
 	0x2p-64f,
 	0x2p-64f,
+	true,
 	0x2p-64,
 	0x2p-64,
 	0x2p-64,
 	0x2p-64,
+	true,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
+	true,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
+	true,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
@@ -1195,28 +1422,34 @@ static const struct test tests[] = {
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
+	true,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L,
 	0x2p-64L),
   TEST ("1.0842022371089897897127399001987457793916291848290711641311"
 	"645507812499e-19",
+	false,
 	0x2p-64f,
 	0x2p-64f,
 	0x2p-64f,
 	0x2.000004p-64f,
+	false,
 	0x2.000001ffffffep-64,
 	0x2.000002p-64,
 	0x2.000001ffffffep-64,
 	0x2.000002p-64,
+	false,
 	0x2.000001ffffffep-64L,
 	0x2.000002p-64L,
 	0x2.000001ffffffep-64L,
 	0x2.000002p-64L,
+	false,
 	0x2.000001fffffffffcp-64L,
 	0x2.000002p-64L,
 	0x2.000001fffffffffcp-64L,
 	0x2.000002p-64L,
+	false,
 	0x2.000001fffffffffcp-64L,
 	0x2.000002p-64L,
 	0x2.000001fffffffffcp-64L,
@@ -1226,28 +1459,34 @@ static const struct test tests[] = {
 	0x2.000002p-64L,
 	0x2.000001ffffffffffffffffffffp-64L,
 	0x2.000002p-64L,
+	false,
 	0x2.000001fffffffffffffffffffffep-64L,
 	0x2.000002p-64L,
 	0x2.000001fffffffffffffffffffffep-64L,
 	0x2.000002p-64L),
   TEST ("1.0842022371089897897127399001987457793916291848290711641311"
 	"6455078125e-19",
+	false,
 	0x2p-64f,
 	0x2p-64f,
 	0x2p-64f,
 	0x2.000004p-64f,
+	true,
 	0x2.000002p-64,
 	0x2.000002p-64,
 	0x2.000002p-64,
 	0x2.000002p-64,
+	true,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
+	true,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
+	true,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
@@ -1257,28 +1496,34 @@ static const struct test tests[] = {
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
+	true,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L),
   TEST ("1.0842022371089897897127399001987457793916291848290711641311"
 	"645507812501e-19",
+	false,
 	0x2p-64f,
 	0x2.000004p-64f,
 	0x2p-64f,
 	0x2.000004p-64f,
+	false,
 	0x2.000002p-64,
 	0x2.000002p-64,
 	0x2.000002p-64,
 	0x2.0000020000002p-64,
+	false,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.0000020000002p-64L,
+	false,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.0000020000000004p-64L,
+	false,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
@@ -1288,28 +1533,34 @@ static const struct test tests[] = {
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.00000200000000000000000001p-64L,
+	false,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.000002p-64L,
 	0x2.0000020000000000000000000002p-64L),
   TEST ("1.0842023017324751454180269995275498473574771196581423282623"
 	"291015625e-19",
+	true,
 	0x2.000004p-64f,
 	0x2.000004p-64f,
 	0x2.000004p-64f,
 	0x2.000004p-64f,
+	true,
 	0x2.000004p-64,
 	0x2.000004p-64,
 	0x2.000004p-64,
 	0x2.000004p-64,
+	true,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
+	true,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
+	true,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
@@ -1319,28 +1570,34 @@ static const struct test tests[] = {
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
+	true,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L,
 	0x2.000004p-64L),
   TEST ("1.0842023663559605011233140988563539153233250544872134923934"
 	"936523437499e-19",
+	false,
 	0x2.000004p-64f,
 	0x2.000004p-64f,
 	0x2.000004p-64f,
 	0x2.000008p-64f,
+	false,
 	0x2.000005ffffffep-64,
 	0x2.000006p-64,
 	0x2.000005ffffffep-64,
 	0x2.000006p-64,
+	false,
 	0x2.000005ffffffep-64L,
 	0x2.000006p-64L,
 	0x2.000005ffffffep-64L,
 	0x2.000006p-64L,
+	false,
 	0x2.000005fffffffffcp-64L,
 	0x2.000006p-64L,
 	0x2.000005fffffffffcp-64L,
 	0x2.000006p-64L,
+	false,
 	0x2.000005fffffffffcp-64L,
 	0x2.000006p-64L,
 	0x2.000005fffffffffcp-64L,
@@ -1350,28 +1607,34 @@ static const struct test tests[] = {
 	0x2.000006p-64L,
 	0x2.000005ffffffffffffffffffffp-64L,
 	0x2.000006p-64L,
+	false,
 	0x2.000005fffffffffffffffffffffep-64L,
 	0x2.000006p-64L,
 	0x2.000005fffffffffffffffffffffep-64L,
 	0x2.000006p-64L),
   TEST ("1.0842023663559605011233140988563539153233250544872134923934"
 	"9365234375e-19",
+	false,
 	0x2.000004p-64f,
 	0x2.000008p-64f,
 	0x2.000004p-64f,
 	0x2.000008p-64f,
+	true,
 	0x2.000006p-64,
 	0x2.000006p-64,
 	0x2.000006p-64,
 	0x2.000006p-64,
+	true,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
+	true,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
+	true,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
@@ -1381,28 +1644,34 @@ static const struct test tests[] = {
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
+	true,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L),
   TEST ("1.0842023663559605011233140988563539153233250544872134923934"
 	"936523437501e-19",
+	false,
 	0x2.000004p-64f,
 	0x2.000008p-64f,
 	0x2.000004p-64f,
 	0x2.000008p-64f,
+	false,
 	0x2.000006p-64,
 	0x2.000006p-64,
 	0x2.000006p-64,
 	0x2.0000060000002p-64,
+	false,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.0000060000002p-64L,
+	false,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.0000060000000004p-64L,
+	false,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
@@ -1412,28 +1681,34 @@ static const struct test tests[] = {
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.00000600000000000000000001p-64L,
+	false,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.000006p-64L,
 	0x2.0000060000000000000000000002p-64L),
   TEST ("1.0842024309794458568286011981851579832891729893162846565246"
 	"58203125e-19",
+	true,
 	0x2.000008p-64f,
 	0x2.000008p-64f,
 	0x2.000008p-64f,
 	0x2.000008p-64f,
+	true,
 	0x2.000008p-64,
 	0x2.000008p-64,
 	0x2.000008p-64,
 	0x2.000008p-64,
+	true,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
+	true,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
+	true,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
@@ -1443,28 +1718,34 @@ static const struct test tests[] = {
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
+	true,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L,
 	0x2.000008p-64L),
   TEST ("7.5231638452626400509999138382223723380394595633413601376560"
 	"1092018187046051025390625e-37",
+	true,
 	0x1p-120f,
 	0x1p-120f,
 	0x1p-120f,
 	0x1p-120f,
+	true,
 	0x1p-120,
 	0x1p-120,
 	0x1p-120,
 	0x1p-120,
+	true,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
+	true,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
+	true,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
@@ -1474,28 +1755,34 @@ static const struct test tests[] = {
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
+	true,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L,
 	0x1p-120L),
   TEST ("7.5231642936781486349413765338158389908126215730251815381410"
 	"578824437213052434003657253924757242202758789062499e-37",
+	false,
 	0x1p-120f,
 	0x1p-120f,
 	0x1p-120f,
 	0x1.000002p-120f,
+	false,
 	0x1.000000fffffffp-120,
 	0x1.000001p-120,
 	0x1.000000fffffffp-120,
 	0x1.000001p-120,
+	false,
 	0x1.000000fffffffp-120L,
 	0x1.000001p-120L,
 	0x1.000000fffffffp-120L,
 	0x1.000001p-120L,
+	false,
 	0x1.000000fffffffffep-120L,
 	0x1.000001p-120L,
 	0x1.000000fffffffffep-120L,
 	0x1.000001p-120L,
+	false,
 	0x1.000000fffffffffep-120L,
 	0x1.000001p-120L,
 	0x1.000000fffffffffep-120L,
@@ -1505,28 +1792,34 @@ static const struct test tests[] = {
 	0x1.000001p-120L,
 	0x1.000000ffffffffffffffffffff8p-120L,
 	0x1.000001p-120L,
+	false,
 	0x1.000000ffffffffffffffffffffffp-120L,
 	0x1.000001p-120L,
 	0x1.000000ffffffffffffffffffffffp-120L,
 	0x1.000001p-120L),
   TEST ("7.5231642936781486349413765338158389908126215730251815381410"
 	"5788244372130524340036572539247572422027587890625e-37",
+	false,
 	0x1p-120f,
 	0x1p-120f,
 	0x1p-120f,
 	0x1.000002p-120f,
+	true,
 	0x1.000001p-120,
 	0x1.000001p-120,
 	0x1.000001p-120,
 	0x1.000001p-120,
+	true,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
+	true,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
+	true,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
@@ -1536,28 +1829,34 @@ static const struct test tests[] = {
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
+	true,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L),
   TEST ("7.5231642936781486349413765338158389908126215730251815381410"
 	"578824437213052434003657253924757242202758789062501e-37",
+	false,
 	0x1p-120f,
 	0x1.000002p-120f,
 	0x1p-120f,
 	0x1.000002p-120f,
+	false,
 	0x1.000001p-120,
 	0x1.000001p-120,
 	0x1.000001p-120,
 	0x1.0000010000001p-120,
+	false,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.0000010000001p-120L,
+	false,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.0000010000000002p-120L,
+	false,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
@@ -1567,28 +1866,34 @@ static const struct test tests[] = {
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001000000000000000000008p-120L,
+	false,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.000001p-120L,
 	0x1.0000010000000000000000000001p-120L),
   TEST ("7.5231647420936572188828392294093056435857835827090029386261"
 	"048447055721499765468252007849514484405517578125e-37",
+	true,
 	0x1.000002p-120f,
 	0x1.000002p-120f,
 	0x1.000002p-120f,
 	0x1.000002p-120f,
+	true,
 	0x1.000002p-120,
 	0x1.000002p-120,
 	0x1.000002p-120,
 	0x1.000002p-120,
+	true,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
+	true,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
+	true,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
@@ -1598,28 +1903,34 @@ static const struct test tests[] = {
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
+	true,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L,
 	0x1.000002p-120L),
   TEST ("7.5231651905091658028243019250027722963589455923928243391111"
 	"518069674229947096932846761774271726608276367187499e-37",
+	false,
 	0x1.000002p-120f,
 	0x1.000002p-120f,
 	0x1.000002p-120f,
 	0x1.000004p-120f,
+	false,
 	0x1.000002fffffffp-120,
 	0x1.000003p-120,
 	0x1.000002fffffffp-120,
 	0x1.000003p-120,
+	false,
 	0x1.000002fffffffp-120L,
 	0x1.000003p-120L,
 	0x1.000002fffffffp-120L,
 	0x1.000003p-120L,
+	false,
 	0x1.000002fffffffffep-120L,
 	0x1.000003p-120L,
 	0x1.000002fffffffffep-120L,
 	0x1.000003p-120L,
+	false,
 	0x1.000002fffffffffep-120L,
 	0x1.000003p-120L,
 	0x1.000002fffffffffep-120L,
@@ -1629,28 +1940,34 @@ static const struct test tests[] = {
 	0x1.000003p-120L,
 	0x1.000002ffffffffffffffffffff8p-120L,
 	0x1.000003p-120L,
+	false,
 	0x1.000002ffffffffffffffffffffffp-120L,
 	0x1.000003p-120L,
 	0x1.000002ffffffffffffffffffffffp-120L,
 	0x1.000003p-120L),
   TEST ("7.5231651905091658028243019250027722963589455923928243391111"
 	"5180696742299470969328467617742717266082763671875e-37",
+	false,
 	0x1.000002p-120f,
 	0x1.000004p-120f,
 	0x1.000002p-120f,
 	0x1.000004p-120f,
+	true,
 	0x1.000003p-120,
 	0x1.000003p-120,
 	0x1.000003p-120,
 	0x1.000003p-120,
+	true,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
+	true,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
+	true,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
@@ -1660,28 +1977,34 @@ static const struct test tests[] = {
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
+	true,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L),
   TEST ("7.5231651905091658028243019250027722963589455923928243391111"
 	"518069674229947096932846761774271726608276367187501e-37",
+	false,
 	0x1.000002p-120f,
 	0x1.000004p-120f,
 	0x1.000002p-120f,
 	0x1.000004p-120f,
+	false,
 	0x1.000003p-120,
 	0x1.000003p-120,
 	0x1.000003p-120,
 	0x1.0000030000001p-120,
+	false,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.0000030000001p-120L,
+	false,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.0000030000000002p-120L,
+	false,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
@@ -1691,28 +2014,34 @@ static const struct test tests[] = {
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003000000000000000000008p-120L,
+	false,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.000003p-120L,
 	0x1.0000030000000000000000000001p-120L),
   TEST ("7.5231656389246743867657646205962389491321076020766457395961"
 	"98769229273839442839744151569902896881103515625e-37",
+	true,
 	0x1.000004p-120f,
 	0x1.000004p-120f,
 	0x1.000004p-120f,
 	0x1.000004p-120f,
+	true,
 	0x1.000004p-120,
 	0x1.000004p-120,
 	0x1.000004p-120,
 	0x1.000004p-120,
+	true,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
+	true,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
+	true,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
@@ -1722,27 +2051,33 @@ static const struct test tests[] = {
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
+	true,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L,
 	0x1.000004p-120L),
   TEST ("340282356779733661637539395458142568447.999",
+	false,
 	0xf.fffffp+124f,
 	0xf.fffffp+124f,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.fffff7ffffff8p+124,
 	0xf.fffff8p+124,
 	0xf.fffff7ffffff8p+124,
 	0xf.fffff8p+124,
+	false,
 	0xf.fffff7ffffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff7ffffff8p+124L,
 	0xf.fffff8p+124L,
+	false,
 	0xf.fffff7fffffffffp+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff7fffffffffp+124L,
 	0xf.fffff8p+124L,
+	false,
 	0xf.fffff7fffffffffp+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff7fffffffffp+124L,
@@ -1752,27 +2087,33 @@ static const struct test tests[] = {
 	0xf.fffff8p+124L,
 	0xf.fffff7fffffffffffffffffffcp+124L,
 	0xf.fffff8p+124L,
+	false,
 	0xf.fffff7fffffffffffffffffffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff7fffffffffffffffffffff8p+124L,
 	0xf.fffff8p+124L),
   TEST ("340282356779733661637539395458142568448",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	true,
 	0xf.fffff8p+124,
 	0xf.fffff8p+124,
 	0xf.fffff8p+124,
 	0xf.fffff8p+124,
+	true,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
+	true,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
+	true,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
@@ -1782,27 +2123,33 @@ static const struct test tests[] = {
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
+	true,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L),
   TEST ("340282356779733661637539395458142568448.001",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.fffff8p+124,
 	0xf.fffff8p+124,
 	0xf.fffff8p+124,
 	0xf.fffff80000008p+124,
+	false,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff80000008p+124L,
+	false,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8000000001p+124L,
+	false,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
@@ -1812,27 +2159,33 @@ static const struct test tests[] = {
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff800000000000000000004p+124L,
+	false,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff8p+124L,
 	0xf.fffff80000000000000000000008p+124L),
   TEST ("-340282356779733661637539395458142568447.999",
+	false,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-0xf.fffff8p+124,
 	-0xf.fffff8p+124,
 	-0xf.fffff7ffffff8p+124,
 	-0xf.fffff7ffffff8p+124,
+	false,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff7ffffff8p+124L,
 	-0xf.fffff7ffffff8p+124L,
+	false,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff7fffffffffp+124L,
 	-0xf.fffff7fffffffffp+124L,
+	false,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff7fffffffffp+124L,
@@ -1842,27 +2195,33 @@ static const struct test tests[] = {
 	-0xf.fffff8p+124L,
 	-0xf.fffff7fffffffffffffffffffcp+124L,
 	-0xf.fffff7fffffffffffffffffffcp+124L,
+	false,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff7fffffffffffffffffffff8p+124L,
 	-0xf.fffff7fffffffffffffffffffff8p+124L),
   TEST ("-340282356779733661637539395458142568448",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	true,
 	-0xf.fffff8p+124,
 	-0xf.fffff8p+124,
 	-0xf.fffff8p+124,
 	-0xf.fffff8p+124,
+	true,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
+	true,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
+	true,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
@@ -1872,27 +2231,33 @@ static const struct test tests[] = {
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
+	true,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L),
   TEST ("-340282356779733661637539395458142568448.001",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-0xf.fffff80000008p+124,
 	-0xf.fffff8p+124,
 	-0xf.fffff8p+124,
 	-0xf.fffff8p+124,
+	false,
 	-0xf.fffff80000008p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
+	false,
 	-0xf.fffff8000000001p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
+	false,
 	-0xf.fffff8000000001p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
@@ -1902,6 +2267,7 @@ static const struct test tests[] = {
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
+	false,
 	-0xf.fffff80000000000000000000008p+124L,
 	-0xf.fffff8p+124L,
 	-0xf.fffff8p+124L,
@@ -1912,22 +2278,27 @@ static const struct test tests[] = {
 	"854845817711531764475730270069855571366959622842914819860834"
 	"936475292719074168444365510704342711559699508093042880177904"
 	"174497791.999",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	0xf.ffffffffffff8p+1020,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	0xf.ffffffffffff8p+1020L,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.ffffffffffffbffp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffbffp+1020L,
 	0xf.ffffffffffffcp+1020L,
+	false,
 	0xf.ffffffffffffbffp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffbffp+1020L,
@@ -1937,6 +2308,7 @@ static const struct test tests[] = {
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffbffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
+	false,
 	0xf.ffffffffffffbffffffffffffff8p+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffbffffffffffffff8p+1020L,
@@ -1947,22 +2319,27 @@ static const struct test tests[] = {
 	"854845817711531764475730270069855571366959622842914819860834"
 	"936475292719074168444365510704342711559699508093042880177904"
 	"174497792",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	true,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
+	true,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
@@ -1972,6 +2349,7 @@ static const struct test tests[] = {
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
+	true,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
@@ -1982,22 +2360,27 @@ static const struct test tests[] = {
 	"854845817711531764475730270069855571366959622842914819860834"
 	"936475292719074168444365510704342711559699508093042880177904"
 	"174497792.001",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffc01p+1020L,
+	false,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
@@ -2007,6 +2390,7 @@ static const struct test tests[] = {
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffc0000000000004p+1020L,
+	false,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
 	0xf.ffffffffffffcp+1020L,
@@ -2017,22 +2401,27 @@ static const struct test tests[] = {
 	"385484581771153176447573027006985557136695962284291481986083"
 	"493647529271907416844436551070434271155969950809304288017790"
 	"4174497791.999",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffbffp+1020L,
 	-0xf.ffffffffffffbffp+1020L,
+	false,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffbffp+1020L,
@@ -2042,6 +2431,7 @@ static const struct test tests[] = {
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffbffffffffffffcp+1020L,
 	-0xf.ffffffffffffbffffffffffffcp+1020L,
+	false,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffbffffffffffffff8p+1020L,
@@ -2052,22 +2442,27 @@ static const struct test tests[] = {
 	"385484581771153176447573027006985557136695962284291481986083"
 	"493647529271907416844436551070434271155969950809304288017790"
 	"4174497792",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	true,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
+	true,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
@@ -2077,6 +2472,7 @@ static const struct test tests[] = {
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
+	true,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
@@ -2087,22 +2483,27 @@ static const struct test tests[] = {
 	"385484581771153176447573027006985557136695962284291481986083"
 	"493647529271907416844436551070434271155969950809304288017790"
 	"4174497792.001",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-0xf.ffffffffffffc01p+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
+	false,
 	-0xf.ffffffffffffc01p+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
@@ -2112,6 +2513,7 @@ static const struct test tests[] = {
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
+	false,
 	-0xf.ffffffffffffc000000000000008p+1020L,
 	-0xf.ffffffffffffcp+1020L,
 	-0xf.ffffffffffffcp+1020L,
@@ -2199,22 +2601,27 @@ static const struct test tests[] = {
 	"125898120366007955506160309553860446596202876233728025871625"
 	"578031503869424406179027994752890226443351619365453243328968"
 	"8740976918527.999",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	0xf.fffffffffffffffp+16380L,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	0xf.fffffffffffffffp+16380L,
 	0xf.fffffffffffffffp+16380L,
@@ -2224,6 +2631,7 @@ static const struct test tests[] = {
 	INFINITY,
 	0xf.fffffffffffffffffffffffffcp+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffff7fffffffffff8p+16380L,
 	0xf.fffffffffffffff8p+16380L,
 	0xf.fffffffffffffff7fffffffffff8p+16380L,
@@ -2311,22 +2719,27 @@ static const struct test tests[] = {
 	"125898120366007955506160309553860446596202876233728025871625"
 	"578031503869424406179027994752890226443351619365453243328968"
 	"8740976918528",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
@@ -2336,6 +2749,7 @@ static const struct test tests[] = {
 	INFINITY,
 	0xf.fffffffffffffffffffffffffcp+1020L,
 	INFINITY,
+	true,
 	0xf.fffffffffffffff8p+16380L,
 	0xf.fffffffffffffff8p+16380L,
 	0xf.fffffffffffffff8p+16380L,
@@ -2423,22 +2837,27 @@ static const struct test tests[] = {
 	"125898120366007955506160309553860446596202876233728025871625"
 	"578031503869424406179027994752890226443351619365453243328968"
 	"8740976918528.001",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
@@ -2448,6 +2867,7 @@ static const struct test tests[] = {
 	INFINITY,
 	0xf.fffffffffffffffffffffffffcp+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffff8p+16380L,
 	0xf.fffffffffffffff8p+16380L,
 	0xf.fffffffffffffff8p+16380L,
@@ -2535,22 +2955,27 @@ static const struct test tests[] = {
 	"912589812036600795550616030955386044659620287623372802587162"
 	"557803150386942440617902799475289022644335161936545324332896"
 	"88740976918527.999",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
+	false,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
@@ -2560,6 +2985,7 @@ static const struct test tests[] = {
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
+	false,
 	-0xf.fffffffffffffff8p+16380L,
 	-0xf.fffffffffffffff8p+16380L,
 	-0xf.fffffffffffffff7fffffffffff8p+16380L,
@@ -2647,22 +3073,27 @@ static const struct test tests[] = {
 	"912589812036600795550616030955386044659620287623372802587162"
 	"557803150386942440617902799475289022644335161936545324332896"
 	"88740976918528",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
@@ -2672,6 +3103,7 @@ static const struct test tests[] = {
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
+	true,
 	-0xf.fffffffffffffff8p+16380L,
 	-0xf.fffffffffffffff8p+16380L,
 	-0xf.fffffffffffffff8p+16380L,
@@ -2759,22 +3191,27 @@ static const struct test tests[] = {
 	"912589812036600795550616030955386044659620287623372802587162"
 	"557803150386942440617902799475289022644335161936545324332896"
 	"88740976918528.001",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
@@ -2784,6 +3221,7 @@ static const struct test tests[] = {
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
+	false,
 	-0xf.fffffffffffffff8000000000008p+16380L,
 	-0xf.fffffffffffffff8p+16380L,
 	-0xf.fffffffffffffff8p+16380L,
@@ -2871,22 +3309,27 @@ static const struct test tests[] = {
 	"780117858230840648695846140902244217544683559565818359212130"
 	"972233447491583165728635513802591543441145939539353470970452"
 	"5536550715391.999",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
@@ -2896,6 +3339,7 @@ static const struct test tests[] = {
 	INFINITY,
 	0xf.fffffffffffffffffffffffffcp+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -2983,22 +3427,27 @@ static const struct test tests[] = {
 	"780117858230840648695846140902244217544683559565818359212130"
 	"972233447491583165728635513802591543441145939539353470970452"
 	"5536550715392",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
@@ -3008,6 +3457,7 @@ static const struct test tests[] = {
 	INFINITY,
 	0xf.fffffffffffffffffffffffffcp+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
 	INFINITY,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3095,22 +3545,27 @@ static const struct test tests[] = {
 	"780117858230840648695846140902244217544683559565818359212130"
 	"972233447491583165728635513802591543441145939539353470970452"
 	"5536550715392.001",
+	false,
 	0xf.fffffp+124f,
 	INFINITY,
 	0xf.fffffp+124f,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
 	0xf.ffffffffffff8p+1020,
 	INFINITY,
+	false,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
 	0xf.ffffffffffff8p+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffp+16380L,
 	INFINITY,
 	0xf.fffffffffffffffp+16380L,
@@ -3120,6 +3575,7 @@ static const struct test tests[] = {
 	INFINITY,
 	0xf.fffffffffffffffffffffffffcp+1020L,
 	INFINITY,
+	false,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
 	INFINITY,
 	0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3207,22 +3663,27 @@ static const struct test tests[] = {
 	"778011785823084064869584614090224421754468355956581835921213"
 	"097223344749158316572863551380259154344114593953935347097045"
 	"25536550715391.999",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
@@ -3232,6 +3693,7 @@ static const struct test tests[] = {
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
+	false,
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffff8p+16380L,
 	-0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3319,22 +3781,27 @@ static const struct test tests[] = {
 	"778011785823084064869584614090224421754468355956581835921213"
 	"097223344749158316572863551380259154344114593953935347097045"
 	"25536550715392",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
@@ -3344,6 +3811,7 @@ static const struct test tests[] = {
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3431,22 +3899,27 @@ static const struct test tests[] = {
 	"778011785823084064869584614090224421754468355956581835921213"
 	"097223344749158316572863551380259154344114593953935347097045"
 	"25536550715392.001",
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffp+124f,
 	-0xf.fffffp+124f,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020,
 	-0xf.ffffffffffff8p+1020,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.ffffffffffff8p+1020L,
 	-0xf.ffffffffffff8p+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
 	-0xf.fffffffffffffffp+16380L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffp+16380L,
@@ -3456,28 +3929,34 @@ static const struct test tests[] = {
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
 	-0xf.fffffffffffffffffffffffffcp+1020L,
+	false,
 	-INFINITY,
 	-INFINITY,
 	-0xf.fffffffffffffffffffffffffff8p+16380L,
 	-0xf.fffffffffffffffffffffffffff8p+16380L),
   TEST ("2.1019476964872256063855943749348741969203929128147736576356"
 	"0242583468662402879090222995728254318237304687499e-45",
+	false,
 	0x8p-152f,
 	0x8p-152f,
 	0x8p-152f,
 	0x1p-148f,
+	false,
 	0xb.ffffffffffff8p-152,
 	0xcp-152,
 	0xb.ffffffffffff8p-152,
 	0xcp-152,
+	false,
 	0xb.ffffffffffff8p-152L,
 	0xcp-152L,
 	0xb.ffffffffffff8p-152L,
 	0xcp-152L,
+	false,
 	0xb.fffffffffffffffp-152L,
 	0xcp-152L,
 	0xb.fffffffffffffffp-152L,
 	0xcp-152L,
+	false,
 	0xb.fffffffffffffffp-152L,
 	0xcp-152L,
 	0xb.fffffffffffffffp-152L,
@@ -3487,28 +3966,34 @@ static const struct test tests[] = {
 	0xcp-152L,
 	0xb.fffffffffffffffffffffffffcp-152L,
 	0xcp-152L,
+	false,
 	0xb.fffffffffffffffffffffffffff8p-152L,
 	0xcp-152L,
 	0xb.fffffffffffffffffffffffffff8p-152L,
 	0xcp-152L),
   TEST ("2.1019476964872256063855943749348741969203929128147736576356"
 	"02425834686624028790902229957282543182373046875e-45",
+	true,
 	0x8p-152f,
 	0x1p-148f,
 	0x8p-152f,
 	0x1p-148f,
+	true,
 	0xcp-152,
 	0xcp-152,
 	0xcp-152,
 	0xcp-152,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
@@ -3518,28 +4003,34 @@ static const struct test tests[] = {
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
+	true,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L),
   TEST ("2.1019476964872256063855943749348741969203929128147736576356"
 	"0242583468662402879090222995728254318237304687501e-45",
+	false,
 	0x8p-152f,
 	0x1p-148f,
 	0x8p-152f,
 	0x1p-148f,
+	false,
 	0xcp-152,
 	0xcp-152,
 	0xcp-152,
 	0xc.0000000000008p-152,
+	false,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xc.0000000000008p-152L,
+	false,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xc.000000000000001p-152L,
+	false,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
@@ -3549,28 +4040,34 @@ static const struct test tests[] = {
 	0xcp-152L,
 	0xcp-152L,
 	0xc.00000000000000000000000004p-152L,
+	false,
 	0xcp-152L,
 	0xcp-152L,
 	0xcp-152L,
 	0xc.0000000000000000000000000008p-152L),
   TEST ("-2.101947696487225606385594374934874196920392912814773657635"
 	"60242583468662402879090222995728254318237304687499e-45",
+	false,
 	-0x1p-148f,
 	-0x8p-152f,
 	-0x8p-152f,
 	-0x8p-152f,
+	false,
 	-0xcp-152,
 	-0xcp-152,
 	-0xb.ffffffffffff8p-152,
 	-0xb.ffffffffffff8p-152,
+	false,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xb.ffffffffffff8p-152L,
 	-0xb.ffffffffffff8p-152L,
+	false,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xb.fffffffffffffffp-152L,
 	-0xb.fffffffffffffffp-152L,
+	false,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xb.fffffffffffffffp-152L,
@@ -3580,28 +4077,34 @@ static const struct test tests[] = {
 	-0xcp-152L,
 	-0xb.fffffffffffffffffffffffffcp-152L,
 	-0xb.fffffffffffffffffffffffffcp-152L,
+	false,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xb.fffffffffffffffffffffffffff8p-152L,
 	-0xb.fffffffffffffffffffffffffff8p-152L),
   TEST ("-2.101947696487225606385594374934874196920392912814773657635"
 	"602425834686624028790902229957282543182373046875e-45",
+	true,
 	-0x1p-148f,
 	-0x1p-148f,
 	-0x8p-152f,
 	-0x8p-152f,
+	true,
 	-0xcp-152,
 	-0xcp-152,
 	-0xcp-152,
 	-0xcp-152,
+	true,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
+	true,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
+	true,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
@@ -3611,28 +4114,34 @@ static const struct test tests[] = {
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
+	true,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L),
   TEST ("-2.101947696487225606385594374934874196920392912814773657635"
 	"60242583468662402879090222995728254318237304687501e-45",
+	false,
 	-0x1p-148f,
 	-0x1p-148f,
 	-0x8p-152f,
 	-0x8p-152f,
+	false,
 	-0xc.0000000000008p-152,
 	-0xcp-152,
 	-0xcp-152,
 	-0xcp-152,
+	false,
 	-0xc.0000000000008p-152L,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
+	false,
 	-0xc.000000000000001p-152L,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
+	false,
 	-0xc.000000000000001p-152L,
 	-0xcp-152L,
 	-0xcp-152L,
@@ -3642,28 +4151,34 @@ static const struct test tests[] = {
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L,
+	false,
 	-0xc.0000000000000000000000000008p-152L,
 	-0xcp-152L,
 	-0xcp-152L,
 	-0xcp-152L),
   TEST ("3.5032461608120426773093239582247903282006548546912894293926"
 	"7070972447770671465150371659547090530395507812499e-45",
+	false,
 	0x1p-148f,
 	0x1p-148f,
 	0x1p-148f,
 	0x1.8p-148f,
+	false,
 	0x1.3ffffffffffffp-148,
 	0x1.4p-148,
 	0x1.3ffffffffffffp-148,
 	0x1.4p-148,
+	false,
 	0x1.3ffffffffffffp-148L,
 	0x1.4p-148L,
 	0x1.3ffffffffffffp-148L,
 	0x1.4p-148L,
+	false,
 	0x1.3ffffffffffffffep-148L,
 	0x1.4p-148L,
 	0x1.3ffffffffffffffep-148L,
 	0x1.4p-148L,
+	false,
 	0x1.3ffffffffffffffep-148L,
 	0x1.4p-148L,
 	0x1.3ffffffffffffffep-148L,
@@ -3673,28 +4188,34 @@ static const struct test tests[] = {
 	0x1.4p-148L,
 	0x1.3fffffffffffffffffffffffff8p-148L,
 	0x1.4p-148L,
+	false,
 	0x1.3fffffffffffffffffffffffffffp-148L,
 	0x1.4p-148L,
 	0x1.3fffffffffffffffffffffffffffp-148L,
 	0x1.4p-148L),
   TEST ("3.5032461608120426773093239582247903282006548546912894293926"
 	"70709724477706714651503716595470905303955078125e-45",
+	true,
 	0x1p-148f,
 	0x1p-148f,
 	0x1p-148f,
 	0x1.8p-148f,
+	true,
 	0x1.4p-148,
 	0x1.4p-148,
 	0x1.4p-148,
 	0x1.4p-148,
+	true,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
+	true,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
+	true,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
@@ -3704,28 +4225,34 @@ static const struct test tests[] = {
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
+	true,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L),
   TEST ("3.5032461608120426773093239582247903282006548546912894293926"
 	"7070972447770671465150371659547090530395507812501e-45",
+	false,
 	0x1p-148f,
 	0x1.8p-148f,
 	0x1p-148f,
 	0x1.8p-148f,
+	false,
 	0x1.4p-148,
 	0x1.4p-148,
 	0x1.4p-148,
 	0x1.4000000000001p-148,
+	false,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4000000000001p-148L,
+	false,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4000000000000002p-148L,
+	false,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
@@ -3735,28 +4262,34 @@ static const struct test tests[] = {
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.400000000000000000000000008p-148L,
+	false,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4p-148L,
 	0x1.4000000000000000000000000001p-148L),
   TEST ("-3.503246160812042677309323958224790328200654854691289429392"
 	"67070972447770671465150371659547090530395507812499e-45",
+	false,
 	-0x1.8p-148f,
 	-0x1p-148f,
 	-0x1p-148f,
 	-0x1p-148f,
+	false,
 	-0x1.4p-148,
 	-0x1.4p-148,
 	-0x1.3ffffffffffffp-148,
 	-0x1.3ffffffffffffp-148,
+	false,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.3ffffffffffffp-148L,
 	-0x1.3ffffffffffffp-148L,
+	false,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.3ffffffffffffffep-148L,
 	-0x1.3ffffffffffffffep-148L,
+	false,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.3ffffffffffffffep-148L,
@@ -3766,28 +4299,34 @@ static const struct test tests[] = {
 	-0x1.4p-148L,
 	-0x1.3fffffffffffffffffffffffff8p-148L,
 	-0x1.3fffffffffffffffffffffffff8p-148L,
+	false,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.3fffffffffffffffffffffffffffp-148L,
 	-0x1.3fffffffffffffffffffffffffffp-148L),
   TEST ("-3.503246160812042677309323958224790328200654854691289429392"
 	"670709724477706714651503716595470905303955078125e-45",
+	true,
 	-0x1.8p-148f,
 	-0x1p-148f,
 	-0x1p-148f,
 	-0x1p-148f,
+	true,
 	-0x1.4p-148,
 	-0x1.4p-148,
 	-0x1.4p-148,
 	-0x1.4p-148,
+	true,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
+	true,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
+	true,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
@@ -3797,28 +4336,34 @@ static const struct test tests[] = {
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
+	true,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L),
   TEST ("-3.503246160812042677309323958224790328200654854691289429392"
 	"67070972447770671465150371659547090530395507812501e-45",
+	false,
 	-0x1.8p-148f,
 	-0x1.8p-148f,
 	-0x1p-148f,
 	-0x1p-148f,
+	false,
 	-0x1.4000000000001p-148,
 	-0x1.4p-148,
 	-0x1.4p-148,
 	-0x1.4p-148,
+	false,
 	-0x1.4000000000001p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
+	false,
 	-0x1.4000000000000002p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
+	false,
 	-0x1.4000000000000002p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
@@ -3828,6 +4373,7 @@ static const struct test tests[] = {
 	-0x1.4p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
+	false,
 	-0x1.4000000000000000000000000001p-148L,
 	-0x1.4p-148L,
 	-0x1.4p-148L,
@@ -3845,22 +4391,27 @@ static const struct test tests[] = {
 	"705269590165763776884908267986972573366521765567941072508764"
 	"337560846003984904972149117463085539556354188641513168478436"
 	"31308023759629577398300170898437499e-324",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x4p-1076,
 	0x4p-1076,
 	0x4p-1076,
 	0x8p-1076,
+	false,
 	0x4p-1076L,
 	0x4p-1076L,
 	0x4p-1076L,
 	0x8p-1076L,
+	false,
 	0x5.fffffffffffffff8p-1076L,
 	0x6p-1076L,
 	0x5.fffffffffffffff8p-1076L,
 	0x6p-1076L,
+	false,
 	0x5.fffffffffffffff8p-1076L,
 	0x6p-1076L,
 	0x5.fffffffffffffff8p-1076L,
@@ -3870,6 +4421,7 @@ static const struct test tests[] = {
 	0x4p-1076L,
 	0x4p-1076L,
 	0x8p-1076L,
+	false,
 	0x5.fffffffffffffffffffffffffffcp-1076L,
 	0x6p-1076L,
 	0x5.fffffffffffffffffffffffffffcp-1076L,
@@ -3887,22 +4439,27 @@ static const struct test tests[] = {
 	"705269590165763776884908267986972573366521765567941072508764"
 	"337560846003984904972149117463085539556354188641513168478436"
 	"313080237596295773983001708984375e-324",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	true,
 	0x4p-1076,
 	0x8p-1076,
 	0x4p-1076,
 	0x8p-1076,
+	true,
 	0x4p-1076L,
 	0x8p-1076L,
 	0x4p-1076L,
 	0x8p-1076L,
+	true,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
+	true,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
@@ -3912,6 +4469,7 @@ static const struct test tests[] = {
 	0x8p-1076L,
 	0x4p-1076L,
 	0x8p-1076L,
+	true,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
@@ -3929,22 +4487,27 @@ static const struct test tests[] = {
 	"705269590165763776884908267986972573366521765567941072508764"
 	"337560846003984904972149117463085539556354188641513168478436"
 	"31308023759629577398300170898437501e-324",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x4p-1076,
 	0x8p-1076,
 	0x4p-1076,
 	0x8p-1076,
+	false,
 	0x4p-1076L,
 	0x8p-1076L,
 	0x4p-1076L,
 	0x8p-1076L,
+	false,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6.0000000000000008p-1076L,
+	false,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
@@ -3954,6 +4517,7 @@ static const struct test tests[] = {
 	0x8p-1076L,
 	0x4p-1076L,
 	0x8p-1076L,
+	false,
 	0x6p-1076L,
 	0x6p-1076L,
 	0x6p-1076L,
@@ -3971,22 +4535,27 @@ static const struct test tests[] = {
 	"470526959016576377688490826798697257336652176556794107250876"
 	"433756084600398490497214911746308553955635418864151316847843"
 	"631308023759629577398300170898437499e-324",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x8p-1076,
 	-0x4p-1076,
 	-0x4p-1076,
 	-0x4p-1076,
+	false,
 	-0x8p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
+	false,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x5.fffffffffffffff8p-1076L,
 	-0x5.fffffffffffffff8p-1076L,
+	false,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x5.fffffffffffffff8p-1076L,
@@ -3996,6 +4565,7 @@ static const struct test tests[] = {
 	-0x4p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
+	false,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x5.fffffffffffffffffffffffffffcp-1076L,
@@ -4013,22 +4583,27 @@ static const struct test tests[] = {
 	"470526959016576377688490826798697257336652176556794107250876"
 	"433756084600398490497214911746308553955635418864151316847843"
 	"6313080237596295773983001708984375e-324",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	true,
 	-0x8p-1076,
 	-0x8p-1076,
 	-0x4p-1076,
 	-0x4p-1076,
+	true,
 	-0x8p-1076L,
 	-0x8p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
+	true,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
+	true,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
@@ -4038,6 +4613,7 @@ static const struct test tests[] = {
 	-0x8p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
+	true,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
@@ -4055,22 +4631,27 @@ static const struct test tests[] = {
 	"470526959016576377688490826798697257336652176556794107250876"
 	"433756084600398490497214911746308553955635418864151316847843"
 	"631308023759629577398300170898437501e-324",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x8p-1076,
 	-0x8p-1076,
 	-0x4p-1076,
 	-0x4p-1076,
+	false,
 	-0x8p-1076L,
 	-0x8p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
+	false,
 	-0x6.0000000000000008p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
+	false,
 	-0x6.0000000000000008p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
@@ -4080,6 +4661,7 @@ static const struct test tests[] = {
 	-0x8p-1076L,
 	-0x4p-1076L,
 	-0x4p-1076L,
+	false,
 	-0x6.0000000000000000000000000004p-1076L,
 	-0x6p-1076L,
 	-0x6p-1076L,
@@ -4276,22 +4858,27 @@ static const struct test tests[] = {
 	"885863091769469883539876840543521295706315919855784493235603"
 	"866268925981702690270202829595794350800918257913991744455922"
 	"683343374046671669930219650268554687499e-4951",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x0p+0,
 	0x0p+0,
 	0x0p+0,
 	0x4p-1076,
+	false,
 	0x0p+0L,
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0x8p-16448L,
 	0x8p-16448L,
 	0x8p-16448L,
 	0x1p-16444L,
+	false,
 	0x8p-16448L,
 	0xcp-16448L,
 	0x8p-16448L,
@@ -4301,6 +4888,7 @@ static const struct test tests[] = {
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0xb.fffffffffffcp-16448L,
 	0xcp-16448L,
 	0xb.fffffffffffcp-16448L,
@@ -4497,22 +5085,27 @@ static const struct test tests[] = {
 	"885863091769469883539876840543521295706315919855784493235603"
 	"866268925981702690270202829595794350800918257913991744455922"
 	"6833433740466716699302196502685546875e-4951",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x0p+0,
 	0x0p+0,
 	0x0p+0,
 	0x4p-1076,
+	false,
 	0x0p+0L,
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	true,
 	0x8p-16448L,
 	0x1p-16444L,
 	0x8p-16448L,
 	0x1p-16444L,
+	true,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -4522,6 +5115,7 @@ static const struct test tests[] = {
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	true,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -4718,22 +5312,27 @@ static const struct test tests[] = {
 	"885863091769469883539876840543521295706315919855784493235603"
 	"866268925981702690270202829595794350800918257913991744455922"
 	"683343374046671669930219650268554687501e-4951",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x0p+0,
 	0x0p+0,
 	0x0p+0,
 	0x4p-1076,
+	false,
 	0x0p+0L,
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0x8p-16448L,
 	0x1p-16444L,
 	0x8p-16448L,
 	0x1p-16444L,
+	false,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -4743,6 +5342,7 @@ static const struct test tests[] = {
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -4939,22 +5539,27 @@ static const struct test tests[] = {
 	"188586309176946988353987684054352129570631591985578449323560"
 	"386626892598170269027020282959579435080091825791399174445592"
 	"2683343374046671669930219650268554687499e-4951",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x1p-16444L,
 	-0x8p-16448L,
 	-0x8p-16448L,
 	-0x8p-16448L,
+	false,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0x8p-16448L,
@@ -4964,6 +5569,7 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xb.fffffffffffcp-16448L,
@@ -5160,22 +5766,27 @@ static const struct test tests[] = {
 	"188586309176946988353987684054352129570631591985578449323560"
 	"386626892598170269027020282959579435080091825791399174445592"
 	"26833433740466716699302196502685546875e-4951",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0x1p-16444L,
 	-0x1p-16444L,
 	-0x8p-16448L,
 	-0x8p-16448L,
+	true,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -5185,6 +5796,7 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -5381,22 +5993,27 @@ static const struct test tests[] = {
 	"188586309176946988353987684054352129570631591985578449323560"
 	"386626892598170269027020282959579435080091825791399174445592"
 	"2683343374046671669930219650268554687501e-4951",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x1p-16444L,
 	-0x1p-16444L,
 	-0x8p-16448L,
 	-0x8p-16448L,
+	false,
 	-0x1p-16444L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -5406,6 +6023,7 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0xc.000000000004p-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -5602,22 +6220,27 @@ static const struct test tests[] = {
 	"885863091769469883539876840543521295706315919855784493235603"
 	"866268925981702690270202829595794350800918257913991744455922"
 	"683343374046671669930219650268554687499e-4951",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x0p+0,
 	0x0p+0,
 	0x0p+0,
 	0x4p-1076,
+	false,
 	0x0p+0L,
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0x8p-16448L,
 	0x8p-16448L,
 	0x8p-16448L,
 	0x1p-16444L,
+	false,
 	0x8p-16448L,
 	0xcp-16448L,
 	0x8p-16448L,
@@ -5627,6 +6250,7 @@ static const struct test tests[] = {
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0xb.fffffffffffcp-16448L,
 	0xcp-16448L,
 	0xb.fffffffffffcp-16448L,
@@ -5823,22 +6447,27 @@ static const struct test tests[] = {
 	"885863091769469883539876840543521295706315919855784493235603"
 	"866268925981702690270202829595794350800918257913991744455922"
 	"6833433740466716699302196502685546875e-4951",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x0p+0,
 	0x0p+0,
 	0x0p+0,
 	0x4p-1076,
+	false,
 	0x0p+0L,
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	true,
 	0x8p-16448L,
 	0x1p-16444L,
 	0x8p-16448L,
 	0x1p-16444L,
+	true,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -5848,6 +6477,7 @@ static const struct test tests[] = {
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	true,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -6044,22 +6674,27 @@ static const struct test tests[] = {
 	"885863091769469883539876840543521295706315919855784493235603"
 	"866268925981702690270202829595794350800918257913991744455922"
 	"683343374046671669930219650268554687501e-4951",
+	false,
 	0x0p+0f,
 	0x0p+0f,
 	0x0p+0f,
 	0x8p-152f,
+	false,
 	0x0p+0,
 	0x0p+0,
 	0x0p+0,
 	0x4p-1076,
+	false,
 	0x0p+0L,
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0x8p-16448L,
 	0x1p-16444L,
 	0x8p-16448L,
 	0x1p-16444L,
+	false,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -6069,6 +6704,7 @@ static const struct test tests[] = {
 	0x0p+0L,
 	0x0p+0L,
 	0x4p-1076L,
+	false,
 	0xcp-16448L,
 	0xcp-16448L,
 	0xcp-16448L,
@@ -6265,22 +6901,27 @@ static const struct test tests[] = {
 	"188586309176946988353987684054352129570631591985578449323560"
 	"386626892598170269027020282959579435080091825791399174445592"
 	"2683343374046671669930219650268554687499e-4951",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x1p-16444L,
 	-0x8p-16448L,
 	-0x8p-16448L,
 	-0x8p-16448L,
+	false,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0x8p-16448L,
@@ -6290,6 +6931,7 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xb.fffffffffffcp-16448L,
@@ -6486,22 +7128,27 @@ static const struct test tests[] = {
 	"188586309176946988353987684054352129570631591985578449323560"
 	"386626892598170269027020282959579435080091825791399174445592"
 	"26833433740466716699302196502685546875e-4951",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0x1p-16444L,
 	-0x1p-16444L,
 	-0x8p-16448L,
 	-0x8p-16448L,
+	true,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -6511,6 +7158,7 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -6707,22 +7355,27 @@ static const struct test tests[] = {
 	"188586309176946988353987684054352129570631591985578449323560"
 	"386626892598170269027020282959579435080091825791399174445592"
 	"2683343374046671669930219650268554687501e-4951",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x1p-16444L,
 	-0x1p-16444L,
 	-0x8p-16448L,
 	-0x8p-16448L,
+	false,
 	-0x1p-16444L,
 	-0xcp-16448L,
 	-0xcp-16448L,
@@ -6732,27 +7385,33 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0xc.000000000004p-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L,
 	-0xcp-16448L),
   TEST ("-0x0.7p-149",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	true,
 	-0x3.8p-152,
 	-0x3.8p-152,
 	-0x3.8p-152,
 	-0x3.8p-152,
+	true,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
+	true,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
+	true,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
@@ -6762,27 +7421,33 @@ static const struct test tests[] = {
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
+	true,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L,
 	-0x3.8p-152L),
   TEST ("-0x0.7p-1074",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
+	true,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
@@ -6792,27 +7457,33 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L,
 	-0x1.cp-1076L),
   TEST ("-0x0.7p-16445",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x8p-16448L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x4p-16448L,
 	-0x4p-16448L,
 	-0x0p+0L,
@@ -6822,27 +7493,33 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	true,
 	-0x3.8p-16448L,
 	-0x3.8p-16448L,
 	-0x3.8p-16448L,
 	-0x3.8p-16448L),
   TEST ("-0x0.7p-16494",
+	false,
 	-0x8p-152f,
 	-0x0p+0f,
 	-0x0p+0f,
 	-0x0p+0f,
+	false,
 	-0x4p-1076,
 	-0x0p+0,
 	-0x0p+0,
 	-0x0p+0,
+	false,
 	-0x4p-1076L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x8p-16448L,
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x4p-16448L,
 	-0x0p+0L,
 	-0x0p+0L,
@@ -6852,6 +7529,7 @@ static const struct test tests[] = {
 	-0x0p+0L,
 	-0x0p+0L,
 	-0x0p+0L,
+	false,
 	-0x4p-16496L,
 	-0x0p+0L,
 	-0x0p+0L,
@@ -6860,7 +7538,7 @@ static const struct test tests[] = {
 
 static int
 test_in_one_mode (const char *s, const struct test_results *expected,
-		  bool ld_ok, const char *mode_name)
+		  const struct exactness *exact, const char *mode_name)
 {
   int result = 0;
   float f = strtof (s, NULL);
@@ -6885,7 +7563,7 @@ test_in_one_mode (const char *s, const struct test_results *expected,
     {
       printf ("strtold (%s) returned %La not %La (%s)\n", s, ld,
 	      expected->ld, mode_name);
-      if (ld_ok)
+      if (LDBL_MANT_DIG != 106 || exact->ld)
 	result = 1;
       else
 	printf ("ignoring this inexact long double result\n");
@@ -6900,29 +7578,29 @@ do_test (void)
   int result = 0;
   for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
     {
-      result |= test_in_one_mode (tests[i].s, &tests[i].rn, tests[i].ld_ok,
+      result |= test_in_one_mode (tests[i].s, &tests[i].rn, &tests[i].exact,
 				  "default rounding mode");
 #ifdef FE_DOWNWARD
       if (!fesetround (FE_DOWNWARD))
 	{
-	  result |= test_in_one_mode (tests[i].s, &tests[i].rd, tests[i].ld_ok,
-				      "FE_DOWNWARD");
+	  result |= test_in_one_mode (tests[i].s, &tests[i].rd,
+				      &tests[i].exact, "FE_DOWNWARD");
 	  fesetround (save_round_mode);
 	}
 #endif
 #ifdef FE_TOWARDZERO
       if (!fesetround (FE_TOWARDZERO))
 	{
-	  result |= test_in_one_mode (tests[i].s, &tests[i].rz, tests[i].ld_ok,
-				      "FE_TOWARDZERO");
+	  result |= test_in_one_mode (tests[i].s, &tests[i].rz,
+				      &tests[i].exact, "FE_TOWARDZERO");
 	  fesetround (save_round_mode);
 	}
 #endif
 #ifdef FE_UPWARD
       if (!fesetround (FE_UPWARD))
 	{
-	  result |= test_in_one_mode (tests[i].s, &tests[i].ru, tests[i].ld_ok,
-				      "FE_UPWARD");
+	  result |= test_in_one_mode (tests[i].s, &tests[i].ru,
+				      &tests[i].exact, "FE_UPWARD");
 	  fesetround (save_round_mode);
 	}
 #endif