| Copyright | (c) The University of Glasgow 2001 |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | stable |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.YAP.Ratio
Description
Standard functions on rational numbers.
This is a replacement for Data.Ratio, using the same Ratio
type, but with components generalized from Integral to
StandardAssociate + Euclidean.
Using the same type means we have the old instances.
The Ord and Read instances could be relaxed to:
instance (Ord a, Semiring a) => Ord (Ratio a) instance (Eq a, StandardAssociate a, Euclidean a, Read a) => Read (Ratio a)
Synopsis
- data Ratio a
- type Rational = Ratio Integer
- (%) :: (Eq a, StandardAssociate a, Euclidean a) => a -> a -> Ratio a
- numerator :: Ratio a -> a
- denominator :: Ratio a -> a
- approxRational :: ToRational a => a -> a -> Rational
Documentation
Rational numbers, with numerator and denominator of some Integral type.
Note that Ratio's instances inherit the deficiencies from the type
parameter's. For example, Ratio Natural's Num instance has similar
problems to Natural's.
Instances
| (Data a, Integral a) => Data (Ratio a) | Since: base-4.0.0.0 |
Defined in Data.Data Methods gfoldl :: (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 :: forall r r'. (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) # | |
| (Storable a, Integral a) => Storable (Ratio a) | Since: base-4.8.0.0 |
| Integral a => Enum (Ratio a) | Since: base-2.0.1 |
| Integral a => Num (Ratio a) | Since: base-2.0.1 |
| (Integral a, Read a) => Read (Ratio a) | Since: base-2.1 |
| Integral a => Fractional (Ratio a) | Since: base-2.0.1 |
| Integral a => Real (Ratio a) | Since: base-2.0.1 |
Defined in GHC.Real Methods toRational :: Ratio a -> Rational # | |
| Integral a => RealFrac (Ratio a) | Since: base-2.0.1 |
| Show a => Show (Ratio a) | Since: base-2.0.1 |
| Eq a => Eq (Ratio a) | Since: base-2.1 |
| Integral a => Ord (Ratio a) | Since: base-2.0.1 |
| (Eq a, StandardAssociate a, Euclidean a, Ring a) => AbelianGroup (Ratio a) Source # | |
| (Eq a, StandardAssociate a, Euclidean a) => AdditiveMonoid (Ratio a) Source # | |
| (Eq a, StandardAssociate a, Euclidean a, Ring a) => DivisionRing (Ratio a) Source # | |
Defined in Data.YAP.Algebra.Internal | |
| (Eq a, StandardAssociate a, Euclidean a) => DivisionSemiring (Ratio a) Source # | |
| (Eq a, StandardAssociate a, Euclidean a, Ring a) => Field (Ratio a) Source # | |
Defined in Data.YAP.Algebra.Internal | |
| Integral a => Fractional (Ratio a) Source # | As in Data.Ratio. |
Defined in Data.YAP.Algebra.Internal | |
| Integral a => FromRational (Ratio a) Source # | |
Defined in Data.YAP.Algebra.Internal Methods fromRational :: Rational -> Ratio a Source # | |
| Integral a => Num (Ratio a) Source # | As in Data.Ratio. |
| (Integral a, Integral a) => Real (Ratio a) Source # | As in Data.Ratio. The original version of |
Defined in Data.YAP.Algebra.Internal | |
| (Integral a, Integral a) => RealFrac (Ratio a) Source # | As in Data.Ratio. The original version of |
| (Eq a, StandardAssociate a, Euclidean a, Ring a) => Ring (Ratio a) Source # | |
Defined in Data.YAP.Algebra.Internal Methods fromInteger :: Integer -> Ratio a Source # | |
| (Eq a, StandardAssociate a, Euclidean a) => Semifield (Ratio a) Source # | |
| (Eq a, StandardAssociate a, Euclidean a) => Semiring (Ratio a) Source # | |
| (ToInteger a, Integral a) => ToRational (Ratio a) Source # | The original version of |
Defined in Data.YAP.Algebra.Internal Methods toRational :: Ratio a -> Rational Source # | |
(%) :: (Eq a, StandardAssociate a, Euclidean a) => a -> a -> Ratio a infixl 7 Source #
Forms the ratio of two values in a Euclidean domain (e.g. Integer).
numerator :: Ratio a -> a Source #
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 Source #
Extract the denominator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.
approxRational :: ToRational a => a -> a -> Rational Source #
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
, andabs(numeratory) <=abs(numeratory').denominatory <=denominatory'
Any real interval contains a unique simplest rational;
in particular, note that 0/1 is the simplest rational of all.