From 1f24b9ad0f173f7904b7a0fd559cc287660be1b2 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 13 Jun 2013 15:41:58 +0000 Subject: Rework tst-strtod-round handling of inexact results. --- ChangeLog | 14 + stdlib/gen-tst-strtod-round.c | 10 +- stdlib/tst-strtod-round.c | 758 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 737 insertions(+), 45 deletions(-) diff --git a/ChangeLog b/ChangeLog index 755fce0ab7..1a828ef313 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2013-06-13 Joseph Myers + + * stdlib/gen-tst-strtod-round.c (round_str): Always generate + output for whether conversion result is exact. Take argument + indicating whether type is IBM long double. + (round_for_all): Change need_exact field to ibm_ld. + * stdlib/tst-strtod-round.c (struct exactness): New type. + (struct test): Change bool ld_ok field to struct exactness exact. + (TEST): Update all definitions for change to field. + (tests): Regenerate array contents. + (test_in_one_mode): Take pointer to new field instead of old ld_ok + field value. Check for IBM long double here. + (do_test): Update calls to test_in_one_mode. + 2013-06-13 Siddhesh Poyarekar [BZ #12515] 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 #include +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+0L, + false, 0x1.00000000000007fep+0L, 0x1.00000000000008p+0L, 0x1.00000000000007fep+0L, @@ -743,27 +880,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 +916,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 +952,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 +988,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 +1024,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 +1060,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 +1068,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 +1098,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 +1134,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 +1170,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 +1206,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 +1242,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 +1278,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 +1314,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 +1350,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 +1386,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 +1422,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 +1459,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 +1496,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 +1533,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 +1570,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 +1607,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 +1644,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 +1681,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 +1718,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 +1755,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 +1792,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 +1829,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 +1866,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 +1903,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 +1940,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 +1977,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 +2014,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 +2051,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 +2087,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 +2123,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 +2159,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 +2195,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 +2231,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 +2267,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 +2278,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 +2308,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 +2319,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 +2349,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 +2360,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 +2390,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 +2401,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 +2431,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 +2442,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 +2472,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 +2483,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 +2513,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 +2601,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 +2631,7 @@ static const struct test tests[] = { INFINITY, 0xf.fffffffffffffffffffffffffcp+1020L, INFINITY, + false, 0xf.fffffffffffffff7fffffffffff8p+16380L, 0xf.fffffffffffffff8p+16380L, 0xf.fffffffffffffff7fffffffffff8p+16380L, @@ -2311,22 +2719,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 +2749,7 @@ static const struct test tests[] = { INFINITY, 0xf.fffffffffffffffffffffffffcp+1020L, INFINITY, + true, 0xf.fffffffffffffff8p+16380L, 0xf.fffffffffffffff8p+16380L, 0xf.fffffffffffffff8p+16380L, @@ -2423,22 +2837,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 +2867,7 @@ static const struct test tests[] = { INFINITY, 0xf.fffffffffffffffffffffffffcp+1020L, INFINITY, + false, 0xf.fffffffffffffff8p+16380L, 0xf.fffffffffffffff8p+16380L, 0xf.fffffffffffffff8p+16380L, @@ -2535,22 +2955,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 +2985,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 +3073,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 +3103,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 +3191,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 +3221,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 +3309,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 +3339,7 @@ static const struct test tests[] = { INFINITY, 0xf.fffffffffffffffffffffffffcp+1020L, INFINITY, + false, 0xf.fffffffffffffffffffffffffff8p+16380L, 0xf.fffffffffffffffffffffffffff8p+16380L, 0xf.fffffffffffffffffffffffffff8p+16380L, @@ -2983,22 +3427,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 +3457,7 @@ static const struct test tests[] = { INFINITY, 0xf.fffffffffffffffffffffffffcp+1020L, INFINITY, + false, 0xf.fffffffffffffffffffffffffff8p+16380L, INFINITY, 0xf.fffffffffffffffffffffffffff8p+16380L, @@ -3095,22 +3545,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 +3575,7 @@ static const struct test tests[] = { INFINITY, 0xf.fffffffffffffffffffffffffcp+1020L, INFINITY, + false, 0xf.fffffffffffffffffffffffffff8p+16380L, INFINITY, 0xf.fffffffffffffffffffffffffff8p+16380L, @@ -3207,22 +3663,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 +3693,7 @@ static const struct test tests[] = { -INFINITY, -0xf.fffffffffffffffffffffffffcp+1020L, -0xf.fffffffffffffffffffffffffcp+1020L, + false, -INFINITY, -0xf.fffffffffffffffffffffffffff8p+16380L, -0xf.fffffffffffffffffffffffffff8p+16380L, @@ -3319,22 +3781,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 +3811,7 @@ static const struct test tests[] = { -INFINITY, -0xf.fffffffffffffffffffffffffcp+1020L, -0xf.fffffffffffffffffffffffffcp+1020L, + false, -INFINITY, -INFINITY, -0xf.fffffffffffffffffffffffffff8p+16380L, @@ -3431,22 +3899,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 +3929,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 +3966,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 +4003,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 +4040,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 +4077,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 +4114,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 +4151,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 +4188,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 +4225,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 +4262,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 +4299,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 +4336,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 +4373,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 +4391,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 +4421,7 @@ static const struct test tests[] = { 0x4p-1076L, 0x4p-1076L, 0x8p-1076L, + false, 0x5.fffffffffffffffffffffffffffcp-1076L, 0x6p-1076L, 0x5.fffffffffffffffffffffffffffcp-1076L, @@ -3887,22 +4439,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 +4469,7 @@ static const struct test tests[] = { 0x8p-1076L, 0x4p-1076L, 0x8p-1076L, + true, 0x6p-1076L, 0x6p-1076L, 0x6p-1076L, @@ -3929,22 +4487,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 +4517,7 @@ static const struct test tests[] = { 0x8p-1076L, 0x4p-1076L, 0x8p-1076L, + false, 0x6p-1076L, 0x6p-1076L, 0x6p-1076L, @@ -3971,22 +4535,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 +4565,7 @@ static const struct test tests[] = { -0x4p-1076L, -0x4p-1076L, -0x4p-1076L, + false, -0x6p-1076L, -0x6p-1076L, -0x5.fffffffffffffffffffffffffffcp-1076L, @@ -4013,22 +4583,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 +4613,7 @@ static const struct test tests[] = { -0x8p-1076L, -0x4p-1076L, -0x4p-1076L, + true, -0x6p-1076L, -0x6p-1076L, -0x6p-1076L, @@ -4055,22 +4631,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 +4661,7 @@ static const struct test tests[] = { -0x8p-1076L, -0x4p-1076L, -0x4p-1076L, + false, -0x6.0000000000000000000000000004p-1076L, -0x6p-1076L, -0x6p-1076L, @@ -4276,22 +4858,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 +4888,7 @@ static const struct test tests[] = { 0x0p+0L, 0x0p+0L, 0x4p-1076L, + false, 0xb.fffffffffffcp-16448L, 0xcp-16448L, 0xb.fffffffffffcp-16448L, @@ -4497,22 +5085,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 +5115,7 @@ static const struct test tests[] = { 0x0p+0L, 0x0p+0L, 0x4p-1076L, + true, 0xcp-16448L, 0xcp-16448L, 0xcp-16448L, @@ -4718,22 +5312,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 +5342,7 @@ static const struct test tests[] = { 0x0p+0L, 0x0p+0L, 0x4p-1076L, + false, 0xcp-16448L, 0xcp-16448L, 0xcp-16448L, @@ -4939,22 +5539,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 +5569,7 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L, + false, -0xcp-16448L, -0xcp-16448L, -0xb.fffffffffffcp-16448L, @@ -5160,22 +5766,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 +5796,7 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L, + true, -0xcp-16448L, -0xcp-16448L, -0xcp-16448L, @@ -5381,22 +5993,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 +6023,7 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L, + false, -0xc.000000000004p-16448L, -0xcp-16448L, -0xcp-16448L, @@ -5602,22 +6220,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 +6250,7 @@ static const struct test tests[] = { 0x0p+0L, 0x0p+0L, 0x4p-1076L, + false, 0xb.fffffffffffcp-16448L, 0xcp-16448L, 0xb.fffffffffffcp-16448L, @@ -5823,22 +6447,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 +6477,7 @@ static const struct test tests[] = { 0x0p+0L, 0x0p+0L, 0x4p-1076L, + true, 0xcp-16448L, 0xcp-16448L, 0xcp-16448L, @@ -6044,22 +6674,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 +6704,7 @@ static const struct test tests[] = { 0x0p+0L, 0x0p+0L, 0x4p-1076L, + false, 0xcp-16448L, 0xcp-16448L, 0xcp-16448L, @@ -6265,22 +6901,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 +6931,7 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L, + false, -0xcp-16448L, -0xcp-16448L, -0xb.fffffffffffcp-16448L, @@ -6486,22 +7128,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 +7158,7 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L, + true, -0xcp-16448L, -0xcp-16448L, -0xcp-16448L, @@ -6707,22 +7355,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 +7385,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 +7421,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 +7457,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 +7493,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 +7529,7 @@ static const struct test tests[] = { -0x0p+0L, -0x0p+0L, -0x0p+0L, + false, -0x4p-16496L, -0x0p+0L, -0x0p+0L, @@ -6860,7 +7538,7 @@ 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) { int result = 0; float f = strtof (s, NULL); @@ -6885,7 +7563,7 @@ test_in_one_mode (const char *s, const struct test_results *expected, { printf ("strtold (%s) returned %La not %La (%s)\n", s, ld, expected->ld, mode_name); - if (ld_ok) + if (LDBL_MANT_DIG != 106 || exact->ld) result = 1; else printf ("ignoring this inexact long double result\n"); @@ -6900,29 +7578,29 @@ 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, + result |= test_in_one_mode (tests[i].s, &tests[i].rn, &tests[i].exact, "default rounding mode"); #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"); 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"); 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"); fesetround (save_round_mode); } #endif -- cgit 1.4.1