X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FRatio.hs;h=22f3abeeeff8661ee1dc5a620db4d98e9abc1fff;hb=88b22778e7c06909683b493e037605a249ae37ad;hp=42426ce7036bbadc582deb615fc4a1cfe4fa510e;hpb=7f1f4e7a695c402ddd3a1dc2cc7114e649a78ebc;p=ghc-base.git diff --git a/Data/Ratio.hs b/Data/Ratio.hs index 42426ce..22f3abe 100644 --- a/Data/Ratio.hs +++ b/Data/Ratio.hs @@ -1,15 +1,13 @@ ----------------------------------------------------------------------------- --- +-- | -- Module : Data.Ratio -- Copyright : (c) The University of Glasgow 2001 --- License : BSD-style (see the file libraries/core/LICENSE) +-- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org --- Stability : provisional +-- Stability : stable -- Portability : portable -- --- $Id: Ratio.hs,v 1.1 2001/06/28 14:15:02 simonmar Exp $ --- -- Standard functions on rational numbers -- ----------------------------------------------------------------------------- @@ -41,14 +39,29 @@ import Prelude import GHC.Real -- The basic defns for Ratio #endif +#ifdef __HUGS__ +import Hugs.Prelude(Ratio(..), (%), numerator, denominator) +#endif + +#ifdef __NHC__ +import Ratio (Ratio(..), (%), numerator, denominator, approxRational) +#else + -- ----------------------------------------------------------------------------- -- approxRational --- @approxRational@, applied to two real fractional numbers x and epsilon, --- returns the simplest rational number within epsilon of x. A rational --- number n%d in reduced form is said to be simpler than another n'%d' if --- abs n <= abs n' && d <= d'. Any real interval contains a unique --- simplest rational; here, for simplicity, we assume a closed rational +-- | 'approxRational', applied to two real fractional numbers @x@ and @epsilon@, +-- returns the simplest rational number within @epsilon@ of @x@. +-- A rational number @y@ is said to be /simpler/ than another @y'@ if +-- +-- * @'abs' ('numerator' y) <= 'abs' ('numerator' y')@, and +-- +-- * @'denominator' y <= 'denominator' y'@. +-- +-- Any real interval contains a unique simplest rational; +-- in particular, note that @0\/1@ is the simplest rational of all. + +-- Implementation details: Here, for simplicity, we assume a closed rational -- interval. If such an interval includes at least one whole number, then -- the simplest rational is the absolutely least whole number. Otherwise, -- the bounds are of the form q%1 + r%d and q%1 + r'%d', where abs r < d @@ -78,4 +91,4 @@ approxRational rat eps = simplest (rat-eps) (rat+eps) nd'' = simplest' d' r' d r n'' = numerator nd'' d'' = denominator nd'' - +#endif