]> Savannah Git Hosting - gnulib.git/commitdiff
ilogb: Fix test failures on AIX 7.1 in 64-bit mode.
authorBruno Haible <bruno@clisp.org>
Wed, 6 Jan 2021 10:06:25 +0000 (11:06 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 6 Jan 2021 10:11:52 +0000 (11:11 +0100)
* m4/ilogb.m4 (gl_FUNC_ILOGB_WORKS): Test also some denormalized
argument.
* doc/posix-functions/ilogb.texi: Mention the AIX bug.

ChangeLog
doc/posix-functions/ilogb.texi
m4/ilogb.m4

index a86fe7e5aa09269dc70ad4b4303e7f38474736e9..2adaf5a69688e1f89accfbf0ef97bb3d2a3a65aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2021-01-06  Bruno Haible  <bruno@clisp.org>
+
+       ilogb: Fix test failures on AIX 7.1 in 64-bit mode.
+       * m4/ilogb.m4 (gl_FUNC_ILOGB_WORKS): Test also some denormalized
+       argument.
+       * doc/posix-functions/ilogb.texi: Mention the AIX bug.
+
 2021-01-05  Bruno Haible  <bruno@clisp.org>
 
        fclose: Fix test failure on AIX 7.2.
index 1b266766fc2272823405be6a2dc94256552b633c..edcba7c6c88f2bea01dab941353f3ad7177f01a4 100644 (file)
@@ -15,6 +15,9 @@ Minix 3.1.8, MSVC 9.
 This function returns a wrong result for a zero argument on some platforms:
 OpenBSD 6.7, AIX 5.1.
 @item
+This function returns a wrong result for denormalized arguments on some platforms:
+AIX 7.1 64-bit.
+@item
 This function returns a wrong result for an infinite argument on some platforms:
 NetBSD 7.1, OpenBSD 6.7.
 @item
index 29e472ccd15799166ddc2b299c857ea2e0d24e9c..54043906d0c278276b38f5c62f712f2473e52d66 100644 (file)
@@ -1,4 +1,4 @@
-# ilogb.m4 serial 6
+# ilogb.m4 serial 7
 dnl Copyright (C) 2010-2021 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -44,6 +44,7 @@ AC_DEFUN([gl_FUNC_ILOGB],
 
 dnl Test whether ilogb() works.
 dnl On OpenBSD 6.7, AIX 5.1, ilogb(0.0) is wrong.
+dnl On AIX 7.1 in 64-bit mode, ilogb(2^(DBL_MIN_EXP-1)) is wrong.
 dnl On NetBSD 7.1, OpenBSD 6.7, ilogb(Infinity) is wrong.
 dnl On NetBSD 7.1, OpenBSD 6.7, ilogb(NaN) is wrong.
 AC_DEFUN([gl_FUNC_ILOGB_WORKS],
@@ -54,6 +55,7 @@ AC_DEFUN([gl_FUNC_ILOGB_WORKS],
     [
       AC_RUN_IFELSE(
         [AC_LANG_SOURCE([[
+#include <float.h>
 #include <limits.h>
 #include <math.h>
 /* Provide FP_ILOGB0, FP_ILOGBNAN, like in math.in.h.  */
@@ -93,17 +95,26 @@ int main (int argc, char *argv[])
     if (my_ilogb (x) != FP_ILOGB0)
       result |= 1;
   }
+  /* This test fails on AIX 7.1 in 64-bit mode.  */
+  {
+    int i;
+    x = 0.5;
+    for (i = DBL_MIN_EXP - 1; i < 0; i++)
+      x = x * 0.5;
+    if (x > 0.0 && my_ilogb (x) != DBL_MIN_EXP - 2)
+      result |= 2;
+  }
   /* This test fails on NetBSD 7.1, OpenBSD 6.7.  */
   {
     x = 1.0 / zero;
     if (my_ilogb (x) != INT_MAX)
-      result |= 2;
+      result |= 4;
   }
   /* This test fails on NetBSD 7.1, OpenBSD 6.7.  */
   {
     x = zero / zero;
     if (my_ilogb (x) != FP_ILOGBNAN)
-      result |= 4;
+      result |= 8;
   }
   return result;
 }