From ea0f5bf6444c14f97c069b5da723781ecb8a84aa Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 8 Oct 2008 02:05:26 +0200 Subject: [PATCH] Use a more portable replacement expression for -0.0L. --- ChangeLog | 78 ++++++++++++++++++++++++++++++++++++++++++ m4/signbit.m4 | 14 +++++--- modules/ceill-tests | 1 + modules/floorl-tests | 1 + modules/frexpl-tests | 1 + modules/isnan-tests | 1 + modules/isnanl-nolibm-tests | 1 + modules/isnanl-tests | 1 + modules/ldexpl-tests | 1 + modules/roundl-tests | 1 + modules/signbit-tests | 1 + modules/snprintf-posix-tests | 1 + modules/sprintf-posix-tests | 1 + modules/truncl-tests | 1 + modules/vasnprintf-posix-tests | 1 + modules/vasprintf-posix-tests | 1 + modules/vsnprintf-posix-tests | 1 + modules/vsprintf-posix-tests | 1 + tests/test-ceill.c | 9 ++--- tests/test-floorl.c | 9 ++--- tests/test-frexpl.c | 8 ++--- tests/test-isnan.c | 8 ++--- tests/test-isnanl.h | 8 ++--- tests/test-ldexpl.c | 8 ++--- tests/test-roundl.c | 9 ++--- tests/test-signbit.c | 17 +++++++-- tests/test-snprintf-posix.h | 18 +++++----- tests/test-sprintf-posix.h | 18 +++++----- tests/test-truncl.c | 9 ++--- tests/test-vasnprintf-posix.c | 18 +++++----- tests/test-vasprintf-posix.c | 18 +++++----- 31 files changed, 190 insertions(+), 75 deletions(-) diff --git a/ChangeLog b/ChangeLog index 04d5f4339..931b308c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,81 @@ +2008-10-07 Bruno Haible + + Use a more portable replacement expression for -0.0L. + * m4/signbit.m4 (gl_SIGNBIT_TEST_PROGRAM): Use -LDBL_MIN * LDBL_MIN + instead of -0.0L. Fix m4 quotation. + + * tests/test-signbit.c: Include . + (minus_zero): New variable. + (test_signbitl): Use minus_zero instead of -zero. + * modules/signbit-tests (Depends-on): Add float. + + * tests/test-ceill.c: Include . + (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/ceill-tests (Depends-on): Add float. + + * tests/test-floorl.c: Include . + (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/floorl-tests (Depends-on): Add float. + + * tests/test-roundl.c: Include . + (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/roundl-tests (Depends-on): Add float. + + * tests/test-truncl.c: Include . + (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/truncl-tests (Depends-on): Add float. + + * tests/test-frexpl.c (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/frexpl-tests (Depends-on): Add float. + + * tests/test-isnan.c (zerol): Remove variable. + (minus_zerol): New variable. + (test_long_double): Use minus_zerol instead of -zerol. + * modules/isnan-tests (Depends-on): Add float. + + * tests/test-isnanl.h (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/isnanl-nolibm-tests (Depends-on): Add float. + * modules/isnanl-tests (Depends-on): Add float. + + * tests/test-ldexpl.c (zero): Remove variable. + (minus_zero): New variable. + (main): Use minus_zero instead of -zero. + * modules/ldexpl-tests (Depends-on): Add float. + + * tests/test-snprintf-posix.h (zerol): Remove variable. + (minus_zerol): New variable. + (test_function): Use minus_zerol instead of -zerol. + * modules/snprintf-posix-tests (Depends-on): Add float. + * modules/vsnprintf-posix-tests (Depends-on): Add float. + + * tests/test-sprintf-posix.h (zerol): Remove variable. + (minus_zerol): New variable. + (test_function): Use minus_zerol instead of -zerol. + * modules/sprintf-posix-tests (Depends-on): Add float. + * modules/vsprintf-posix-tests (Depends-on): Add float. + + * tests/test-vasnprintf-posix.c (zerol): Remove variable. + (minus_zerol): New variable. + (test_function): Use minus_zerol instead of -zerol. + * modules/vasnprintf-posix-tests (Depends-on): Add float. + + * tests/test-vasprintf-posix.c (zerol): Remove variable. + (minus_zerol): New variable. + (test_function): Use minus_zerol instead of -zerol. + * modules/vasprintf-posix-tests (Depends-on): Add float. + 2008-10-07 Simon Josefsson * MODULES.html.sh (Support for building documentation): Mention diff --git a/m4/signbit.m4 b/m4/signbit.m4 index 17484532b..40ef49c67 100644 --- a/m4/signbit.m4 +++ b/m4/signbit.m4 @@ -1,4 +1,4 @@ -# signbit.m4 serial 3 +# signbit.m4 serial 4 dnl Copyright (C) 2007-2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -123,15 +123,21 @@ AC_DEFUN([gl_SIGNBIT], fi ]) -AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [ +AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[ /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. - So we use -p0f instead. */ + So we use -p0f and -p0d instead. */ float p0f = 0.0f; float m0f = -p0f; double p0d = 0.0; double m0d = -p0d; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use another constant expression instead. */ long double p0l = 0.0L; +#ifdef __hpux +long double m0l = -LDBL_MIN * LDBL_MIN; +#else long double m0l = -p0l; +#endif int main () { { @@ -169,7 +175,7 @@ int main () } return 0; } -]) +]]) AC_DEFUN([gl_FLOAT_SIGN_LOCATION], [ diff --git a/modules/ceill-tests b/modules/ceill-tests index ef0bc8f1f..381b3a5ed 100644 --- a/modules/ceill-tests +++ b/modules/ceill-tests @@ -4,6 +4,7 @@ tests/test-ceill.c Depends-on: fpucw isnanl-nolibm +float configure.ac: diff --git a/modules/floorl-tests b/modules/floorl-tests index 4354d663b..7aef91d24 100644 --- a/modules/floorl-tests +++ b/modules/floorl-tests @@ -4,6 +4,7 @@ tests/test-floorl.c Depends-on: fpucw isnanl-nolibm +float configure.ac: diff --git a/modules/frexpl-tests b/modules/frexpl-tests index 572265d07..e3b2d55c6 100644 --- a/modules/frexpl-tests +++ b/modules/frexpl-tests @@ -5,6 +5,7 @@ Depends-on: fpucw isnanl-nolibm signbit +float configure.ac: diff --git a/modules/isnan-tests b/modules/isnan-tests index f06a78394..d5aff2a91 100644 --- a/modules/isnan-tests +++ b/modules/isnan-tests @@ -3,6 +3,7 @@ tests/test-isnan.c tests/nan.h Depends-on: +float configure.ac: gl_FLOAT_EXPONENT_LOCATION diff --git a/modules/isnanl-nolibm-tests b/modules/isnanl-nolibm-tests index e69130d47..a2e241c96 100644 --- a/modules/isnanl-nolibm-tests +++ b/modules/isnanl-nolibm-tests @@ -3,6 +3,7 @@ tests/test-isnanl-nolibm.c tests/test-isnanl.h Depends-on: +float configure.ac: gl_LONG_DOUBLE_EXPONENT_LOCATION diff --git a/modules/isnanl-tests b/modules/isnanl-tests index 4194c4fc1..7b4086e6e 100644 --- a/modules/isnanl-tests +++ b/modules/isnanl-tests @@ -3,6 +3,7 @@ tests/test-isnanl.c tests/test-isnanl.h Depends-on: +float configure.ac: gl_LONG_DOUBLE_EXPONENT_LOCATION diff --git a/modules/ldexpl-tests b/modules/ldexpl-tests index 7421227ea..6c88bfdac 100644 --- a/modules/ldexpl-tests +++ b/modules/ldexpl-tests @@ -5,6 +5,7 @@ Depends-on: fpucw isnanl-nolibm signbit +float configure.ac: diff --git a/modules/roundl-tests b/modules/roundl-tests index 957c9341d..8e329a5c2 100644 --- a/modules/roundl-tests +++ b/modules/roundl-tests @@ -4,6 +4,7 @@ tests/test-roundl.c Depends-on: fpucw isnanl-nolibm +float configure.ac: diff --git a/modules/signbit-tests b/modules/signbit-tests index 86d66bf82..25851c90d 100644 --- a/modules/signbit-tests +++ b/modules/signbit-tests @@ -5,6 +5,7 @@ m4/exponentd.m4 m4/exponentl.m4 Depends-on: +float configure.ac: AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION]) diff --git a/modules/snprintf-posix-tests b/modules/snprintf-posix-tests index 5af4266ac..f3c08c717 100644 --- a/modules/snprintf-posix-tests +++ b/modules/snprintf-posix-tests @@ -6,6 +6,7 @@ tests/nan.h Depends-on: stdint +float configure.ac: AC_DEFINE([CHECK_SNPRINTF_POSIX], 1, diff --git a/modules/sprintf-posix-tests b/modules/sprintf-posix-tests index cf6720438..7ed1fb5da 100644 --- a/modules/sprintf-posix-tests +++ b/modules/sprintf-posix-tests @@ -5,6 +5,7 @@ tests/nan.h Depends-on: stdint +float configure.ac: diff --git a/modules/truncl-tests b/modules/truncl-tests index aeb76af12..236585475 100644 --- a/modules/truncl-tests +++ b/modules/truncl-tests @@ -4,6 +4,7 @@ tests/test-truncl.c Depends-on: fpucw isnanl-nolibm +float configure.ac: diff --git a/modules/vasnprintf-posix-tests b/modules/vasnprintf-posix-tests index f46fffa19..88e5b46eb 100644 --- a/modules/vasnprintf-posix-tests +++ b/modules/vasnprintf-posix-tests @@ -7,6 +7,7 @@ m4/locale-fr.m4 Depends-on: stdint +float configure.ac: gt_LOCALE_FR diff --git a/modules/vasprintf-posix-tests b/modules/vasprintf-posix-tests index 221ccd109..bf4bd342a 100644 --- a/modules/vasprintf-posix-tests +++ b/modules/vasprintf-posix-tests @@ -4,6 +4,7 @@ tests/nan.h Depends-on: stdint +float configure.ac: diff --git a/modules/vsnprintf-posix-tests b/modules/vsnprintf-posix-tests index 3b45e44cf..f099bd6ce 100644 --- a/modules/vsnprintf-posix-tests +++ b/modules/vsnprintf-posix-tests @@ -6,6 +6,7 @@ tests/nan.h Depends-on: stdint +float configure.ac: AC_DEFINE([CHECK_VSNPRINTF_POSIX], 1, diff --git a/modules/vsprintf-posix-tests b/modules/vsprintf-posix-tests index e48d5aef5..2d052e9ac 100644 --- a/modules/vsprintf-posix-tests +++ b/modules/vsprintf-posix-tests @@ -5,6 +5,7 @@ tests/nan.h Depends-on: stdint +float configure.ac: diff --git a/tests/test-ceill.c b/tests/test-ceill.c index 80ff75ba6..2fa6ca12d 100644 --- a/tests/test-ceill.c +++ b/tests/test-ceill.c @@ -20,6 +20,7 @@ #include +#include #include #include @@ -38,9 +39,9 @@ } \ while (0) -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; int main () @@ -51,7 +52,7 @@ main () /* Zero. */ ASSERT (ceill (0.0L) == 0.0L); - ASSERT (ceill (-zero) == 0.0L); + ASSERT (ceill (minus_zero) == 0.0L); /* Positive numbers. */ ASSERT (ceill (0.3L) == 1.0L); ASSERT (ceill (0.7L) == 1.0L); diff --git a/tests/test-floorl.c b/tests/test-floorl.c index 49cc8c251..f090c9cb2 100644 --- a/tests/test-floorl.c +++ b/tests/test-floorl.c @@ -20,6 +20,7 @@ #include +#include #include #include @@ -38,9 +39,9 @@ } \ while (0) -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; int main () @@ -51,7 +52,7 @@ main () /* Zero. */ ASSERT (floorl (0.0L) == 0.0L); - ASSERT (floorl (-zero) == 0.0L); + ASSERT (floorl (minus_zero) == 0.0L); /* Positive numbers. */ ASSERT (floorl (0.3L) == 0.0L); ASSERT (floorl (0.7L) == 0.0L); diff --git a/tests/test-frexpl.c b/tests/test-frexpl.c index a91afce46..f98bf5131 100644 --- a/tests/test-frexpl.c +++ b/tests/test-frexpl.c @@ -57,9 +57,9 @@ # define MIN_NORMAL_EXP LDBL_MIN_EXP #endif -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; static long double my_ldexp (long double x, int d) @@ -117,7 +117,7 @@ main () { /* Negative zero. */ int exp = -9999; long double mantissa; - x = -zero; + x = minus_zero; mantissa = frexpl (x, &exp); ASSERT (exp == 0); ASSERT (mantissa == x); diff --git a/tests/test-isnan.c b/tests/test-isnan.c index ed3e82751..bb925cb14 100644 --- a/tests/test-isnan.c +++ b/tests/test-isnan.c @@ -48,9 +48,9 @@ float zerof = 0.0f; So we use -zero instead. */ double zerod = 0.0; -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zerol = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zerol instead. */ +long double minus_zerol = -LDBL_MIN * LDBL_MIN; static void test_float (void) @@ -146,7 +146,7 @@ test_long_double (void) ASSERT (!isnan (-2.718e30L)); ASSERT (!isnan (-2.718e-30L)); ASSERT (!isnan (0.0L)); - ASSERT (!isnan (-zerol)); + ASSERT (!isnan (minus_zerol)); /* Infinite values. */ ASSERT (!isnan (1.0L / 0.0L)); ASSERT (!isnan (-1.0L / 0.0L)); diff --git a/tests/test-isnanl.h b/tests/test-isnanl.h index d89719031..13154758b 100644 --- a/tests/test-isnanl.h +++ b/tests/test-isnanl.h @@ -33,9 +33,9 @@ } \ while (0) -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; int main () @@ -53,7 +53,7 @@ main () ASSERT (!isnanl (-2.718e30L)); ASSERT (!isnanl (-2.718e-30L)); ASSERT (!isnanl (0.0L)); - ASSERT (!isnanl (-zero)); + ASSERT (!isnanl (minus_zero)); /* Infinite values. */ ASSERT (!isnanl (1.0L / 0.0L)); ASSERT (!isnanl (-1.0L / 0.0L)); diff --git a/tests/test-ldexpl.c b/tests/test-ldexpl.c index 322c06358..4b5ea3246 100644 --- a/tests/test-ldexpl.c +++ b/tests/test-ldexpl.c @@ -39,9 +39,9 @@ } \ while (0) -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; int main () @@ -82,7 +82,7 @@ main () } { /* Negative zero. */ - x = -zero; + x = minus_zero; y = ldexpl (x, 0); ASSERT (y == x); ASSERT (signbit (x)); y = ldexpl (x, 5); ASSERT (y == x); ASSERT (signbit (x)); y = ldexpl (x, -5); ASSERT (y == x); ASSERT (signbit (x)); diff --git a/tests/test-roundl.c b/tests/test-roundl.c index ae4d3464b..88cb854e7 100644 --- a/tests/test-roundl.c +++ b/tests/test-roundl.c @@ -22,6 +22,7 @@ #include +#include #include #include @@ -40,9 +41,9 @@ } \ while (0) -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; int main () @@ -53,7 +54,7 @@ main () /* Zero. */ ASSERT (roundl (0.0L) == 0.0L); - ASSERT (roundl (-zero) == 0.0L); + ASSERT (roundl (minus_zero) == 0.0L); /* Positive numbers. */ ASSERT (roundl (0.3L) == 0.0L); ASSERT (roundl (0.5L) == 1.0L); diff --git a/tests/test-signbit.c b/tests/test-signbit.c index 95ba61305..94cab3767 100644 --- a/tests/test-signbit.c +++ b/tests/test-signbit.c @@ -20,6 +20,7 @@ #include +#include #include #include #include @@ -40,6 +41,16 @@ float zerof = 0.0f; double zerod = 0.0; long double zerol = 0.0L; +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0f. + So we use -zerof instead. */ + +/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. + So we use -zerod instead. */ + +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zerol instead. */ +long double minus_zerol = -LDBL_MIN * LDBL_MIN; + static void test_signbitf () { @@ -140,10 +151,10 @@ test_signbitl () ASSERT (signbit (-2.718e-30L)); /* Zeros. */ ASSERT (!signbit (0.0L)); - if (1.0L / -zerol < 0) - ASSERT (signbit (-zerol)); + if (1.0L / minus_zerol < 0) + ASSERT (signbit (minus_zerol)); else - ASSERT (!signbit (-zerol)); + ASSERT (!signbit (minus_zerol)); /* Infinite values. */ ASSERT (!signbit (1.0L / 0.0L)); ASSERT (signbit (-1.0L / 0.0L)); diff --git a/tests/test-snprintf-posix.h b/tests/test-snprintf-posix.h index f603133ad..58dfbe287 100644 --- a/tests/test-snprintf-posix.h +++ b/tests/test-snprintf-posix.h @@ -28,12 +28,12 @@ have_minus_zero () } /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. - So we use -zero instead. */ + So we use -zerod instead. */ double zerod = 0.0; -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zerol = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zerol instead. */ +long double minus_zerol = -LDBL_MIN * LDBL_MIN; /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ @@ -444,7 +444,7 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) { /* Negative zero. */ char result[100]; int retval = - my_snprintf (result, sizeof (result), "%La %d", -zerol, 33, 44, 55); + my_snprintf (result, sizeof (result), "%La %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0x0p+0 33") == 0); ASSERT (retval == strlen (result)); @@ -1146,7 +1146,7 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) { /* Negative zero. */ char result[100]; int retval = - my_snprintf (result, sizeof (result), "%Lf %d", -zerol, 33, 44, 55); + my_snprintf (result, sizeof (result), "%Lf %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); @@ -1513,7 +1513,7 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) { /* Negative zero. */ char result[100]; int retval = - my_snprintf (result, sizeof (result), "%LF %d", -zerol, 33, 44, 55); + my_snprintf (result, sizeof (result), "%LF %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); @@ -2015,7 +2015,7 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) { /* Negative zero. */ char result[100]; int retval = - my_snprintf (result, sizeof (result), "%Le %d", -zerol, 33, 44, 55); + my_snprintf (result, sizeof (result), "%Le %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000e+00 33") == 0 || strcmp (result, "-0.000000e+000 33") == 0); @@ -2668,7 +2668,7 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) { /* Negative zero. */ char result[100]; int retval = - my_snprintf (result, sizeof (result), "%Lg %d", -zerol, 33, 44, 55); + my_snprintf (result, sizeof (result), "%Lg %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0 33") == 0); ASSERT (retval == strlen (result)); diff --git a/tests/test-sprintf-posix.h b/tests/test-sprintf-posix.h index ce87a3a1a..3caf49fe0 100644 --- a/tests/test-sprintf-posix.h +++ b/tests/test-sprintf-posix.h @@ -28,12 +28,12 @@ have_minus_zero () } /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. - So we use -zero instead. */ + So we use -zerod instead. */ double zerod = 0.0; -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zerol = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zerol instead. */ +long double minus_zerol = -LDBL_MIN * LDBL_MIN; /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ @@ -430,7 +430,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) { /* Negative zero. */ char result[1000]; int retval = - my_sprintf (result, "%La %d", -zerol, 33, 44, 55); + my_sprintf (result, "%La %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0x0p+0 33") == 0); ASSERT (retval == strlen (result)); @@ -1132,7 +1132,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) { /* Negative zero. */ char result[1000]; int retval = - my_sprintf (result, "%Lf %d", -zerol, 33, 44, 55); + my_sprintf (result, "%Lf %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); @@ -1499,7 +1499,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) { /* Negative zero. */ char result[1000]; int retval = - my_sprintf (result, "%LF %d", -zerol, 33, 44, 55); + my_sprintf (result, "%LF %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); @@ -2001,7 +2001,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) { /* Negative zero. */ char result[1000]; int retval = - my_sprintf (result, "%Le %d", -zerol, 33, 44, 55); + my_sprintf (result, "%Le %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000e+00 33") == 0 || strcmp (result, "-0.000000e+000 33") == 0); @@ -2654,7 +2654,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) { /* Negative zero. */ char result[1000]; int retval = - my_sprintf (result, "%Lg %d", -zerol, 33, 44, 55); + my_sprintf (result, "%Lg %d", minus_zerol, 33, 44, 55); if (have_minus_zero ()) ASSERT (strcmp (result, "-0 33") == 0); ASSERT (retval == strlen (result)); diff --git a/tests/test-truncl.c b/tests/test-truncl.c index 3ea856a99..384300fc6 100644 --- a/tests/test-truncl.c +++ b/tests/test-truncl.c @@ -20,6 +20,7 @@ #include +#include #include #include @@ -38,9 +39,9 @@ } \ while (0) -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zero = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zero instead. */ +long double minus_zero = -LDBL_MIN * LDBL_MIN; int main () @@ -51,7 +52,7 @@ main () /* Zero. */ ASSERT (truncl (0.0L) == 0.0L); - ASSERT (truncl (-zero) == 0.0L); + ASSERT (truncl (minus_zero) == 0.0L); /* Positive numbers. */ ASSERT (truncl (0.3L) == 0.0L); ASSERT (truncl (0.7L) == 0.0L); diff --git a/tests/test-vasnprintf-posix.c b/tests/test-vasnprintf-posix.c index 1a6054a0b..aa537fbd7 100644 --- a/tests/test-vasnprintf-posix.c +++ b/tests/test-vasnprintf-posix.c @@ -53,12 +53,12 @@ have_minus_zero () } /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. - So we use -zero instead. */ + So we use -zerod instead. */ double zerod = 0.0; -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zerol = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zerol instead. */ +long double minus_zerol = -LDBL_MIN * LDBL_MIN; /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ @@ -539,7 +539,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative zero. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%La %d", -zerol, 33, 44, 55); + my_asnprintf (NULL, &length, "%La %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0x0p+0 33") == 0); @@ -1351,7 +1351,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative zero. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Lf %d", -zerol, 33, 44, 55); + my_asnprintf (NULL, &length, "%Lf %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); @@ -1798,7 +1798,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative zero. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%LF %d", -zerol, 33, 44, 55); + my_asnprintf (NULL, &length, "%LF %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); @@ -2372,7 +2372,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative zero. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Le %d", -zerol, 33, 44, 55); + my_asnprintf (NULL, &length, "%Le %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000e+00 33") == 0 @@ -3127,7 +3127,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative zero. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Lg %d", -zerol, 33, 44, 55); + my_asnprintf (NULL, &length, "%Lg %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0 33") == 0); diff --git a/tests/test-vasprintf-posix.c b/tests/test-vasprintf-posix.c index e0465893a..703b24f18 100644 --- a/tests/test-vasprintf-posix.c +++ b/tests/test-vasprintf-posix.c @@ -53,12 +53,12 @@ have_minus_zero () } /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. - So we use -zero instead. */ + So we use -zerod instead. */ double zerod = 0.0; -/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0L. - So we use -zero instead. */ -long double zerol = 0.0L; +/* On HP-UX 10.20, negating 0.0L does not yield -0.0L. + So we use minus_zerol instead. */ +long double minus_zerol = -LDBL_MIN * LDBL_MIN; /* Representation of an 80-bit 'long double' as an initializer for a sequence of 'unsigned int' words. */ @@ -520,7 +520,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* Negative zero. */ char *result; int retval = - my_asprintf (&result, "%La %d", -zerol, 33, 44, 55); + my_asprintf (&result, "%La %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0x0p+0 33") == 0); @@ -1332,7 +1332,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* Negative zero. */ char *result; int retval = - my_asprintf (&result, "%Lf %d", -zerol, 33, 44, 55); + my_asprintf (&result, "%Lf %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); @@ -1779,7 +1779,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* Negative zero. */ char *result; int retval = - my_asprintf (&result, "%LF %d", -zerol, 33, 44, 55); + my_asprintf (&result, "%LF %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000 33") == 0); @@ -2353,7 +2353,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* Negative zero. */ char *result; int retval = - my_asprintf (&result, "%Le %d", -zerol, 33, 44, 55); + my_asprintf (&result, "%Le %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0.000000e+00 33") == 0 @@ -3108,7 +3108,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* Negative zero. */ char *result; int retval = - my_asprintf (&result, "%Lg %d", -zerol, 33, 44, 55); + my_asprintf (&result, "%Lg %d", minus_zerol, 33, 44, 55); ASSERT (result != NULL); if (have_minus_zero ()) ASSERT (strcmp (result, "-0 33") == 0); -- 2.11.0