yap-0.1: yet another prelude - a simplistic refactoring with algebraic classes

Portabilityportable
Stabilitystable
Maintainerlibraries@haskell.org

Data.YAP.Ratio

Description

Standard functions on rational numbers.

This version uses the same type as Data.Ratio, but with components generalized from Integral to EuclideanDomain. However using the same type means we have the old, more constrained, instances of Ord, Show and Read.

Synopsis

Documentation

data Ratio a

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

Instances

Integral a => Enum (Ratio a) 
Eq a => Eq (Ratio a) 
Integral a => Fractional (Ratio a) 
Integral a => Num (Ratio a) 
Integral a => Ord (Ratio a) 
(Integral a, Read a) => Read (Ratio a) 
Integral a => Real (Ratio a) 
Integral a => RealFrac (Ratio a) 
Integral a => Show (Ratio a) 
EuclideanDomain a => Field (Ratio a) 
EuclideanDomain a => Ring (Ratio a) 
EuclideanDomain a => AbelianGroup (Ratio a) 
(Integral a, Integral a) => RealFrac (Ratio a) 
(Integral a, Integral a) => Fractional (Ratio a) 
(Integral a, Integral a) => Real (Ratio a) 
(Integral a, Integral a) => Num (Ratio a) 

type Rational = Ratio Integer

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

(%) :: EuclideanDomain a => a -> a -> Ratio aSource

Forms the ratio of two values in a Euclidean domain (e.g. Integer).

numerator :: EuclideanDomain a => Ratio a -> aSource

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

denominator :: EuclideanDomain a => Ratio a -> aSource

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 -> RationalSource

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

Any real interval contains a unique simplest rational; in particular, note that 0/1 is the simplest rational of all.