Folks,

Here's an attempt at rationalToRealFloat (formerly known as
rationalToFloating):

rationalToRealFloat:: (RealFloat a) => Rational -> a
rationalToRealFloat x = x'
        where x'    = f e
              f e   = if e' == e then y else f e'
                      where y      = encodeFloat (round (x * (1 % b::e))) e
                            (_,e') = decodeFloat y
              (_,e) = decodeFloat (fromInteger (numerator x) `asTypeOf` x'
                                        / fromInteger (denominator x))
              b     = floatRadix x'


Again, if anybody has a better idea, I would certainly like to hear about it.

Thanks.

--Joe

Reply via email to