From: Daniel Fischer Date: Tue, 19 Oct 2010 01:01:09 +0000 (+0000) Subject: FIX #4335 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=af97ffa5afc916cbe7fde22de3e2738458d85629;p=ghc-base.git FIX #4335 fromRational :: Rational -> Ratio a produced invalid results for fixed-width types a. Reduce the fraction to avoid that. --- diff --git a/GHC/Real.lhs b/GHC/Real.lhs index 8b4615b..b3316d1 100644 --- a/GHC/Real.lhs +++ b/GHC/Real.lhs @@ -328,6 +328,7 @@ instance (Integral a) => Num (Ratio a) where signum (x:%_) = signum x :% 1 fromInteger x = fromInteger x :% 1 +{-# RULES "fromRational/id" fromRational = id :: Rational -> Rational #-} instance (Integral a) => Fractional (Ratio a) where {-# SPECIALIZE instance Fractional Rational #-} (x:%y) / (x':%y') = (x*y') % (y*x') @@ -335,7 +336,7 @@ instance (Integral a) => Fractional (Ratio a) where recip (x:%y) | x < 0 = negate y :% negate x | otherwise = y :% x - fromRational (x:%y) = fromInteger x :% fromInteger y + fromRational (x:%y) = fromInteger x % fromInteger y instance (Integral a) => Real (Ratio a) where {-# SPECIALIZE instance Real Rational #-}