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.  */
   {