bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

signbit tests: Strengthen tests


From: Bruno Haible
Subject: signbit tests: Strengthen tests
Date: Wed, 04 Oct 2023 10:22:50 +0200

The new tests/totalorder.c has a nice trick for producing NaNs with given
sign bit. Let me use this trick also in the 'signbit' tests:


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.

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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]