
On Wed, Apr 18, 2007 at 12:34:58PM +1000, Duncan Coutts wrote:
We'd like to use IEEE format as the default Data.Binary serialisation format for Haskell's Float and Double type, the only thing that makes this tricky is doing it portably and efficiently.
You should note that your current method of serializing Doubles (encodeFloat/decodeFloat) isn't portable either as the results of these functions depend on floatRadix. So using some method that depends on IEEE representation isn't much worse (might actually be better as you'd get an error at runtime rather than writing data that could potentially be read back as garbage). I think the only way to do this 100% portably is to encode it as a Rational before serializing. Also even if someone were to bother to write the code to convert from an arbitrary floating point rep to IEEE for serialization you'd run the risk losing information if the hosts floating point rep was more accurate that IEEE FP. It seems like it might come down to making a choice between 100% portable but incompatable with the default serialization mechanisms in other languages or non-portable (but ok for just about every popular arch used today) and compatable with other languages.
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. -Brian