diff options
Diffstat (limited to 'stdlib/tst-strtod-round.c')
| -rw-r--r-- | stdlib/tst-strtod-round.c | 758 |
1 files changed, 718 insertions, 40 deletions
diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c index 072fc737d4..4065d1288e 100644 --- a/stdlib/tst-strtod-round.c +++ b/stdlib/tst-strtod-round.c @@ -25,6 +25,13 @@ #include <stdlib.h> #include <string.h> +struct exactness +{ + bool f; + bool d; + bool ld; +}; + struct test_results { float f; double d; @@ -33,19 +40,20 @@ struct test_results { struct test { const char *s; - bool ld_ok; + struct exactness exact; struct test_results rd, rn, rz, ru; }; #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld53exact }, \ { fd, dd, ld53d }, \ { fn, dn, ld53n }, \ { fz, dz, ld53z }, \ @@ -53,14 +61,15 @@ struct test { } #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381 /* This is for the Intel extended float format. */ -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld64iexact }, \ { fd, dd, ld64id }, \ { fn, dn, ld64in }, \ { fz, dz, ld64iz }, \ @@ -68,42 +77,45 @@ struct test { } #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382 /* This is for the Motorola extended float format. */ -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld64mexact }, \ { fd, dd, ld64md }, \ { fn, dn, ld64mn }, \ { fz, dz, ld64mz }, \ { fu, du, ld64mu } \ } #elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024 -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - ld106exact, \ + { fexact, dexact, ld106exact }, \ { fd, dd, ld106d }, \ { fn, dn, ld106n }, \ { fz, dz, ld106z }, \ { fu, du, ld106u } \ } #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld113exact }, \ { fd, dd, ld113d }, \ { fn, dn, ld113n }, \ { fz, dz, ld113z }, \ @@ -118,22 +130,27 @@ struct test { static const struct test tests[] = { TEST ("3.518437208883201171875E+013", + false, 0x2p+44f, 0x2p+44f, 0x2p+44f, 0x2.000004p+44f, + false, 0x2.0000000000002p+44, 0x2.0000000000004p+44, 0x2.0000000000002p+44, 0x2.0000000000004p+44, + false, 0x2.0000000000002p+44L, 0x2.0000000000004p+44L, 0x2.0000000000002p+44L, 0x2.0000000000004p+44L, + true, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, + true, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, @@ -143,27 +160,33 @@ static const struct test tests[] = { 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, + true, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L), TEST ("1.00000005960464477550", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000004p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, @@ -173,27 +196,33 @@ static const struct test tests[] = { 0x1.0000010000000002048242f2ff8p+0L, 0x1.0000010000000002048242f2ffp+0L, 0x1.0000010000000002048242f2ff8p+0L, + false, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L), TEST ("1.0000000596046447755", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000004p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, @@ -203,27 +232,33 @@ static const struct test tests[] = { 0x1.0000010000000002048242f2ff8p+0L, 0x1.0000010000000002048242f2ffp+0L, 0x1.0000010000000002048242f2ff8p+0L, + false, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L), TEST ("1.000000059604644776", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.000001000000000ap+0L, 0x1.000001000000000cp+0L, 0x1.000001000000000ap+0L, 0x1.000001000000000cp+0L, + false, 0x1.000001000000000ap+0L, 0x1.000001000000000cp+0L, 0x1.000001000000000ap+0L, @@ -233,27 +268,33 @@ static const struct test tests[] = { 0x1.000001000000000b3db12bdc21p+0L, 0x1.000001000000000b3db12bdc21p+0L, 0x1.000001000000000b3db12bdc218p+0L, + false, 0x1.000001000000000b3db12bdc213cp+0L, 0x1.000001000000000b3db12bdc213dp+0L, 0x1.000001000000000b3db12bdc213cp+0L, 0x1.000001000000000b3db12bdc213dp+0L), TEST ("1.000000059604644775", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffffffp+0, 0x1.000001p+0, 0x1.000000fffffffp+0, 0x1.000001p+0, + false, 0x1.000000fffffffp+0L, 0x1.000001p+0L, 0x1.000000fffffffp+0L, 0x1.000001p+0L, + false, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffffap+0L, + false, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, @@ -263,27 +304,33 @@ static const struct test tests[] = { 0x1.000000fffffffff8cb535a09dd8p+0L, 0x1.000000fffffffff8cb535a09dd8p+0L, 0x1.000000fffffffff8cb535a09dep+0L, + false, 0x1.000000fffffffff8cb535a09dd9p+0L, 0x1.000000fffffffff8cb535a09dd91p+0L, 0x1.000000fffffffff8cb535a09dd9p+0L, 0x1.000000fffffffff8cb535a09dd91p+0L), TEST ("1.00000005960464478", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.0000010000000054p+0L, 0x1.0000010000000056p+0L, 0x1.0000010000000054p+0L, 0x1.0000010000000056p+0L, + false, 0x1.0000010000000054p+0L, 0x1.0000010000000056p+0L, 0x1.0000010000000054p+0L, @@ -293,27 +340,33 @@ static const struct test tests[] = { 0x1.0000010000000055072873253p+0L, 0x1.0000010000000055072873252f8p+0L, 0x1.0000010000000055072873253p+0L, + false, 0x1.0000010000000055072873252febp+0L, 0x1.0000010000000055072873252febp+0L, 0x1.0000010000000055072873252febp+0L, 0x1.0000010000000055072873252fecp+0L), TEST ("1.0000000596046448", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.00000100000001c4p+0L, 0x1.00000100000001c6p+0L, 0x1.00000100000001c4p+0L, 0x1.00000100000001c6p+0L, + false, 0x1.00000100000001c4p+0L, 0x1.00000100000001c6p+0L, 0x1.00000100000001c4p+0L, @@ -323,27 +376,33 @@ static const struct test tests[] = { 0x1.00000100000001c5f67cd792798p+0L, 0x1.00000100000001c5f67cd79279p+0L, 0x1.00000100000001c5f67cd792798p+0L, + false, 0x1.00000100000001c5f67cd7927953p+0L, 0x1.00000100000001c5f67cd7927954p+0L, 0x1.00000100000001c5f67cd7927953p+0L, 0x1.00000100000001c5f67cd7927954p+0L), TEST ("1.000000059604645", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.0000010000001p+0, 0x1.0000010000001p+0, 0x1.0000010000001p+0, 0x1.0000010000002p+0, + false, 0x1.0000010000001p+0L, 0x1.0000010000001p+0L, 0x1.0000010000001p+0L, 0x1.0000010000002p+0L, + false, 0x1.000001000000102ep+0L, 0x1.000001000000103p+0L, 0x1.000001000000102ep+0L, 0x1.000001000000103p+0L, + false, 0x1.000001000000102ep+0L, 0x1.000001000000103p+0L, 0x1.000001000000102ep+0L, @@ -353,27 +412,33 @@ static const struct test tests[] = { 0x1.000001000000102f4fc8c3d7578p+0L, 0x1.000001000000102f4fc8c3d757p+0L, 0x1.000001000000102f4fc8c3d7578p+0L, + false, 0x1.000001000000102f4fc8c3d75769p+0L, 0x1.000001000000102f4fc8c3d75769p+0L, 0x1.000001000000102f4fc8c3d75769p+0L, 0x1.000001000000102f4fc8c3d7576ap+0L), TEST ("1.00000005960464", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffffeap+0, 0x1.000000fffffeap+0, 0x1.000000fffffeap+0, 0x1.000000fffffebp+0, + false, 0x1.000000fffffeap+0L, 0x1.000000fffffeap+0L, 0x1.000000fffffeap+0L, 0x1.000000fffffebp+0L, + false, 0x1.000000fffffea7e4p+0L, 0x1.000000fffffea7e6p+0L, 0x1.000000fffffea7e4p+0L, 0x1.000000fffffea7e6p+0L, + false, 0x1.000000fffffea7e4p+0L, 0x1.000000fffffea7e6p+0L, 0x1.000000fffffea7e4p+0L, @@ -383,27 +448,33 @@ static const struct test tests[] = { 0x1.000000fffffea7e5975eb11da78p+0L, 0x1.000000fffffea7e5975eb11da7p+0L, 0x1.000000fffffea7e5975eb11da78p+0L, + false, 0x1.000000fffffea7e5975eb11da74ap+0L, 0x1.000000fffffea7e5975eb11da74bp+0L, 0x1.000000fffffea7e5975eb11da74ap+0L, 0x1.000000fffffea7e5975eb11da74bp+0L), TEST ("1.0000000596046", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffff36p+0, 0x1.000000fffff36p+0, 0x1.000000fffff36p+0, 0x1.000000fffff37p+0, + false, 0x1.000000fffff36p+0L, 0x1.000000fffff36p+0L, 0x1.000000fffff36p+0L, 0x1.000000fffff37p+0L, + false, 0x1.000000fffff36596p+0L, 0x1.000000fffff36598p+0L, 0x1.000000fffff36596p+0L, 0x1.000000fffff36598p+0L, + false, 0x1.000000fffff36596p+0L, 0x1.000000fffff36598p+0L, 0x1.000000fffff36596p+0L, @@ -413,27 +484,33 @@ static const struct test tests[] = { 0x1.000000fffff36597d40e1b50268p+0L, 0x1.000000fffff36597d40e1b5026p+0L, 0x1.000000fffff36597d40e1b50268p+0L, + false, 0x1.000000fffff36597d40e1b502655p+0L, 0x1.000000fffff36597d40e1b502656p+0L, 0x1.000000fffff36597d40e1b502655p+0L, 0x1.000000fffff36597d40e1b502656p+0L), TEST ("1.000000059605", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001000063fp+0, 0x1.000001000064p+0, 0x1.000001000063fp+0, 0x1.000001000064p+0, + false, 0x1.000001000063fp+0L, 0x1.000001000064p+0L, 0x1.000001000063fp+0L, 0x1.000001000064p+0L, + false, 0x1.000001000063fcap+0L, 0x1.000001000063fca2p+0L, 0x1.000001000063fcap+0L, 0x1.000001000063fca2p+0L, + false, 0x1.000001000063fcap+0L, 0x1.000001000063fca2p+0L, 0x1.000001000063fcap+0L, @@ -443,27 +520,33 @@ static const struct test tests[] = { 0x1.000001000063fca17533f5573p+0L, 0x1.000001000063fca17533f5572f8p+0L, 0x1.000001000063fca17533f5573p+0L, + false, 0x1.000001000063fca17533f5572fe9p+0L, 0x1.000001000063fca17533f5572feap+0L, 0x1.000001000063fca17533f5572fe9p+0L, 0x1.000001000063fca17533f5572feap+0L), TEST ("1.00000005960", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, + false, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, @@ -473,27 +556,33 @@ static const struct test tests[] = { 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff388p+0L, + false, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382ep+0L), TEST ("1.0000000596", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, + false, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, @@ -503,27 +592,33 @@ static const struct test tests[] = { 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff388p+0L, + false, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382ep+0L), TEST ("1.000000060", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, + false, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a48p+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, @@ -533,27 +628,33 @@ static const struct test tests[] = { 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca38p+0L, + false, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L), TEST ("1.00000006", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, + false, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a48p+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, @@ -563,27 +664,33 @@ static const struct test tests[] = { 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca38p+0L, + false, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L), TEST ("1.0000001", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001ad7f29ap+0, 0x1.000001ad7f29bp+0, 0x1.000001ad7f29ap+0, 0x1.000001ad7f29bp+0, + false, 0x1.000001ad7f29ap+0L, 0x1.000001ad7f29bp+0L, 0x1.000001ad7f29ap+0L, 0x1.000001ad7f29bp+0L, + false, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abccp+0L, + false, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, @@ -593,27 +700,33 @@ static const struct test tests[] = { 0x1.000001ad7f29abcaf485787a65p+0L, 0x1.000001ad7f29abcaf485787a65p+0L, 0x1.000001ad7f29abcaf485787a658p+0L, + false, 0x1.000001ad7f29abcaf485787a652p+0L, 0x1.000001ad7f29abcaf485787a6521p+0L, 0x1.000001ad7f29abcaf485787a652p+0L, 0x1.000001ad7f29abcaf485787a6521p+0L), TEST ("1.000000", + true, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1p+0f, + true, 0x1p+0, 0x1p+0, 0x1p+0, 0x1p+0, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1p+0L, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1p+0L, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, @@ -623,27 +736,33 @@ static const struct test tests[] = { 0x1p+0L, 0x1p+0L, 0x1p+0L, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1p+0L), TEST ("1.00000000000000011113", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1p+0, 0x1.0000000000001p+0, 0x1p+0, 0x1.0000000000001p+0, + false, 0x1p+0L, 0x1.0000000000001p+0L, 0x1p+0L, 0x1.0000000000001p+0L, + false, 0x1.00000000000008p+0L, 0x1.0000000000000802p+0L, 0x1.00000000000008p+0L, 0x1.0000000000000802p+0L, + false, 0x1.00000000000008p+0L, 0x1.0000000000000802p+0L, 0x1.00000000000008p+0L, @@ -653,27 +772,33 @@ static const struct test tests[] = { 0x1.0000000000000801fc96557232p+0L, 0x1.0000000000000801fc96557232p+0L, 0x1.0000000000000801fc965572328p+0L, + false, 0x1.0000000000000801fc9655723222p+0L, 0x1.0000000000000801fc9655723222p+0L, 0x1.0000000000000801fc9655723222p+0L, 0x1.0000000000000801fc9655723223p+0L), TEST ("1.00000000000000011103", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1p+0, 0x1.0000000000001p+0, 0x1p+0, 0x1.0000000000001p+0, + false, 0x1p+0L, 0x1.0000000000001p+0L, 0x1p+0L, 0x1.0000000000001p+0L, + false, 0x1.00000000000008p+0L, 0x1.00000000000008p+0L, 0x1.00000000000008p+0L, 0x1.0000000000000802p+0L, + false, 0x1.00000000000008p+0L, 0x1.00000000000008p+0L, 0x1.00000000000008p+0L, @@ -683,27 +808,33 @@ static const struct test tests[] = { 0x1.00000000000008002459c076c5p+0L, 0x1.00000000000008002459c076c48p+0L, 0x1.00000000000008002459c076c5p+0L, + false, 0x1.00000000000008002459c076c4f7p+0L, 0x1.00000000000008002459c076c4f8p+0L, 0x1.00000000000008002459c076c4f7p+0L, 0x1.00000000000008002459c076c4f8p+0L), TEST ("1.00000000000000011102", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1p+0, 0x1p+0, 0x1p+0, 0x1.0000000000001p+0, + false, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1.0000000000001p+0L, + false, 0x1.00000000000007fep+0L, 0x1.00000000000008p+0L, 0x1.00000000000007fep+0L, 0x1.00000000000008p+0L, + false, 0x1.00000000000007fep+0L, 0x1.00000000000008p+0L, 0x1.00000000000007fep+0L, @@ -713,27 +844,33 @@ static const struct test tests[] = { 0x1.00000000000007fff5207e5da08p+0L, 0x1.00000000000007fff5207e5dap+0L, 0x1.00000000000007fff5207e5da08p+0L, + false, 0x1.00000000000007fff5207e5da073p+0L, 0x1.00000000000007fff5207e5da073p+0L, 0x1.00000000000007fff5207e5da073p+0L, 0x1.00000000000007fff5207e5da074p+0L), TEST ("1.00000000000000011101", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1p+0, 0x1p+0, 0x1p+0, 0x1.0000000000001p+0, + false, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1.0000000000001p+0L, + false, 0x1.00000000000007fep+0L, 0x1.00000000000008p+0L, 0x1.00000000000007fep+0L, 0x1.00000000000008p |
