Synopsis
 type Interval = Maybe Ball fromBallA :: Precision -> Ball -> Interval fromBall :: Ball -> Interval make :: Dyadic -> Dyadic -> Interval makeA :: Precision -> Dyadic -> Dyadic -> Interval below :: Interval -> Interval -> Bool contains :: Interval -> Dyadic -> Bool includes :: Interval -> Interval -> Inclusion intersectA :: Precision -> Interval -> Interval -> Interval intersect :: Interval -> Interval -> Interval neg :: Precision -> Interval -> Interval add :: Precision -> Interval -> Interval -> Interval mul :: Precision -> Interval -> Interval -> Interval sub :: Precision -> Interval -> Interval -> Interval div :: Precision -> Interval -> Interval -> Interval sqrt :: Precision -> Interval -> Interval exp :: Precision -> Interval -> Interval log :: Precision -> Interval -> Interval compareI :: Interval -> Interval -> POrdering maxI :: Precision -> Interval -> Interval -> Interval minI :: Precision -> Interval -> Interval -> Interval center :: Monad m => Interval -> m Dyadic radius :: Monad m => Interval -> m Dyadic lower :: Monad m => Interval -> m Dyadic upper :: Monad m => Interval -> m Dyadic width :: Monad m => Interval -> m Dyadic fromDyadic :: Precision -> Dyadic -> Interval fromString :: Precision -> String -> Interval fromInt :: Precision -> Int -> Interval fromWord :: Precision -> Word -> Interval toString :: Interval -> String
Documentation
type Interval = Maybe Ball

A wrapper around Ball allowing the results of operations like division by interval containing zero to be represented and do not cause errors.

Nothing represents undefined interval.

fromBallA :: Precision -> Ball -> Interval
Make an interval from a ball and normalize it to specified precision.
fromBall :: Ball -> Interval
Just make an interval from a ball.
make :: Dyadic -> Dyadic -> Interval
Make an interval from two endpoints so that no precision is lost.
makeA
 :: Precision precision of the interval's center -> Dyadic left endpoint -> Dyadic right endpoint -> Interval Make an interval from two endpoints.
below :: Interval -> Interval -> Bool
Checks if second interval is inside the first. _|_ is above all.
contains :: Interval -> Dyadic -> Bool
Checks if interval contains dyadic. _|_ contains everything.
includes :: Interval -> Interval -> Inclusion
Returns Below if second interval is inside first, Above if converse, NoInclusion otherwise.
intersectA :: Precision -> Interval -> Interval -> Interval

Return the intersection of two intervals. The resulting interval's center has specified precision.

If one of the intervals is _|_ then just return the other (even if it is _|_).

intersect :: Interval -> Interval -> Interval
Return the intersection of two intervals so that no precision is lost.
neg :: Precision -> Interval -> Interval
Negate the interval. neg _|_ = _|_.
add :: Precision -> Interval -> Interval -> Interval
Addition. If one of the arguments is _|_, so is the result.
mul :: Precision -> Interval -> Interval -> Interval
Multiplication. If one of the arguments is _|_, so is the result
sub :: Precision -> Interval -> Interval -> Interval
Subtraction. If one of the arguments is _|_, so is the result
div :: Precision -> Interval -> Interval -> Interval
Division. If one of the arguments is _|_ or divisor contains 0 then result is _|_.
sqrt :: Precision -> Interval -> Interval
Square root. If one argument is _|_ or interval contains 0 then result is _|_.
exp :: Precision -> Interval -> Interval
e ^ i If argument is _|_ so is the result.
log :: Precision -> Interval -> Interval
Natural logarithm. If one argument is _|_ or interval contains 0 then result is _|_.
compareI :: Interval -> Interval -> POrdering
Compare two intervals. If one of them is _|_ the result is incomparable, otherwise result is comparison of balls.
maxI :: Precision -> Interval -> Interval -> Interval
Maximum of intervals. If one interval is _|_ so is the result.
minI :: Precision -> Interval -> Interval -> Interval
Similar to maxI.
center :: Monad m => Interval -> m Dyadic
Center of interval. Center on _|_ will result in fail.