Copyright | (c) Masahiro Sakai 2011-2013 Andrew Lelechenko 2020 |
---|---|
License | BSD-style |
Maintainer | masahiro.sakai@gmail.com |
Stability | provisional |
Portability | non-portable (CPP, ScopedTypeVariables, DeriveDataTypeable) |
Safe Haskell | Safe |
Language | Haskell2010 |
Interval datatype and interval arithmetic.
Unlike the intervals package (
http://hackage.haskell.org/package/intervals
),
this module provides both open and closed intervals and is intended to be used
with
Rational
.
For the purpose of abstract interpretation, it might be convenient to use
Lattice
instance. See also lattices package
(
http://hackage.haskell.org/package/lattices
).
Synopsis
- data Interval r
- module Data.ExtendedReal
- data Boundary
- interval :: Ord r => ( Extended r, Boundary ) -> ( Extended r, Boundary ) -> Interval r
- (<=..<=) :: Ord r => Extended r -> Extended r -> Interval r
- (<..<=) :: Ord r => Extended r -> Extended r -> Interval r
- (<=..<) :: Ord r => Extended r -> Extended r -> Interval r
- (<..<) :: Ord r => Extended r -> Extended r -> Interval r
- whole :: Ord r => Interval r
- empty :: Ord r => Interval r
- singleton :: Ord r => r -> Interval r
- null :: Ord r => Interval r -> Bool
- isSingleton :: Ord r => Interval r -> Bool
- extractSingleton :: Ord r => Interval r -> Maybe r
- member :: Ord r => r -> Interval r -> Bool
- notMember :: Ord r => r -> Interval r -> Bool
- isSubsetOf :: Ord r => Interval r -> Interval r -> Bool
- isProperSubsetOf :: Ord r => Interval r -> Interval r -> Bool
- isConnected :: Ord r => Interval r -> Interval r -> Bool
- lowerBound :: Interval r -> Extended r
- upperBound :: Interval r -> Extended r
- lowerBound' :: Interval r -> ( Extended r, Boundary )
- upperBound' :: Interval r -> ( Extended r, Boundary )
- width :: ( Num r, Ord r) => Interval r -> r
- (<!) :: Ord r => Interval r -> Interval r -> Bool
- (<=!) :: Ord r => Interval r -> Interval r -> Bool
- (==!) :: Ord r => Interval r -> Interval r -> Bool
- (>=!) :: Ord r => Interval r -> Interval r -> Bool
- (>!) :: Ord r => Interval r -> Interval r -> Bool
- (/=!) :: Ord r => Interval r -> Interval r -> Bool
- (<?) :: Ord r => Interval r -> Interval r -> Bool
- (<=?) :: Ord r => Interval r -> Interval r -> Bool
- (==?) :: Ord r => Interval r -> Interval r -> Bool
- (>=?) :: Ord r => Interval r -> Interval r -> Bool
- (>?) :: Ord r => Interval r -> Interval r -> Bool
- (/=?) :: Ord r => Interval r -> Interval r -> Bool
- (<??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r)
- (<=??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r)
- (==??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r)
- (>=??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r)
- (>??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r)
- (/=??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r)
- intersection :: forall r. Ord r => Interval r -> Interval r -> Interval r
- intersections :: Ord r => [ Interval r] -> Interval r
- hull :: forall r. Ord r => Interval r -> Interval r -> Interval r
- hulls :: Ord r => [ Interval r] -> Interval r
- mapMonotonic :: ( Ord a, Ord b) => (a -> b) -> Interval a -> Interval b
- pickup :: ( Real r, Fractional r) => Interval r -> Maybe r
- simplestRationalWithin :: RealFrac r => Interval r -> Maybe Rational
- relate :: Ord r => Interval r -> Interval r -> Relation
Interval type
The intervals ( i.e. connected and convex subsets) over real numbers R .
Instances
module Data.ExtendedReal
Boundary of an interval may be open (excluding an endpoint) or closed (including an endpoint).
Since: 2.0.0
Instances
Construction
:: Ord r | |
=> ( Extended r, Boundary ) |
lower bound and whether it is included |
-> ( Extended r, Boundary ) |
upper bound and whether it is included |
-> Interval r |
smart constructor for
Interval
closed interval [
l
,
u
]
left-open right-closed interval (
l
,
u
]
left-closed right-open interval [
l
,
u
)
open interval (
l
,
u
)
Query
extractSingleton :: Ord r => Interval r -> Maybe r Source #
If the interval is a single point, return this point.
Since: 2.1.0
isSubsetOf :: Ord r => Interval r -> Interval r -> Bool Source #
Is this a subset?
(i1 `
tells whether
isSubsetOf
` i2)
i1
is a subset of
i2
.
isProperSubsetOf :: Ord r => Interval r -> Interval r -> Bool Source #
Is this a proper subset? ( i.e. a subset but not equal).
isConnected :: Ord r => Interval r -> Interval r -> Bool Source #
Does the union of two range form a connected set?
Since 1.3.0
lowerBound :: Interval r -> Extended r Source #
Lower endpoint ( i.e. greatest lower bound) of the interval.
-
lowerBound
of the empty interval isPosInf
. -
lowerBound
of a left unbounded interval isNegInf
. -
lowerBound
of an interval may or may not be a member of the interval.
upperBound :: Interval r -> Extended r Source #
Upper endpoint ( i.e. least upper bound) of the interval.
-
upperBound
of the empty interval isNegInf
. -
upperBound
of a right unbounded interval isPosInf
. -
upperBound
of an interval may or may not be a member of the interval.
width :: ( Num r, Ord r) => Interval r -> r Source #
Width of a interval. Width of an unbounded interval is
undefined
.
Universal comparison operators
(<!) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
For all
x
in
X
,
y
in
Y
.
x
?
<
y
(<=!) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
For all
x
in
X
,
y
in
Y
.
x
?
<=
y
(==!) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
For all
x
in
X
,
y
in
Y
.
x
?
==
y
(>=!) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
For all
x
in
X
,
y
in
Y
.
x
?
>=
y
(>!) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
For all
x
in
X
,
y
in
Y
.
x
?
>
y
(/=!) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
For all
x
in
X
,
y
in
Y
.
x
?
/=
y
Since 1.0.1
Existential comparison operators
(<?) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
<
y
(<=?) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
<=
y
(==?) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
==
y
Since 1.0.0
(>=?) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
>=
y
(>?) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
>
y
(/=?) :: Ord r => Interval r -> Interval r -> Bool infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
/=
y
Since 1.0.1
Existential comparison operators that produce witnesses (experimental)
(<??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r) infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
<
y
Since 1.0.0
(<=??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r) infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
<=
y
Since 1.0.0
(==??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r) infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
==
y
Since 1.0.0
(>=??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r) infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
>=
y
Since 1.0.0
(>??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r) infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
>
y
Since 1.0.0
(/=??) :: ( Real r, Fractional r) => Interval r -> Interval r -> Maybe (r, r) infix 4 Source #
Does there exist an
x
in
X
,
y
in
Y
such that
x
?
/=
y
Since 1.0.1
Combine
intersection :: forall r. Ord r => Interval r -> Interval r -> Interval r Source #
intersection of two intervals
intersections :: Ord r => [ Interval r] -> Interval r Source #
intersection of a list of intervals.
Since 0.6.0
hull :: forall r. Ord r => Interval r -> Interval r -> Interval r Source #
convex hull of two intervals
hulls :: Ord r => [ Interval r] -> Interval r Source #
convex hull of a list of intervals.
Since 0.6.0
Map
mapMonotonic :: ( Ord a, Ord b) => (a -> b) -> Interval a -> Interval b Source #
mapMonotonic f i
is the image of
i
under
f
, where
f
must be a strict monotone function,
preserving negative and positive infinities.
Operations
pickup :: ( Real r, Fractional r) => Interval r -> Maybe r Source #
pick up an element from the interval if the interval is not empty.
simplestRationalWithin :: RealFrac r => Interval r -> Maybe Rational Source #
simplestRationalWithin
returns the simplest rational number within the interval.
A rational number
y
is said to be
simpler
than another
y'
if
-
abs
(numerator
y) <=abs
(numerator
y') -
denominator
y <=denominator
y'
(see also
approxRational
)
Since 0.4.0
Intervals relation
relate :: Ord r => Interval r -> Interval r -> Relation Source #
Computes how two intervals are related according to the
classification
Relation