Paolo Bonzini wrote: > > due to the failure of this assertion: > > > > ASSERT (LDBL_MIN_EXP<= DBL_MIN_EXP); > > > > It fails because of these numbers: > > > > $ :|gcc -dD -E -include stddef.h -|grep -E 'L?DBL_MIN_EXP' > > #define __DBL_MIN_EXP__ (-1021) > > #define __LDBL_MIN_EXP__ (-968) > > It looks like the right test would be > > ASSERT (LDBL_MIN_EXP - LDBL_MANT_DIG <= DBL_MIN_EXP - DBL_MANT_DIG);
> This would be enough to assert that a double can be assigned to a long > double. [without loss of accuracy]. Indeed, thanks Paolo for the nice fix. I've applied it for you, like this: 2011-11-29 Paolo Bonzini <bonz...@gnu.org> float tests: Correct and re-enable assertion about LDBL_MIN_EXP. * tests/test-float.c (test_long_double): Correct and re-enable the assertion about LDBL_MIN_EXP that was disabled on 2011-08-31. --- tests/test-float.c.orig Wed Nov 30 01:58:31 2011 +++ tests/test-float.c Wed Nov 30 01:52:03 2011 @@ -298,14 +298,7 @@ /* Check that 'long double' is at least as wide as 'double'. */ ASSERT (LDBL_MANT_DIG >= DBL_MANT_DIG); - - /* Normally, we would also assert this: - ASSERT (LDBL_MIN_EXP <= DBL_MIN_EXP); - but at least on powerpc64 with gcc-4.4.4, it would fail: - $ :|gcc -dD -E -include stddef.h -|grep -E 'L?DBL_MIN_EXP' - #define __DBL_MIN_EXP__ (-1021) - #define __LDBL_MIN_EXP__ (-968) - */ + ASSERT (LDBL_MIN_EXP - LDBL_MANT_DIG <= DBL_MIN_EXP - DBL_MANT_DIG); ASSERT (LDBL_MAX_EXP >= DBL_MAX_EXP); /* Check the value of LDBL_DIG. */ -- In memoriam Willy Cohn <http://de.wikipedia.org/wiki/Willy_Cohn>