From 98a6699683cd0de1fb332916242aa34d83639b88 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 20 May 2007 10:26:34 +0000 Subject: [PATCH] Detect broken frexpl on BeOS. --- ChangeLog | 6 ++++++ doc/functions/frexpl.texi | 2 +- m4/frexpl.m4 | 24 +++++++++++++++++++----- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index a4b17c7032..555ab92742 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-05-20 Bruno Haible + + * m4/frexpl.m4 (gl_FUNC_FREXPL_WORKS): Add test for large finite + numbers that fails on BeOS. + * doc/functions/frexpl.texi: Update. + 2007-05-20 Jim Meyering * NEWS: Mention the incompatible change (s/futimens/gl_futimens/) diff --git a/doc/functions/frexpl.texi b/doc/functions/frexpl.texi index 790c54b19c..e2f287f4f2 100644 --- a/doc/functions/frexpl.texi +++ b/doc/functions/frexpl.texi @@ -13,7 +13,7 @@ This function is missing on some platforms: FreeBSD 5.2.1, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, Interix 3.5. @item This function does not work on finite numbers on some platforms: -AIX 5.1. +AIX 5.1, BeOS. @item This function does not work on infinite numbers on some platforms: IRIX 6.5. diff --git a/m4/frexpl.m4 b/m4/frexpl.m4 index db4db2a5e7..dad5dd721b 100644 --- a/m4/frexpl.m4 +++ b/m4/frexpl.m4 @@ -1,4 +1,4 @@ -# frexpl.m4 serial 4 +# frexpl.m4 serial 5 dnl Copyright (C) 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -95,8 +95,8 @@ AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM], fi ]) -dnl Test whether frexpl() works on finite numbers (this fails on AIX 5.1) and -dnl also on infinite numbers (this fails e.g. on IRIX 6.5). +dnl Test whether frexpl() works on finite numbers (this fails on AIX 5.1 and +dnl on BeOS) and also on infinite numbers (this fails e.g. on IRIX 6.5). AC_DEFUN([gl_FUNC_FREXPL_WORKS], [ AC_REQUIRE([AC_PROG_CC]) @@ -117,6 +117,20 @@ int main() if (exp != 5) return 1; } + /* Test on large finite numbers. This fails on BeOS at i = 16322, while + LDBL_MAX_EXP = 16384. + In the loop end test, we test x against Infinity, rather than comparing + i with LDBL_MAX_EXP, because BeOS has a wrong LDBL_MAX_EXP. */ + { + int i; + for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L) + { + int exp = -9999; + frexpl (x, &exp); + if (exp != i) + return 1; + } + } /* Test on infinite numbers. */ x = 1.0L / 0.0L; { @@ -128,8 +142,8 @@ int main() return 0; }], [gl_cv_func_frexpl_works=yes], [gl_cv_func_frexpl_works=no], [case "$host_os" in - aix* | irix*) gl_cv_func_frexpl_works="guessing no";; - *) gl_cv_func_frexpl_works="guessing yes";; + aix* | beos* | irix*) gl_cv_func_frexpl_works="guessing no";; + *) gl_cv_func_frexpl_works="guessing yes";; esac ]) ]) -- 2.30.2