Hi Bruno, On 25 Jan 2008, at 10:50, Bruno Haible wrote:
Gary V. Vaughan wrote:Can you run the test program mentioned in [2]?Sure: $ gcc -o testfrexpl testfrexpl.c $ ./testfrexpl -16384 0.5...checking whether frexpl works... yesSorry, this makes no sense to me. The testfrexpl.c test is nearly literallycontained in the "whether frexpl works" check.
:-( Well, let's see if we can figure out what's going wrong...
Can you verify that the configure file, when doing the "whether frexpl works"check, runs a program that includes the /* Test on denormalized numbers. */ section?
It doesn't. That section does appear in configure, but only for the frexp test:
$as_echo_n "checking whether frexp works... " >&6; } if test "${gl_cv_func_frexp_works+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then case "$host_os" innetbsd* | irix* | mingw*) gl_cv_func_frexp_works="guessing no";; *) gl_cv_func_frexp_works="guessing yes";;
esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <float.h> #include <math.h> 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) { int exp; double y = frexp (x, &exp);/* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
On NetBSD: y = 0.75. Correct: y = 0.5. */ 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; } _ACEOF By comparison the expanded frexpl test in configure is: $as_echo_n "checking whether frexpl works... " >&6; } if test "${gl_cv_func_frexpl_works+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then case "$host_os" in aix* | beos* | darwin* | irix* | mingw* | pw*) gl_cv_func_frexpl_works="guessing no";; *) gl_cv_func_frexpl_works="guessing yes";; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <math.h> extern long double frexpl (long double, int *); int main() { volatile long double x; /* Test on finite numbers that fails on AIX 5.1. */ x = 16.0L; { int exp = -9999; frexpl (x, &exp); if (exp != 5) return 1; }/* Test on finite numbers that fails on MacOS X 10.4, because its frexpl function returns an invalid (incorrectly normalized) value: it returns
y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 } but the correct result is0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */
x = 1.01L; { int exp = -9999; long double y = frexpl (x, &exp); if (!(exp == 1 && y == 0.505L)) 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; { int exp; long double y = frexpl (x, &exp); if (y != x) return 1; } return 0; } _ACEOF
If yes, then it's time to compare the gcc option with which one and theother programs were compiled. $ grep CC config.status $ grep CFLAGS config.status $ grep CPPFLAGS config.status
I changed the regexps slightly to cut down on noise: $ grep '^CC=' config.status CC='gcc -std=gnu99' CC=$lt_compiler $ grep ^CFLAGS= config.status CFLAGS='-O2 -pipe' $ grep CPPFLAGS config.status S["CPPFLAGS"]=""
I believe that is 64 bit mode, unless I'm just falling for the hype...Belief is not something we can build on here. Can you test it, please? $ touch empty.c $ gcc -E -dM empty.c | grep 86
My bad, I didn't know how to check. This confirms what Peter said about my being wrong, and Leopard using 32 bit compilation by default: $ gcc -E -dM empty.c | grep 86 #define __DBL_MAX__ 1.7976931348623157e+308 #define __i386 1 #define i386 1 #define __i386__ 1
Bruno
Cheers, Gary -- ())_. Email me: [EMAIL PROTECTED] ( '/ Read my blog: http://blog.azazil.net / )= ...and my book: http://sources.redhat.com/autobook `(_~)_
PGP.sig
Description: This is a digitally signed message part