+2007-05-19 Bruno Haible <bruno@clisp.org>
+
+ * tests/test-vasnprintf-posix.c (have_minus_zero): New function.
+ (test_function): Skip tests involving -0.0 on platforms where
+ -0.0 = 0.0.
+ * tests/test-vasprintf-posix.c (have_minus_zero): New function.
+ (test_function): Skip tests involving -0.0 on platforms where
+ -0.0 = 0.0.
+ * tests/test-snprintf-posix.h (have_minus_zero): New function.
+ (test_function): Skip tests involving -0.0 on platforms where
+ -0.0 = 0.0.
+ * tests/test-sprintf-posix.h (have_minus_zero): New function.
+ (test_function): Skip tests involving -0.0 on platforms where
+ -0.0 = 0.0.
+ * tests/test-fprintf-posix.h (test_function): Remove all -0.0 related
+ tests.
+ * tests/test-printf-posix.h (test_function): Likewise.
+ * tests/test-printf-posix.output: Remove all -0.0 related results.
+ Needed for IRIX 6.5.
+
2007-05-19 Bruno Haible <bruno@clisp.org>
* tests/test-vasnprintf-posix.c (test_function): Allow NaN to be
* tests/test-vasprintf-posix.c (test_function): Likewise.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
+ * tests/test-fprintf-posix.h (NaN): Remove macro.
+ (test_function): Remove all NaN related tests.
+ * tests/test-printf-posix.h (NaN): Remove macro.
+ (test_function): Remove all NaN related tests.
+ * tests/test-printf-posix.output: Remove all NaN related results.
Needed for IRIX 6.5.
2007-05-19 Bruno Haible <bruno@clisp.org>
/* Positive zero. */
my_fprintf (stdout, "%a %d\n", 0.0, 33, 44, 55);
- /* Negative zero. */
- my_fprintf (stdout, "%a %d\n", -0.0, 33, 44, 55);
-
/* Positive infinity. */
my_fprintf (stdout, "%a %d\n", 1.0 / 0.0, 33, 44, 55);
/* Positive zero. */
my_fprintf (stdout, "%f %d\n", 0.0, 33, 44, 55);
- /* Negative zero. */
- my_fprintf (stdout, "%f %d\n", -0.0, 33, 44, 55);
-
/* FLAG_ZERO. */
my_fprintf (stdout, "%015f %d\n", 1234.0, 33, 44, 55);
/* Positive zero. */
my_fprintf (stdout, "%Lf %d\n", 0.0L, 33, 44, 55);
- /* Negative zero. */
- my_fprintf (stdout, "%Lf %d\n", -0.0L, 33, 44, 55);
-
/* FLAG_ZERO. */
my_fprintf (stdout, "%015Lf %d\n", 1234.0L, 33, 44, 55);
/* Positive zero. */
my_fprintf (stdout, "%F %d\n", 0.0, 33, 44, 55);
- /* Negative zero. */
- my_fprintf (stdout, "%F %d\n", -0.0, 33, 44, 55);
-
/* FLAG_ZERO. */
my_fprintf (stdout, "%015F %d\n", 1234.0, 33, 44, 55);
/* Positive zero. */
my_fprintf (stdout, "%LF %d\n", 0.0L, 33, 44, 55);
- /* Negative zero. */
- my_fprintf (stdout, "%LF %d\n", -0.0L, 33, 44, 55);
-
/* FLAG_ZERO. */
my_fprintf (stdout, "%015LF %d\n", 1234.0L, 33, 44, 55);
/* Positive zero. */
my_printf ("%a %d\n", 0.0, 33, 44, 55);
- /* Negative zero. */
- my_printf ("%a %d\n", -0.0, 33, 44, 55);
-
/* Positive infinity. */
my_printf ("%a %d\n", 1.0 / 0.0, 33, 44, 55);
/* Positive zero. */
my_printf ("%f %d\n", 0.0, 33, 44, 55);
- /* Negative zero. */
- my_printf ("%f %d\n", -0.0, 33, 44, 55);
-
/* FLAG_ZERO. */
my_printf ("%015f %d\n", 1234.0, 33, 44, 55);
/* Positive zero. */
my_printf ("%Lf %d\n", 0.0L, 33, 44, 55);
- /* Negative zero. */
- my_printf ("%Lf %d\n", -0.0L, 33, 44, 55);
-
/* FLAG_ZERO. */
my_printf ("%015Lf %d\n", 1234.0L, 33, 44, 55);
/* Positive zero. */
my_printf ("%F %d\n", 0.0, 33, 44, 55);
- /* Negative zero. */
- my_printf ("%F %d\n", -0.0, 33, 44, 55);
-
/* FLAG_ZERO. */
my_printf ("%015F %d\n", 1234.0, 33, 44, 55);
/* Positive zero. */
my_printf ("%LF %d\n", 0.0L, 33, 44, 55);
- /* Negative zero. */
- my_printf ("%LF %d\n", -0.0L, 33, 44, 55);
-
/* FLAG_ZERO. */
my_printf ("%015LF %d\n", 1234.0L, 33, 44, 55);
12345672 33
12345673 33
0x0p+0 33
--0x0p+0 33
inf 33
-inf 33
inf 33
1234567.000000 33
-0.031250 33
0.000000 33
--0.000000 33
00001234.000000 33
1234 33
12.750000 33
1234567.000000 33
-0.031250 33
0.000000 33
--0.000000 33
00001234.000000 33
1234 33
12.750000 33
1234567.000000 33
-0.031250 33
0.000000 33
--0.000000 33
00001234.000000 33
1234 33
12.750000 33
1234567.000000 33
-0.031250 33
0.000000 33
--0.000000 33
00001234.000000 33
1234 33
55 33
# define NaN() (0.0 / 0.0)
#endif
+/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ static double minus_zero = -0.0;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+
static int
strmatch (const char *pattern, const char *string)
{
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%a %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%La %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%f %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%Lf %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%F %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%LF %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%e %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0
- || strcmp (result, "-0.000000e+000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0
+ || strcmp (result, "-0.000000e+000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%Le %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%g %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (retval == strlen (result));
}
char result[100];
int retval =
my_snprintf (result, sizeof (result), "%Lg %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (retval == strlen (result));
}
# define NaN() (0.0 / 0.0)
#endif
+/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ static double minus_zero = -0.0;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+
static int
strmatch (const char *pattern, const char *string)
{
char result[1000];
int retval =
my_sprintf (result, "%a %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%La %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%f %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%Lf %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%F %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%LF %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%e %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0
- || strcmp (result, "-0.000000e+000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0
+ || strcmp (result, "-0.000000e+000 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%Le %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%g %d", -0.0, 33, 44, 55);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (retval == strlen (result));
}
char result[1000];
int retval =
my_sprintf (result, "%Lg %d", -0.0L, 33, 44, 55);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (retval == strlen (result));
}
# define NaN() (0.0 / 0.0)
#endif
+/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ static double minus_zero = -0.0;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+
static int
strmatch (const char *pattern, const char *string)
{
char *result =
my_asnprintf (NULL, &length, "%a %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%La %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%f %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%Lf %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%F %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%LF %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%e %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0
- || strcmp (result, "-0.000000e+000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0
+ || strcmp (result, "-0.000000e+000 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%Le %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%g %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
char *result =
my_asnprintf (NULL, &length, "%Lg %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (length == strlen (result));
free (result);
}
# define NaN() (0.0 / 0.0)
#endif
+/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ static double minus_zero = -0.0;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+
static int
strmatch (const char *pattern, const char *string)
{
int retval =
my_asprintf (&result, "%a %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%La %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0x0p+0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0x0p+0 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%f %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%Lf %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%F %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%LF %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%e %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0
- || strcmp (result, "-0.000000e+000 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0
+ || strcmp (result, "-0.000000e+000 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%Le %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0.000000e+00 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%g %d", -0.0, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
int retval =
my_asprintf (&result, "%Lg %d", -0.0L, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strcmp (result, "-0 33") == 0);
+ if (have_minus_zero ())
+ ASSERT (strcmp (result, "-0 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}