| Portability | GHC only |
|---|---|
| Stability | experimental |
| Maintainer | ekmett@gmail.com |
| Safe Haskell | Safe-Infered |
Numeric.Interval
Description
Interval arithmetic
- data Interval a = I !a !a
- (...) :: a -> a -> Interval a
- whole :: Fractional a => Interval a
- empty :: Fractional a => Interval a
- null :: Ord a => Interval a -> Bool
- singleton :: a -> Interval a
- elem :: Ord a => a -> Interval a -> Bool
- notElem :: Ord a => a -> Interval a -> Bool
- inf :: Interval a -> a
- sup :: Interval a -> a
- singular :: Ord a => Interval a -> Bool
- width :: Num a => Interval a -> a
- intersection :: (Fractional a, Ord a) => Interval a -> Interval a -> Interval a
- hull :: Ord a => Interval a -> Interval a -> Interval a
- bisection :: Fractional a => Interval a -> (Interval a, Interval a)
- magnitude :: (Num a, Ord a) => Interval a -> a
- mignitude :: (Num a, Ord a) => Interval a -> a
- contains :: Ord a => Interval a -> Interval a -> Bool
- isSubsetOf :: Ord a => Interval a -> Interval a -> Bool
- certainly :: Ord a => (forall b. Ord b => b -> b -> Bool) -> Interval a -> Interval a -> Bool
- (<!) :: Ord a => Interval a -> Interval a -> Bool
- (<=!) :: Ord a => Interval a -> Interval a -> Bool
- (==!) :: Eq a => Interval a -> Interval a -> Bool
- (>=!) :: Ord a => Interval a -> Interval a -> Bool
- (>!) :: Ord a => Interval a -> Interval a -> Bool
- possibly :: Ord a => (forall b. Ord b => b -> b -> Bool) -> Interval a -> Interval a -> Bool
- (<?) :: Ord a => Interval a -> Interval a -> Bool
- (<=?) :: Ord a => Interval a -> Interval a -> Bool
- (==?) :: Ord a => Interval a -> Interval a -> Bool
- (>=?) :: Ord a => Interval a -> Interval a -> Bool
- (>?) :: Ord a => Interval a -> Interval a -> Bool
- idouble :: Interval Double -> Interval Double
- ifloat :: Interval Float -> Interval Float
Documentation
Constructors
| I !a !a |
Instances
| Eq a => Eq (Interval a) | |
| (RealExtras a, Ord a) => Floating (Interval a) | |
| (Fractional a, Ord a) => Fractional (Interval a) | |
| (Num a, Ord a) => Num (Interval a) | |
| Ord a => Ord (Interval a) | |
| Real a => Real (Interval a) | This means that realToFrac will use the midpoint What moron put an Ord instance requirement on Real! |
| RealExtras a => RealFloat (Interval a) | We have to play some semantic games to make these methods make sense. Most compute with the midpoint of the interval. |
| RealFloat a => RealFrac (Interval a) | |
| Show a => Show (Interval a) | |
| RealExtras a => RealExtras (Interval a) |
(...) :: a -> a -> Interval aSource
The rule of thumb is you should only use this to construct using values that you took out of the interval. Otherwise, use I, to force rounding
whole :: Fractional a => Interval aSource
The whole real number line
empty :: Fractional a => Interval aSource
An empty interval
singular :: Ord a => Interval a -> BoolSource
Is the interval a singleton point? N.B. This is fairly fragile and likely will not hold after even a few operations that only involve singletons
intersection :: (Fractional a, Ord a) => Interval a -> Interval a -> Interval aSource
Calculate the intersection of two intervals.
hull :: Ord a => Interval a -> Interval a -> Interval aSource
Calculate the convex hull of two intervals
bisection :: Fractional a => Interval a -> (Interval a, Interval a)Source
Bisect an interval at its midpoint.
certainly :: Ord a => (forall b. Ord b => b -> b -> Bool) -> Interval a -> Interval a -> BoolSource
For all x in X, y in Y. x
op y
possibly :: Ord a => (forall b. Ord b => b -> b -> Bool) -> Interval a -> Interval a -> BoolSource
Does there exist an x in X, y in Y such that x ?
op y
(<?) :: Ord a => Interval a -> Interval a -> BoolSource
Does there exist an x in X, y in Y such that x ?
< y
(<=?) :: Ord a => Interval a -> Interval a -> BoolSource
Does there exist an x in X, y in Y such that x ?
<= y
(==?) :: Ord a => Interval a -> Interval a -> BoolSource
Does there exist an x in X, y in Y such that x ?
== y
(>=?) :: Ord a => Interval a -> Interval a -> BoolSource
Does there exist an x in X, y in Y such that x ?
>= y