aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-06-13 15:41:58 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-06-13 15:41:58 +0000
commit1f24b9ad0f173f7904b7a0fd559cc287660be1b2 (patch)
treeabcd0da7d44a048767869b08a5dd14adeff9200d /stdlib
parentb406406a4fc001478ae65e7bcf930fbcf8ca01ee (diff)
downloadglibc-1f24b9ad0f173f7904b7a0fd559cc287660be1b2.tar.xz
glibc-1f24b9ad0f173f7904b7a0fd559cc287660be1b2.zip
Rework tst-strtod-round handling of inexact results.
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/gen-tst-strtod-round.c10
-rw-r--r--stdlib/tst-strtod-round.c758
2 files changed, 723 insertions, 45 deletions
diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c
index 6615819e07..c0634e0179 100644
--- a/stdlib/gen-tst-strtod-round.c
+++ b/stdlib/gen-tst-strtod-round.c
@@ -57,7 +57,7 @@ print_fp (mpfr_t f, const char *suffix, const char *suffix2)
static void
round_str (const char *s, const char *suffix,
- int prec, int emin, int emax, bool need_exact)
+ int prec, int emin, int emax, bool ibm_ld)
{
mpfr_t f;
mpfr_set_default_prec (prec);
@@ -65,7 +65,7 @@ round_str (const char *s, const char *suffix,
mpfr_set_emax (emax);
mpfr_init (f);
int r = string_to_fp (f, s, MPFR_RNDD);
- if (need_exact)
+ if (ibm_ld)
{
assert (prec == 106 && emin == -1073 && emax == 1024);
/* The maximum value in IBM long double has discontiguous
@@ -76,9 +76,9 @@ round_str (const char *s, const char *suffix,
MPFR_RNDN);
if (mpfr_cmpabs (f, max_value) > 0)
r = 1;
- mpfr_printf ("\t%s,\n", r ? "false" : "true");
mpfr_clear (max_value);
}
+ mpfr_printf ("\t%s,\n", r ? "false" : "true");
print_fp (f, suffix, ",\n");
string_to_fp (f, s, MPFR_RNDN);
print_fp (f, suffix, ",\n");
@@ -97,7 +97,7 @@ round_for_all (const char *s)
int prec;
int emin;
int emax;
- bool need_exact;
+ bool ibm_ld;
} formats[7] = {
{ "f", 24, -148, 128, false },
{ "", 53, -1073, 1024, false },
@@ -122,7 +122,7 @@ round_for_all (const char *s)
for (i = 0; i < 7; i++)
{
round_str (s, formats[i].suffix, formats[i].prec,
- formats[i].emin, formats[i].emax, formats[i].need_exact);
+ formats[i].emin, formats[i].emax, formats[i].ibm_ld);
if (i < 6)
mpfr_printf (",\n");
}
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,
+ fals