aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-05-09 11:49:11 -0500
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-05-24 14:39:57 -0500
commit118fbf0e1cae103b7e1287bc4b6a929fdf4c000e (patch)
tree962f3f480ef7f23c8336768d43ac5bf77f66a3c4 /stdlib
parent078d1cf8accf8e74390c3b091549afa4efbb113e (diff)
downloadglibc-118fbf0e1cae103b7e1287bc4b6a929fdf4c000e.tar.xz
glibc-118fbf0e1cae103b7e1287bc4b6a929fdf4c000e.zip
Refactor tst-strtod-round.c
This file is partially generated. To make updates a little simpler, I have moved the generated code into a partially contained header to simplify regeneration. gen-tst-strtod-round.c now takes two, mandatory arguments. These arguments specify the input test data and the output destination, respectively.
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/gen-tst-strtod-round.c88
-rw-r--r--stdlib/tst-strtod-round-data.h12334
-rw-r--r--stdlib/tst-strtod-round.c12338
3 files changed, 12403 insertions, 12357 deletions
diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c
index 3ef450640f..fa5562ee00 100644
--- a/stdlib/gen-tst-strtod-round.c
+++ b/stdlib/gen-tst-strtod-round.c
@@ -17,11 +17,25 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+/* Compile this program as:
+
+ gcc -std=gnu11 -O2 -Wall -Wextra gen-tst-strtod-round.c -lmpfr
+ -o gen-tst-strtod-round
+
+ (use of current MPFR version recommended) and run it as:
+
+ gen-tst-strtod-round tst-strtod-round-data tst-strtod-round-data.h
+
+ The output file will be generated as tst-strtod-round-data.h
+*/
+
+
#define _GNU_SOURCE
#include <assert.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <mpfr.h>
/* Work around incorrect ternary value from mpfr_strtofr
@@ -47,16 +61,17 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
}
static void
-print_fp (mpfr_t f, const char *suffix, const char *suffix2)
+print_fp (FILE *fout, mpfr_t f, const char *suffix, const char *suffix2)
{
if (mpfr_inf_p (f))
- mpfr_printf ("\t%sINFINITY%s", mpfr_signbit (f) ? "-" : "", suffix2);
+ mpfr_fprintf (fout, "\t%sINFINITY%s", mpfr_signbit (f) ? "-" : "",
+ suffix2);
else
- mpfr_printf ("\t%Ra%s%s", f, suffix, suffix2);
+ mpfr_fprintf (fout, "\t%Ra%s%s", f, suffix, suffix2);
}
static void
-round_str (const char *s, const char *suffix,
+round_str (FILE *fout, const char *s, const char *suffix,
int prec, int emin, int emax, bool ibm_ld)
{
mpfr_t f;
@@ -78,19 +93,19 @@ round_str (const char *s, const char *suffix,
r = 1;
mpfr_clear (max_value);
}
- mpfr_printf ("\t%s,\n", r ? "false" : "true");
- print_fp (f, suffix, ",\n");
+ mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true");
+ print_fp (fout, f, suffix, ",\n");
string_to_fp (f, s, MPFR_RNDN);
- print_fp (f, suffix, ",\n");
+ print_fp (fout, f, suffix, ",\n");
string_to_fp (f, s, MPFR_RNDZ);
- print_fp (f, suffix, ",\n");
+ print_fp (fout, f, suffix, ",\n");
string_to_fp (f, s, MPFR_RNDU);
- print_fp (f, suffix, "");
+ print_fp (fout, f, suffix, "");
mpfr_clear (f);
}
static void
-round_for_all (const char *s)
+round_for_all (FILE *fout, const char *s)
{
static const struct fmt {
const char *suffix;
@@ -109,39 +124,70 @@ round_for_all (const char *s)
{ "L", 106, -1073, 1024, true },
{ "L", 113, -16493, 16384, false },
};
- mpfr_printf (" TEST (\"");
+ mpfr_fprintf (fout, " TEST (\"");
const char *p;
for (p = s; *p; p++)
{
- putchar (*p);
+ fputc (*p, fout);
if ((p - s) % 60 == 59 && p[1])
- mpfr_printf ("\"\n\t\"");
+ mpfr_fprintf (fout, "\"\n\t\"");
}
- mpfr_printf ("\",\n");
+ mpfr_fprintf (fout, "\",\n");
int i;
for (i = 0; i < 7; i++)
{
- round_str (s, formats[i].suffix, formats[i].prec,
+ round_str (fout, s, formats[i].suffix, formats[i].prec,
formats[i].emin, formats[i].emax, formats[i].ibm_ld);
if (i < 6)
- mpfr_printf (",\n");
+ mpfr_fprintf (fout, ",\n");
}
- mpfr_printf ("),\n");
+ mpfr_fprintf (fout, "),\n");
}
int
-main (void)
+main (int argc, char **argv)
{
char *p = NULL;
size_t len;
ssize_t nbytes;
- while ((nbytes = getline (&p, &len, stdin)) != -1)
+ FILE *fin, *fout;
+ char *fin_name, *fout_name;
+
+ if (argc < 3)
+ {
+ fprintf (stderr, "Usage: %s <input> <output>\n", basename (argv[0]));
+ return EXIT_FAILURE;
+ }
+
+ fin_name = argv[1];
+ fout_name = argv[2];
+
+ fin = fopen (fin_name, "r");
+ if (fin == NULL)
+ {
+ perror ("Could not open input for reading");
+ return EXIT_FAILURE;
+ }
+
+ fout = fopen (fout_name, "w");
+ if (fout == NULL)
+ {
+ perror ("Could not open output for writing");
+ return EXIT_FAILURE;
+ }
+
+ fprintf (fout, "/* This file was generated by %s from %s. */\n",
+ __FILE__, fin_name);
+ fputs ("static const struct test tests[] = {\n", fout);
+ while ((nbytes = getline (&p, &len, fin)) != -1)
{
if (p[nbytes - 1] == '\n')
p[nbytes - 1] = 0;
- round_for_all (p);
+ round_for_all (fout, p);
free (p);
p = NULL;
}
- return 0;
+ fputs ("};\n", fout);
+
+ return EXIT_SUCCESS;
}
diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h
new file mode 100644
index 0000000000..352d785fc2
--- /dev/null
+++ b/stdlib/tst-strtod-round-data.h
@@ -0,0 +1,12334 @@
+/* This file was generated by gen-tst-strtod-round.c from tst-strtod-round-data. */
+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,
+ 0x2.0000000000003p+44L,
+ true,
+ 0x2.0000000000003p+44L,
+ 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,
+ 0x1.0000010000000004p+0L,
+ false,
+ 0x1.0000010000000002048242f2ffp+0L,
+ 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,
+ 0x1.0000010000000004p+0L,
+ false,
+ 0x1.0000010000000002048242f2ffp+0L,
+ 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,
+ 0x1.000001000000000cp+0L,
+ false,
+ 0x1.000001000000000b3db12bdc21p+0L,
+ 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,
+ 0x1.000000fffffffffap+0L,
+ false,
+ 0x1.000000fffffffff8cb535a09dd8p+0L,
+ 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,
+ 0x1.0000010000000056p+0L,
+ false,
+ 0x1.0000010000000055072873252f8p+0L,
+ 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,
+ 0x1.00000100000001c6p+0L,
+ false,
+ 0x1.00000100000001c5f67cd79279p+0L,
+ 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,
+ 0x1.000001000000103p+0L,
+ false,
+ 0x1.000001000000102f4fc8c3d757p+0L,
+ 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,
+ 0x1.000000fffffea7e6p+0L,
+ false,
+ 0x1.000000fffffea7e5975eb11da7p+0L,
+ 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,
+ 0x1.000000fffff36598p+0L,
+ false,
+ 0x1.000000fffff36597d40e1b5026p+0L,
+ 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,
+ 0x1.000001000063fca2p+0L,
+ false,
+ 0x1.000001000063fca17533f5572f8p+0L,
+ 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,
+ 0x1.000000fffae49caap+0L,
+ false,
+ 0x1.000000fffae49ca916dacfff38p+0L,
+ 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,
+ 0x1.000000fffae49caap+0L,
+ false,
+ 0x1.000000fffae49ca916dacfff38p+0L,
+ 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,
+ 0x1.00000101b2b29a48p+0L,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0L,
+ 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,
+ 0x1.00000101b2b29a48p+0L,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0L,
+ 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,
+ 0x1.000001ad7f29abccp+0L,
+ false,
+ 0x1.000001ad7f29abcaf485787a65p+0L,
+ 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,
+ 0x1p+0L,
+ true,
+ 0x1p+0L,
+ 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,
+ 0x1.0000000000000802p+0L,
+ false,
+ 0x1.0000000000000801fc96557232p+0L,
+ 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,
+