On Mon, Jul 07, 2003 at 12:01:09PM +0200, Jerzy Karczmarczuk wrote: > This is less a bug than a Nessie monster which haunts Hugs > some centuries already, and on Internet the issue has been > discussed at least 4 times. The old, experimental Gofer > Prelude numeric functions were sometimes abominable, since > Mark Jones concentrated on other things, and nobody really > complained, people were busy with other stuff as well. > > But I can't understand why this continues until now. The > obvious technique to convert floats to rationals is the > continued fraction expansion which gives the simplified > answer fast.
That would be because resources for Hugs maintenance are extremely limited, and expertise in numerical methods even more lacking. (e.g.: which approximant in the series should be chosen?) I think that if someone who knows about these things submitted a patch, and it didn't increase the size of the Prelude (by much), it would be gratefully accepted. (That's probably true of all of Hugs.) However, as far as I know, the outstanding numeric bugs in the Prelude are - floating point literals of type Ratio t (mostly fixed in CVS), and - the show instances for Float and Double (because the correct Numeric.showFloat would make the Prelude too large) > I don't understand the remark that the internal arithmetic is > binary. Sure, it is, so what? In the case of 0.1::Rational, it shouldn't be using floating point. The Report says this means fromRational (1%10), i.e. 1%10. If Hugs implemented the Haskell definition directly, the question of approximation wouldn't arise. GHC does it that way, and usually removes the fromRational at compile time, but Hugs isn't that clever. _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe