base-4.10.1.0: Basic libraries

Data.Ratio

Description

Standard functions on rational numbers

Synopsis

# Documentation

data Ratio a #

Rational numbers, with numerator and denominator of some Integral type.

Instances

 Integral a => Enum (Ratio a) # Since: 2.0.1 Methodssucc :: Ratio a -> Ratio a #pred :: Ratio a -> Ratio a #toEnum :: Int -> Ratio a #fromEnum :: Ratio a -> Int #enumFrom :: Ratio a -> [Ratio a] #enumFromThen :: Ratio a -> Ratio a -> [Ratio a] #enumFromTo :: Ratio a -> Ratio a -> [Ratio a] #enumFromThenTo :: Ratio a -> Ratio a -> Ratio a -> [Ratio a] # Eq a => Eq (Ratio a) # Methods(==) :: Ratio a -> Ratio a -> Bool Source #(/=) :: Ratio a -> Ratio a -> Bool Source # Integral a => Fractional (Ratio a) # Since: 2.0.1 Methods(/) :: Ratio a -> Ratio a -> Ratio a #recip :: Ratio a -> Ratio a # (Data a, Integral a) => Data (Ratio a) # Since: 4.0.0.0 Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Ratio a -> c (Ratio a) #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Ratio a) #toConstr :: Ratio a -> Constr #dataTypeOf :: Ratio a -> DataType #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Ratio a)) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Ratio a)) #gmapT :: (forall b. Data b => b -> b) -> Ratio a -> Ratio a #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ratio a -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ratio a -> r #gmapQ :: (forall d. Data d => d -> u) -> Ratio a -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Ratio a -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Ratio a -> m (Ratio a) #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Ratio a -> m (Ratio a) #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Ratio a -> m (Ratio a) # Integral a => Num (Ratio a) # Since: 2.0.1 Methods(+) :: Ratio a -> Ratio a -> Ratio a #(-) :: Ratio a -> Ratio a -> Ratio a #(*) :: Ratio a -> Ratio a -> Ratio a #negate :: Ratio a -> Ratio a #abs :: Ratio a -> Ratio a #signum :: Ratio a -> Ratio a # Integral a => Ord (Ratio a) # Since: 2.0.1 Methodscompare :: Ratio a -> Ratio a -> Ordering Source #(<) :: Ratio a -> Ratio a -> Bool Source #(<=) :: Ratio a -> Ratio a -> Bool Source #(>) :: Ratio a -> Ratio a -> Bool Source #(>=) :: Ratio a -> Ratio a -> Bool Source #max :: Ratio a -> Ratio a -> Ratio a Source #min :: Ratio a -> Ratio a -> Ratio a Source # (Integral a, Read a) => Read (Ratio a) # Since: 2.1 MethodsreadsPrec :: Int -> ReadS (Ratio a) #readList :: ReadS [Ratio a] # Integral a => Real (Ratio a) # Since: 2.0.1 MethodstoRational :: Ratio a -> Rational # Integral a => RealFrac (Ratio a) # Since: 2.0.1 MethodsproperFraction :: Integral b => Ratio a -> (b, Ratio a) #truncate :: Integral b => Ratio a -> b #round :: Integral b => Ratio a -> b #ceiling :: Integral b => Ratio a -> b #floor :: Integral b => Ratio a -> b # Show a => Show (Ratio a) # Since: 2.0.1 MethodsshowsPrec :: Int -> Ratio a -> ShowS #show :: Ratio a -> String #showList :: [Ratio a] -> ShowS # (Storable a, Integral a) => Storable (Ratio a) # Since: 4.8.0.0 MethodssizeOf :: Ratio a -> Int #alignment :: Ratio a -> Int #peekElemOff :: Ptr (Ratio a) -> Int -> IO (Ratio a) #pokeElemOff :: Ptr (Ratio a) -> Int -> Ratio a -> IO () #peekByteOff :: Ptr b -> Int -> IO (Ratio a) #pokeByteOff :: Ptr b -> Int -> Ratio a -> IO () #peek :: Ptr (Ratio a) -> IO (Ratio a) #poke :: Ptr (Ratio a) -> Ratio a -> IO () #

Arbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator.

(%) :: Integral a => a -> a -> Ratio a infixl 7 #

Forms the ratio of two integral numbers.

numerator :: Ratio a -> a #

Extract the numerator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.

denominator :: Ratio a -> a #

Extract the denominator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.

approxRational :: RealFrac a => a -> a -> 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.