
On Sun, Apr 22, 2007 at 10:43:23PM +0100, Ian Lynagh wrote:
On Tue, Apr 17, 2007 at 11:42:40PM -0400, Brian Alliet wrote:
Perhaps we just don't care about ARM or other arches where GHC runs that
Are there really any architectures supported by GHC that don't use IEEE floating point? If so GHC.Float is wrong as isIEEE is always true.
The one most likely to be non-IEEE is ARM, which has a middle-endian representation; to make it explicit, it's the middle case here (FLOAT_WORDS_BIGENDIAN but not WORDS_BIGENDIAN):
#if WORDS_BIGENDIAN unsigned int negative:1; unsigned int exponent:11; unsigned int mantissa0:20; unsigned int mantissa1:32; #else #if FLOAT_WORDS_BIGENDIAN unsigned int mantissa0:20; unsigned int exponent:11; unsigned int negative:1; unsigned int mantissa1:32; #else unsigned int mantissa1:32; unsigned int mantissa0:20; unsigned int exponent:11; unsigned int negative:1; #endif #endif
Does anyone know if that makes it non-IEEE?
AIUI, ieee754 talks about high bits and low bits, not first or last bytes, which means that it is endianness independant. this also means that ieee754 values are endian dependant - we'll have to swap them into network byte order before saving, if we're on a le host. Stefan