
I am getting a bit worried about the usability of Haskell for numerical work. The Haskell 98 report states that floating literals are represented as a conversion from Rational, which means that the literal is first converted to a Rational. I can't find anything in the Haskell report that states how this conversion should take place, and to what precision it should be correct. It could be made correct to any precision as Rationals are represented using Integers, but at least Hugs doesn't do that. By experimenting with some particular cases, I found that its internal Rational representation is even less accurate than the precision of Double permits, which means that it is impossible to specify literals to the full precision of Double. GHC behaved fine in my tests. But what can I safely assume from a Haskell implementation? Konrad.

On 2003-08-22 at 18:39+0200 Konrad Hinsen wrote:
I am getting a bit worried about the usability of Haskell for numerical work. The Haskell 98 report states that floating literals are represented as a conversion from Rational, which means that the literal is first converted to a Rational. I can't find anything in the Haskell report that states how this conversion should take place, and to what precision it should be correct. It could be made correct to any precision as Rationals are represented using Integers, but at least Hugs doesn't do that. By experimenting with some particular cases, I found that its internal Rational representation is even less accurate than the precision of Double permits, which means that it is impossible to specify literals to the full precision of Double. GHC behaved fine in my tests. But what can I safely assume from a Haskell implementation?
You can safely assume that (as it says in its documentation) Hugs is not suitable for numeric work. "proper"¹ Haskell implementations ought to use conversions that give the best possible accuracy for the final type. Jón [1] not that Hugs isn't proper, but it's just not designed for that. -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk
participants (2)
-
Jon Fairbairn
-
Konrad Hinsen