From: Bruno Haible <bruno@clisp.org> Date: Wed, 4 Oct 2023 08:20:22 +0000 (+0200) Subject: signbit tests: Strengthen tests. X-Git-Tag: v1.0~739 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d34f5dcb1a2a8565ea63faab8d2a7456289b6cf9;p=gnulib.git signbit tests: Strengthen tests. * tests/test-signbit.c (test_signbitf, test_signbitd, test_signbitl): Test the sign bit both of a NaN value and of its negative. --- diff --git a/ChangeLog b/ChangeLog index 02531f08f6..29d411c525 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2023-10-04 Bruno Haible <bruno@clisp.org> + + signbit tests: Strengthen tests. + * tests/test-signbit.c (test_signbitf, test_signbitd, test_signbitl): + Test the sign bit both of a NaN value and of its negative. + 2023-10-03 Bruno Haible <bruno@clisp.org> doc: Document portability of __VA_ARGS__. diff --git a/tests/test-signbit.c b/tests/test-signbit.c index 49083c2c9a..3d2fae405b 100644 --- a/tests/test-signbit.c +++ b/tests/test-signbit.c @@ -56,7 +56,17 @@ test_signbitf () ASSERT (!signbit (Infinityf ())); ASSERT (signbit (- Infinityf ())); /* Quiet NaN. */ - (void) signbit (zerof / zerof); + { + float nan = zerof / zerof; + float pos_nan; + float neg_nan; + if (signbit (nan)) + pos_nan = - nan, neg_nan = nan; + else + pos_nan = nan, neg_nan = - nan; + ASSERT (!signbit (pos_nan)); + ASSERT (signbit (neg_nan)); + } #if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT /* Signalling NaN. */ { @@ -101,7 +111,17 @@ test_signbitd () ASSERT (!signbit (Infinityd ())); ASSERT (signbit (- Infinityd ())); /* Quiet NaN. */ - (void) signbit (zerod / zerod); + { + double nan = zerod / zerod; + double pos_nan; + double neg_nan; + if (signbit (nan)) + pos_nan = - nan, neg_nan = nan; + else + pos_nan = nan, neg_nan = - nan; + ASSERT (!signbit (pos_nan)); + ASSERT (signbit (neg_nan)); + } #if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT /* Signalling NaN. */ { @@ -144,7 +164,17 @@ test_signbitl () ASSERT (!signbit (Infinityl ())); ASSERT (signbit (- Infinityl ())); /* Quiet NaN. */ - (void) signbit (zerol / zerol); + { + long double nan = zerol / zerol; + long double pos_nan; + long double neg_nan; + if (signbit (nan)) + pos_nan = - nan, neg_nan = nan; + else + pos_nan = nan, neg_nan = - nan; + ASSERT (!signbit (pos_nan)); + ASSERT (signbit (neg_nan)); + } #if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT /* Signalling NaN. */ {