Mercurial > hg > octave-lyh > gnulib-hg
changeset 8862:5900f6987283
Detect broken frexpl on BeOS.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 20 May 2007 10:26:34 +0000 |
parents | 814d6b735b16 |
children | 53f97daf8db3 |
files | ChangeLog doc/functions/frexpl.texi m4/frexpl.m4 |
diffstat | 3 files changed, 26 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-05-20 Bruno Haible <bruno@clisp.org> + + * 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 <jim@meyering.net> * NEWS: Mention the incompatible change (s/futimens/gl_futimens/)
--- a/doc/functions/frexpl.texi +++ b/doc/functions/frexpl.texi @@ -13,7 +13,7 @@ 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.
--- 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 @@ 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 @@ 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 <float.h> 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 @@ 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 ]) ])