/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
-#ifdef __DECC
-static double
-NaN ()
-{
- static double zero = 0.0;
- return zero / zero;
-}
-#else
-# define NaN() (0.0 / 0.0)
-#endif
+#include "nan.h"
/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */
static int
{ /* NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%a %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%a %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* FLAG_ZERO with NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%050a %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%050a %d", NaNd (), 33, 44, 55);
/* "0000000nan 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strlen (result) == 50 + 3
{ /* NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%La %d", 0.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%La %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* FLAG_ZERO with NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%050La %d", 0.0L / 0.0L, 33, 44, 55);
+ my_sprintf (result, "%050La %d", NaNl (), 33, 44, 55);
/* "0000000nan 33" is not a valid result; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strlen (result) == 50 + 3
{ /* NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%f %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%f %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* FLAG_ZERO with NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%050f %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%050f %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) == 50 + 3
&& strisnan (result, strspn (result, " "), strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%Lf %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%Lf %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* FLAG_ZERO with NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%050Lf %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%050Lf %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) == 50 + 3
&& strisnan (result, strspn (result, " "), strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%F %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%F %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 1)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%LF %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%LF %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 1)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%e %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%e %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* FLAG_ZERO with NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%050e %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%050e %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) == 50 + 3
&& strisnan (result, strspn (result, " "), strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%Le %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%Le %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* FLAG_ZERO with NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%050Le %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%050Le %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) == 50 + 3
&& strisnan (result, strspn (result, " "), strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%g %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%g %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
{ /* FLAG_ZERO with NaN. */
char result[1000];
int retval =
- my_sprintf (result, "%050g %d", NaN (), 33, 44, 55);
+ my_sprintf (result, "%050g %d", NaNd (), 33, 44, 55);
ASSERT (strlen (result) == 50 + 3
&& strisnan (result, strspn (result, " "), strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%Lg %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%Lg %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) >= 3 + 3
&& strisnan (result, 0, strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);
}
{ /* FLAG_ZERO with NaN. */
- static long double zero = 0.0L;
char result[1000];
int retval =
- my_sprintf (result, "%050Lg %d", zero / zero, 33, 44, 55);
+ my_sprintf (result, "%050Lg %d", NaNl (), 33, 44, 55);
ASSERT (strlen (result) == 50 + 3
&& strisnan (result, strspn (result, " "), strlen (result) - 3, 0)
&& strcmp (result + strlen (result) - 3, " 33") == 0);