From a9a762b14f09234a9661f65e9fbe7e8c950d5bd0 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 25 Mar 2007 21:25:35 +0000 Subject: [PATCH] Check against a bug of frexp() on IRIX 6.5. --- ChangeLog | 5 +++++ m4/frexp.m4 | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 20ffd3fb22..532ae780aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-03-25 Bruno Haible + + * m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Add check whether frexp(inf) + returns inf. Needed on IRIX 6.5. + 2007-03-25 Bruno Haible * tests/test-frexpl.c: Include isnanl-nolibm.h. diff --git a/m4/frexp.m4 b/m4/frexp.m4 index 60d897b89c..88d5be6e30 100644 --- a/m4/frexp.m4 +++ b/m4/frexp.m4 @@ -1,4 +1,4 @@ -# frexp.m4 serial 1 +# frexp.m4 serial 2 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, @@ -55,8 +55,8 @@ AC_DEFUN([gl_FUNC_FREXP], fi ]) -dnl Test whether frexp() works also on denormalized numbers. -dnl This test fails e.g. on NetBSD. +dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on +dnl NetBSD 3.0) and on infinite numbers (this fails e.g. on IRIX 6.5). AC_DEFUN([gl_FUNC_FREXP_WORKS], [ AC_REQUIRE([AC_PROG_CC]) @@ -70,6 +70,7 @@ int main() { int i; volatile double x; + /* Test on denormalized numbers. */ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5) ; if (x > 0.0) @@ -81,11 +82,19 @@ int main() if (y != 0.5) return 1; } + /* Test on infinite numbers. */ + { + x = 1.0 / 0.0; + int exp; + double y = frexp (x, &exp); + if (y != x) + return 1; + } return 0; }], [gl_cv_func_frexp_works=yes], [gl_cv_func_frexp_works=no], [case "$host_os" in - netbsd*) gl_cv_func_frexp_works="guessing no";; - *) gl_cv_func_frexp_works="guessing yes";; + netbsd* | irix*) gl_cv_func_frexp_works="guessing no";; + *) gl_cv_func_frexp_works="guessing yes";; esac ]) ]) -- 2.30.2