summaryrefslogtreecommitdiff
path: root/libc/stdlib/tst-strtod-round.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdlib/tst-strtod-round.c')
-rw-r--r--libc/stdlib/tst-strtod-round.c787
1 files changed, 743 insertions, 44 deletions
diff --git a/libc/stdlib/tst-strtod-round.c b/libc/stdlib/tst-strtod-round.c
index 072fc737d..9a440264d 100644
--- a/libc/stdlib/tst-strtod-round.c
+++ b/libc/stdlib/tst-strtod-round.c
@@ -24,6 +24,14 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <math-tests.h>
+
+struct exactness
+{
+ bool f;
+ bool d;
+ bool ld;
+};
struct test_results {
float f;
@@ -33,19 +41,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 +62,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 +78,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 +131,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 +161,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 +197,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 +233,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 +269,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 +305,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 +341,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 +377,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 +413,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 +449,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 +485,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 +521,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 +557,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 +593,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 +629,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 +665,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 +701,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 +737,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 +773,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 +809,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 +845,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 +881,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 +917,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 +953,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 +989,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 +1025,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 +1061,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 +1069,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 +1099,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 +1135,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 +1171,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 +1207,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 +1243,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 +1279,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 +1315,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 +1351,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 +1387,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 +1423,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 +1460,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 +1497,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 +1534,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 +1571,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 +1608,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 +1645,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 +1682,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 +1719,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 +1756,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 +1793,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 +1830,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 +1867,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 +1904,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 +1941,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 +1978,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 +2015,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 +2052,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 +2088,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 +2124,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 +2160,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 +2196,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 +2232,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 +2268,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 +2279,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 +2309,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 +2320,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 +2350,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 +2361,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 +2391,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 +2402,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 +2432,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 +2443,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 +2473,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 +2484,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 +2514,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 +2602,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 +2632,7 @@ static const struct test tests[] = {
INFINITY,
0xf.fffffffffffffffffffffffffcp+1020L,
INFINITY,
+ false,
0xf.fffffffffffffff7fffffffffff8p+16380L,
0xf.fffffffffffffff8p+16380L,
0xf.fffffffffffffff7fffffffffff8p+16380L,
@@ -2311,22 +2720,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 +2750,7 @@ static const struct test tests[] = {
INFINITY,
0xf.fffffffffffffffffffffffffcp+1020L,
INFINITY,
+ true,
0xf.fffffffffffffff8p+16380L,
0xf.fffffffffffffff8p+16380L,
0xf.fffffffffffffff8p+16380L,
@@ -2423,22 +2838,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 +2868,7 @@ static const struct test tests[] = {
INFINITY,
0xf.fffffffffffffffffffffffffcp+1020L,
INFINITY,
+ false,
0xf.fffffffffffffff8p+16380L,
0xf.fffffffffffffff8p+16380L,
0xf.fffffffffffffff8p+16380L,
@@ -2535,22 +2956,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 +2986,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 +3074,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 +3104,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 +3192,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 +3222,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 +3310,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 +3340,7 @@ static const struct test tests[] = {
INFINITY,
0xf.fffffffffffffffffffffffffcp+1020L,
INFINITY,
+ false,
0xf.fffffffffffffffffffffffffff8p+16380L,
0xf.fffffffffffffffffffffffffff8p+16380L,
0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -2983,22 +3428,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 +3458,7 @@ static const struct test tests[] = {
INFINITY,
0xf.fffffffffffffffffffffffffcp+1020L,
INFINITY,
+ false,
0xf.fffffffffffffffffffffffffff8p+16380L,
INFINITY,
0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3095,22 +3546,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 +3576,7 @@ static const struct test tests[] = {
INFINITY,
0xf.fffffffffffffffffffffffffcp+1020L,
INFINITY,
+ false,
0xf.fffffffffffffffffffffffffff8p+16380L,
INFINITY,
0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3207,22 +3664,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 +3694,7 @@ static const struct test tests[] = {
-INFINITY,
-0xf.fffffffffffffffffffffffffcp+1020L,
-0xf.fffffffffffffffffffffffffcp+1020L,
+ false,
-INFINITY,
-0xf.fffffffffffffffffffffffffff8p+16380L,
-0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3319,22 +3782,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 +3812,7 @@ static const struct test tests[] = {
-INFINITY,
-0xf.fffffffffffffffffffffffffcp+1020L,
-0xf.fffffffffffffffffffffffffcp+1020L,
+ false,
-INFINITY,
-INFINITY,
-0xf.fffffffffffffffffffffffffff8p+16380L,
@@ -3431,22 +3900,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 +3930,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 +3967,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 +4004,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 +4041,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 +4078,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 +4115,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 +4152,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 +4189,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 +4226,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 +4263,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 +4300,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 +4337,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 +4374,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 +4392,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 +4422,7 @@ static const struct test tests[] = {
0x4p-1076L,
0x4p-1076L,
0x8p-1076L,
+ false,
0x5.fffffffffffffffffffffffffffcp-1076L,
0x6p-1076L,
0x5.fffffffffffffffffffffffffffcp-1076L,
@@ -3887,22 +4440,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 +4470,7 @@ static const struct test tests[] = {
0x8p-1076L,
0x4p-1076L,
0x8p-1076L,
+ true,
0x6p-1076L,
0x6p-1076L,
0x6p-1076L,
@@ -3929,22 +4488,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 +4518,7 @@ static const struct test tests[] = {
0x8p-1076L,
0x4p-1076L,
0x8p-1076L,
+ false,
0x6p-1076L,
0x6p-1076L,
0x6p-1076L,
@@ -3971,22 +4536,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 +4566,7 @@ static const struct test tests[] = {
-0x4p-1076L,
-0x4p-1076L,
-0x4p-1076L,
+ false,
-0x6p-1076L,
-0x6p-1076L,
-0x5.fffffffffffffffffffffffffffcp-1076L,
@@ -4013,22 +4584,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 +4614,7 @@ static const struct test tests[] = {
-0x8p-1076L,
-0x4p-1076L,
-0x4p-1076L,
+ true,
-0x6p-1076L,
-0x6p-1076L,
-0x6p-1076L,
@@ -4055,22 +4632,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 +4662,7 @@ static const struct test tests[] = {
-0x8p-1076L,
-0x4p-1076L,
-0x4p-1076L,
+ false,
-0x6.0000000000000000000000000004p-1076L,
-0x6p-1076L,
-0x6p-1076L,
@@ -4276,22 +4859,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 +4889,7 @@ static const struct test tests[] = {
0x0p+0L,
0x0p+0L,
0x4p-1076L,
+ false,
0xb.fffffffffffcp-16448L,
0xcp-16448L,
0xb.fffffffffffcp-16448L,
@@ -4497,22 +5086,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 +5116,7 @@ static const struct test tests[] = {
0x0p+0L,
0x0p+0L,
0x4p-1076L,
+ true,
0xcp-16448L,
0xcp-16448L,
0xcp-16448L,
@@ -4718,22 +5313,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 +5343,7 @@ static const struct test tests[] = {
0x0p+0L,
0x0p+0L,
0x4p-1076L,
+ false,
0xcp-16448L,
0xcp-16448L,
0xcp-16448L,
@@ -4939,22 +5540,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 +5570,7 @@ static const struct test tests[] = {
-0x0p+0L,
-0x0p+0L,
-0x0p+0L,
+ false,
-0xcp-16448L,
-0xcp-16448L,
-0xb.fffffffffffcp-16448L,
@@ -5160,22 +5767,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 +5797,7 @@ static const struct test tests[] = {
-0x0p+0L,
-0x0p+0L,
-0x0p+0L,
+ true,
-0xcp-16448L,
-0xcp-16448L,
-0xcp-16448L,
@@ -5381,22 +5994,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 +6024,7 @@ static const struct test tests[] = {
-0x0p+0L,
-0x0p+0L,
-0x0p+0L,
+ false,
-0xc.000000000004p-16448L,
-0xcp-16448L,
-0xcp-16448L,
@@ -5602,22 +6221,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 +6251,7 @@ static const struct test tests[] = {
0x0p+0L,
0x0p+0L,
0x4p-1076L,
+ false,
0xb.fffffffffffcp-16448L,
0xcp-16448L,
0xb.fffffffffffcp-16448L,
@@ -5823,22 +6448,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 +6478,7 @@ static const struct test tests[] = {
0x0p+0L,
0x0p+0L,
0x4p-1076L,
+ true,
0xcp-16448L,
0xcp-16448L,
0xcp-16448L,
@@ -6044,22 +6675,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 +6705,7 @@ static const struct test tests[] = {
0x0p+0L,
0x0p+0L,
0x4p-1076L,
+ false,
0xcp-16448L,
0xcp-16448L,
0xcp-16448L,
@@ -6265,22 +6902,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 +6932,7 @@ static const struct test tests[] = {
-0x0p+0L,
-0x0p+0L,
-0x0p+0L,
+ false,
-0xcp-16448L,
-0xcp-16448L,
-0xb.fffffffffffcp-16448L,
@@ -6486,22 +7129,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 +7159,7 @@ static const struct test tests[] = {
-0x0p+0L,
-0x0p+0L,
-0x0p+0L,
+ true,
-0xcp-16448L,
-0xcp-16448L,
-0xcp-16448L,
@@ -6707,22 +7356,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 +7386,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 +7422,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 +7458,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 +7494,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 +7530,7 @@ static const struct test tests[] = {
-0x0p+0L,
-0x0p+0L,
-0x0p+0L,
+ false,
-0x4p-16496L,
-0x0p+0L,
-0x0p+0L,
@@ -6860,7 +7539,9 @@ 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,
+ bool float_round_ok, bool double_round_ok,
+ bool long_double_round_ok)
{
int result = 0;
float f = strtof (s, NULL);
@@ -6871,24 +7552,30 @@ test_in_one_mode (const char *s, const struct test_results *expected,
{
printf ("strtof (%s) returned %a not %a (%s)\n", s, f,
expected->f, mode_name);
- result = 1;
+ if (float_round_ok || exact->f)
+ result = 1;
+ else
+ printf ("ignoring this inexact result\n");
}
if (d != expected->d
|| copysign (1.0, d) != copysign (1.0, expected->d))
{
printf ("strtod (%s) returned %a not %a (%s)\n", s, d,
expected->d, mode_name);
- result = 1;
+ if (double_round_ok || exact->d)
+ result = 1;
+ else
+ printf ("ignoring this inexact result\n");
}
if (ld != expected->ld
|| copysignl (1.0L, ld) != copysignl (1.0L, expected->ld))
{
printf ("strtold (%s) returned %La not %La (%s)\n", s, ld,
expected->ld, mode_name);
- if (ld_ok)
+ if ((long_double_round_ok && LDBL_MANT_DIG != 106) || exact->ld)
result = 1;
else
- printf ("ignoring this inexact long double result\n");
+ printf ("ignoring this inexact result\n");
}
return result;
}
@@ -6900,29 +7587,41 @@ 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,
- "default rounding mode");
+ result |= test_in_one_mode (tests[i].s, &tests[i].rn, &tests[i].exact,
+ "default rounding mode",
+ true, true, true);
#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",
+ ROUNDING_TESTS (float, FE_DOWNWARD),
+ ROUNDING_TESTS (double, FE_DOWNWARD),
+ ROUNDING_TESTS (long double,
+ 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",
+ ROUNDING_TESTS (float, FE_TOWARDZERO),
+ ROUNDING_TESTS (double, FE_TOWARDZERO),
+ ROUNDING_TESTS (long double,
+ 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",
+ ROUNDING_TESTS (float, FE_UPWARD),
+ ROUNDING_TESTS (double, FE_UPWARD),
+ ROUNDING_TESTS (long double, FE_UPWARD));
fesetround (save_round_mode);
}
#endif