diff options
| author | Joseph Myers <joseph@codesourcery.com> | 2013-06-13 15:41:58 +0000 |
|---|---|---|
| committer | Joseph Myers <joseph@codesourcery.com> | 2013-06-13 15:41:58 +0000 |
| commit | 1f24b9ad0f173f7904b7a0fd559cc287660be1b2 (patch) | |
| tree | abcd0da7d44a048767869b08a5dd14adeff9200d /stdlib | |
| parent | b406406a4fc001478ae65e7bcf930fbcf8ca01ee (diff) | |
| download | glibc-1f24b9ad0f173f7904b7a0fd559cc287660be1b2.tar.xz glibc-1f24b9ad0f173f7904b7a0fd559cc287660be1b2.zip | |
Rework tst-strtod-round handling of inexact results.
Diffstat (limited to 'stdlib')
| -rw-r--r-- | stdlib/gen-tst-strtod-round.c | 10 | ||||
| -rw-r--r-- | stdlib/tst-strtod-round.c | 758 |
2 files changed, 723 insertions, 45 deletions
diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c index 6615819e07..c0634e0179 100644 --- a/stdlib/gen-tst-strtod-round.c +++ b/stdlib/gen-tst-strtod-round.c @@ -57,7 +57,7 @@ print_fp (mpfr_t f, const char *suffix, const char *suffix2) static void round_str (const char *s, const char *suffix, - int prec, int emin, int emax, bool need_exact) + int prec, int emin, int emax, bool ibm_ld) { mpfr_t f; mpfr_set_default_prec (prec); @@ -65,7 +65,7 @@ round_str (const char *s, const char *suffix, mpfr_set_emax (emax); mpfr_init (f); int r = string_to_fp (f, s, MPFR_RNDD); - if (need_exact) + if (ibm_ld) { assert (prec == 106 && emin == -1073 && emax == 1024); /* The maximum value in IBM long double has discontiguous @@ -76,9 +76,9 @@ round_str (const char *s, const char *suffix, MPFR_RNDN); if (mpfr_cmpabs (f, max_value) > 0) r = 1; - mpfr_printf ("\t%s,\n", r ? "false" : "true"); mpfr_clear (max_value); } + mpfr_printf ("\t%s,\n", r ? "false" : "true"); print_fp (f, suffix, ",\n"); string_to_fp (f, s, MPFR_RNDN); print_fp (f, suffix, ",\n"); @@ -97,7 +97,7 @@ round_for_all (const char *s) int prec; int emin; int emax; - bool need_exact; + bool ibm_ld; } formats[7] = { { "f", 24, -148, 128, false }, { "", 53, -1073, 1024, false }, @@ -122,7 +122,7 @@ round_for_all (const char *s) for (i = 0; i < 7; i++) { round_str (s, formats[i].suffix, formats[i].prec, - formats[i].emin, formats[i].emax, formats[i].need_exact); + formats[i].emin, formats[i].emax, formats[i].ibm_ld); if (i < 6) mpfr_printf (",\n"); } diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c index 072fc737d4..4065d1288e 100644 --- a/stdlib/tst-strtod-round.c +++ b/stdlib/tst-strtod-round.c @@ -25,6 +25,13 @@ #include <stdlib.h> #include <string.h> +struct exactness +{ + bool f; + bool d; + bool ld; +}; + struct test_results { float f; double d; @@ -33,19 +40,20 @@ struct test_results { struct test { const char *s; - bool ld_ok; + struct exactness exact; struct test_results rd, rn, rz, ru; }; #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld53exact }, \ { fd, dd, ld53d }, \ { fn, dn, ld53n }, \ { fz, dz, ld53z }, \ @@ -53,14 +61,15 @@ struct test { } #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381 /* This is for the Intel extended float format. */ -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld64iexact }, \ { fd, dd, ld64id }, \ { fn, dn, ld64in }, \ { fz, dz, ld64iz }, \ @@ -68,42 +77,45 @@ struct test { } #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382 /* This is for the Motorola extended float format. */ -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld64mexact }, \ { fd, dd, ld64md }, \ { fn, dn, ld64mn }, \ { fz, dz, ld64mz }, \ { fu, du, ld64mu } \ } #elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024 -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - ld106exact, \ + { fexact, dexact, ld106exact }, \ { fd, dd, ld106d }, \ { fn, dn, ld106n }, \ { fz, dz, ld106z }, \ { fu, du, ld106u } \ } #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 -# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ - ld64id, ld64in, ld64iz, ld64iu, \ - ld64md, ld64mn, ld64mz, ld64mu, \ - ld106exact, ld106d, ld106n, ld106z, ld106u, \ - ld113d, ld113n, ld113z, ld113u) \ +# define TEST(s, fexact, fd, fn, fz, fu, dexact, dd, dn, dz, du, \ + ld53exact, ld53d, ld53n, ld53z, ld53u, \ + ld64iexact, ld64id, ld64in, ld64iz, ld64iu, \ + ld64mexact, ld64md, ld64mn, ld64mz, ld64mu, \ + ld106exact, ld106d, ld106n, ld106z, ld106u, \ + ld113exact, ld113d, ld113n, ld113z, ld113u) \ { \ s, \ - true, \ + { fexact, dexact, ld113exact }, \ { fd, dd, ld113d }, \ { fn, dn, ld113n }, \ { fz, dz, ld113z }, \ @@ -118,22 +130,27 @@ struct test { static const struct test tests[] = { TEST ("3.518437208883201171875E+013", + false, 0x2p+44f, 0x2p+44f, 0x2p+44f, 0x2.000004p+44f, + false, 0x2.0000000000002p+44, 0x2.0000000000004p+44, 0x2.0000000000002p+44, 0x2.0000000000004p+44, + false, 0x2.0000000000002p+44L, 0x2.0000000000004p+44L, 0x2.0000000000002p+44L, 0x2.0000000000004p+44L, + true, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, + true, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, @@ -143,27 +160,33 @@ static const struct test tests[] = { 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, + true, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L, 0x2.0000000000003p+44L), TEST ("1.00000005960464477550", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000004p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, @@ -173,27 +196,33 @@ static const struct test tests[] = { 0x1.0000010000000002048242f2ff8p+0L, 0x1.0000010000000002048242f2ffp+0L, 0x1.0000010000000002048242f2ff8p+0L, + false, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L), TEST ("1.0000000596046447755", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000004p+0L, + false, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, 0x1.0000010000000002p+0L, @@ -203,27 +232,33 @@ static const struct test tests[] = { 0x1.0000010000000002048242f2ff8p+0L, 0x1.0000010000000002048242f2ffp+0L, 0x1.0000010000000002048242f2ff8p+0L, + false, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L, 0x1.0000010000000002048242f2ff66p+0L, 0x1.0000010000000002048242f2ff67p+0L), TEST ("1.000000059604644776", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.000001000000000ap+0L, 0x1.000001000000000cp+0L, 0x1.000001000000000ap+0L, 0x1.000001000000000cp+0L, + false, 0x1.000001000000000ap+0L, 0x1.000001000000000cp+0L, 0x1.000001000000000ap+0L, @@ -233,27 +268,33 @@ static const struct test tests[] = { 0x1.000001000000000b3db12bdc21p+0L, 0x1.000001000000000b3db12bdc21p+0L, 0x1.000001000000000b3db12bdc218p+0L, + false, 0x1.000001000000000b3db12bdc213cp+0L, 0x1.000001000000000b3db12bdc213dp+0L, 0x1.000001000000000b3db12bdc213cp+0L, 0x1.000001000000000b3db12bdc213dp+0L), TEST ("1.000000059604644775", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffffffp+0, 0x1.000001p+0, 0x1.000000fffffffp+0, 0x1.000001p+0, + false, 0x1.000000fffffffp+0L, 0x1.000001p+0L, 0x1.000000fffffffp+0L, 0x1.000001p+0L, + false, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffffap+0L, + false, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, 0x1.000000fffffffff8p+0L, @@ -263,27 +304,33 @@ static const struct test tests[] = { 0x1.000000fffffffff8cb535a09dd8p+0L, 0x1.000000fffffffff8cb535a09dd8p+0L, 0x1.000000fffffffff8cb535a09dep+0L, + false, 0x1.000000fffffffff8cb535a09dd9p+0L, 0x1.000000fffffffff8cb535a09dd91p+0L, 0x1.000000fffffffff8cb535a09dd9p+0L, 0x1.000000fffffffff8cb535a09dd91p+0L), TEST ("1.00000005960464478", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.0000010000000054p+0L, 0x1.0000010000000056p+0L, 0x1.0000010000000054p+0L, 0x1.0000010000000056p+0L, + false, 0x1.0000010000000054p+0L, 0x1.0000010000000056p+0L, 0x1.0000010000000054p+0L, @@ -293,27 +340,33 @@ static const struct test tests[] = { 0x1.0000010000000055072873253p+0L, 0x1.0000010000000055072873252f8p+0L, 0x1.0000010000000055072873253p+0L, + false, 0x1.0000010000000055072873252febp+0L, 0x1.0000010000000055072873252febp+0L, 0x1.0000010000000055072873252febp+0L, 0x1.0000010000000055072873252fecp+0L), TEST ("1.0000000596046448", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001p+0, 0x1.000001p+0, 0x1.000001p+0, 0x1.0000010000001p+0, + false, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.000001p+0L, 0x1.0000010000001p+0L, + false, 0x1.00000100000001c4p+0L, 0x1.00000100000001c6p+0L, 0x1.00000100000001c4p+0L, 0x1.00000100000001c6p+0L, + false, 0x1.00000100000001c4p+0L, 0x1.00000100000001c6p+0L, 0x1.00000100000001c4p+0L, @@ -323,27 +376,33 @@ static const struct test tests[] = { 0x1.00000100000001c5f67cd792798p+0L, 0x1.00000100000001c5f67cd79279p+0L, 0x1.00000100000001c5f67cd792798p+0L, + false, 0x1.00000100000001c5f67cd7927953p+0L, 0x1.00000100000001c5f67cd7927954p+0L, 0x1.00000100000001c5f67cd7927953p+0L, 0x1.00000100000001c5f67cd7927954p+0L), TEST ("1.000000059604645", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.0000010000001p+0, 0x1.0000010000001p+0, 0x1.0000010000001p+0, 0x1.0000010000002p+0, + false, 0x1.0000010000001p+0L, 0x1.0000010000001p+0L, 0x1.0000010000001p+0L, 0x1.0000010000002p+0L, + false, 0x1.000001000000102ep+0L, 0x1.000001000000103p+0L, 0x1.000001000000102ep+0L, 0x1.000001000000103p+0L, + false, 0x1.000001000000102ep+0L, 0x1.000001000000103p+0L, 0x1.000001000000102ep+0L, @@ -353,27 +412,33 @@ static const struct test tests[] = { 0x1.000001000000102f4fc8c3d7578p+0L, 0x1.000001000000102f4fc8c3d757p+0L, 0x1.000001000000102f4fc8c3d7578p+0L, + false, 0x1.000001000000102f4fc8c3d75769p+0L, 0x1.000001000000102f4fc8c3d75769p+0L, 0x1.000001000000102f4fc8c3d75769p+0L, 0x1.000001000000102f4fc8c3d7576ap+0L), TEST ("1.00000005960464", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffffeap+0, 0x1.000000fffffeap+0, 0x1.000000fffffeap+0, 0x1.000000fffffebp+0, + false, 0x1.000000fffffeap+0L, 0x1.000000fffffeap+0L, 0x1.000000fffffeap+0L, 0x1.000000fffffebp+0L, + false, 0x1.000000fffffea7e4p+0L, 0x1.000000fffffea7e6p+0L, 0x1.000000fffffea7e4p+0L, 0x1.000000fffffea7e6p+0L, + false, 0x1.000000fffffea7e4p+0L, 0x1.000000fffffea7e6p+0L, 0x1.000000fffffea7e4p+0L, @@ -383,27 +448,33 @@ static const struct test tests[] = { 0x1.000000fffffea7e5975eb11da78p+0L, 0x1.000000fffffea7e5975eb11da7p+0L, 0x1.000000fffffea7e5975eb11da78p+0L, + false, 0x1.000000fffffea7e5975eb11da74ap+0L, 0x1.000000fffffea7e5975eb11da74bp+0L, 0x1.000000fffffea7e5975eb11da74ap+0L, 0x1.000000fffffea7e5975eb11da74bp+0L), TEST ("1.0000000596046", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffff36p+0, 0x1.000000fffff36p+0, 0x1.000000fffff36p+0, 0x1.000000fffff37p+0, + false, 0x1.000000fffff36p+0L, 0x1.000000fffff36p+0L, 0x1.000000fffff36p+0L, 0x1.000000fffff37p+0L, + false, 0x1.000000fffff36596p+0L, 0x1.000000fffff36598p+0L, 0x1.000000fffff36596p+0L, 0x1.000000fffff36598p+0L, + false, 0x1.000000fffff36596p+0L, 0x1.000000fffff36598p+0L, 0x1.000000fffff36596p+0L, @@ -413,27 +484,33 @@ static const struct test tests[] = { 0x1.000000fffff36597d40e1b50268p+0L, 0x1.000000fffff36597d40e1b5026p+0L, 0x1.000000fffff36597d40e1b50268p+0L, + false, 0x1.000000fffff36597d40e1b502655p+0L, 0x1.000000fffff36597d40e1b502656p+0L, 0x1.000000fffff36597d40e1b502655p+0L, 0x1.000000fffff36597d40e1b502656p+0L), TEST ("1.000000059605", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001000063fp+0, 0x1.000001000064p+0, 0x1.000001000063fp+0, 0x1.000001000064p+0, + false, 0x1.000001000063fp+0L, 0x1.000001000064p+0L, 0x1.000001000063fp+0L, 0x1.000001000064p+0L, + false, 0x1.000001000063fcap+0L, 0x1.000001000063fca2p+0L, 0x1.000001000063fcap+0L, 0x1.000001000063fca2p+0L, + false, 0x1.000001000063fcap+0L, 0x1.000001000063fca2p+0L, 0x1.000001000063fcap+0L, @@ -443,27 +520,33 @@ static const struct test tests[] = { 0x1.000001000063fca17533f5573p+0L, 0x1.000001000063fca17533f5572f8p+0L, 0x1.000001000063fca17533f5573p+0L, + false, 0x1.000001000063fca17533f5572fe9p+0L, 0x1.000001000063fca17533f5572feap+0L, 0x1.000001000063fca17533f5572fe9p+0L, 0x1.000001000063fca17533f5572feap+0L), TEST ("1.00000005960", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, + false, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, @@ -473,27 +556,33 @@ static const struct test tests[] = { 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff388p+0L, + false, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382ep+0L), TEST ("1.0000000596", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, 0x1.000000fffae49p+0, 0x1.000000fffae4ap+0, + false, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, 0x1.000000fffae49p+0L, 0x1.000000fffae4ap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, + false, 0x1.000000fffae49ca8p+0L, 0x1.000000fffae49caap+0L, 0x1.000000fffae49ca8p+0L, @@ -503,27 +592,33 @@ static const struct test tests[] = { 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff38p+0L, 0x1.000000fffae49ca916dacfff388p+0L, + false, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382dp+0L, 0x1.000000fffae49ca916dacfff382ep+0L), TEST ("1.000000060", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, + false, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a48p+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, @@ -533,27 +628,33 @@ static const struct test tests[] = { 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca38p+0L, + false, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L), TEST ("1.00000006", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, 0x1.00000101b2b29p+0, 0x1.00000101b2b2ap+0, + false, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, 0x1.00000101b2b29p+0L, 0x1.00000101b2b2ap+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a48p+0L, + false, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, 0x1.00000101b2b29a46p+0L, @@ -563,27 +664,33 @@ static const struct test tests[] = { 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca3p+0L, 0x1.00000101b2b29a4692b67b7ca38p+0L, + false, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L, 0x1.00000101b2b29a4692b67b7ca313p+0L, 0x1.00000101b2b29a4692b67b7ca314p+0L), TEST ("1.0000001", + false, 0x1p+0f, 0x1.000002p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1.000001ad7f29ap+0, 0x1.000001ad7f29bp+0, 0x1.000001ad7f29ap+0, 0x1.000001ad7f29bp+0, + false, 0x1.000001ad7f29ap+0L, 0x1.000001ad7f29bp+0L, 0x1.000001ad7f29ap+0L, 0x1.000001ad7f29bp+0L, + false, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abccp+0L, + false, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, 0x1.000001ad7f29abcap+0L, @@ -593,27 +700,33 @@ static const struct test tests[] = { 0x1.000001ad7f29abcaf485787a65p+0L, 0x1.000001ad7f29abcaf485787a65p+0L, 0x1.000001ad7f29abcaf485787a658p+0L, + false, 0x1.000001ad7f29abcaf485787a652p+0L, 0x1.000001ad7f29abcaf485787a6521p+0L, 0x1.000001ad7f29abcaf485787a652p+0L, 0x1.000001ad7f29abcaf485787a6521p+0L), TEST ("1.000000", + true, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1p+0f, + true, 0x1p+0, 0x1p+0, 0x1p+0, 0x1p+0, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1p+0L, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1p+0L, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, @@ -623,27 +736,33 @@ static const struct test tests[] = { 0x1p+0L, 0x1p+0L, 0x1p+0L, + true, 0x1p+0L, 0x1p+0L, 0x1p+0L, 0x1p+0L), TEST ("1.00000000000000011113", + false, 0x1p+0f, 0x1p+0f, 0x1p+0f, 0x1.000002p+0f, + false, 0x1p+0, 0x1.0000000000001p+0, 0x1p+0, 0x1.0000000000001p+0, + false, 0x1p+0L, 0x1.0000000000001p+0L, 0x1p+0L, 0x1.0000000000001p+0L, + fals |
