diff options
Diffstat (limited to 'libc/stdlib/tst-strtod-round.c')
-rw-r--r-- | libc/stdlib/tst-strtod-round.c | 787 |
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 |