X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Ffrexp.m4;h=8e93322352d67cad795519065e941ee1f2452b16;hb=f27d815b351a4f960aad64b96b5331bcbf8799a0;hp=b0f0d73258eb69a863e403bad6453b82cd0a7252;hpb=ffa7dae3061b0b0870da00f1f88d44e61cd4c3e2;p=gnulib.git diff --git a/m4/frexp.m4 b/m4/frexp.m4 index b0f0d7325..8e9332235 100644 --- a/m4/frexp.m4 +++ b/m4/frexp.m4 @@ -1,4 +1,4 @@ -# frexp.m4 serial 1 +# frexp.m4 serial 3 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, @@ -12,7 +12,7 @@ AC_DEFUN([gl_FUNC_FREXP], [gl_cv_func_frexp_no_libm], [ AC_TRY_LINK([#include - long double x;], + double x;], [int e; return frexp (x, &e) > 0;], [gl_cv_func_frexp_no_libm=yes], [gl_cv_func_frexp_no_libm=no]) @@ -24,7 +24,7 @@ AC_DEFUN([gl_FUNC_FREXP], save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_TRY_LINK([#include - long double x;], + double x;], [int e; return frexp (x, &e) > 0;], [gl_cv_func_frexp_in_libm=yes], [gl_cv_func_frexp_in_libm=no]) @@ -53,10 +53,11 @@ AC_DEFUN([gl_FUNC_FREXP], else AC_LIBOBJ([frexp]) fi + AC_SUBST([FREXP_LIBM]) ]) -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 +71,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 +83,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 ]) ])