From d34f5dcb1a2a8565ea63faab8d2a7456289b6cf9 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 4 Oct 2023 10:20:22 +0200 Subject: [PATCH] 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. --- ChangeLog | 6 ++++++ tests/test-signbit.c | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 02531f08f6..29d411c525 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2023-10-04 Bruno Haible + + 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 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. */ { -- 2.39.5