packages feed

AERN-Real-Interval-2011.1: src/Numeric/AERN/RealArithmetic/Interval/ExactOps.hs

{-|
    Module      :  Numeric.AERN.RealArithmetic.Interval.ExactOps
    Description :  exact zero, one and neg for intervals 
    Copyright   :  (c) Michal Konecny
    License     :  BSD3

    Maintainer  :  mikkonecny@gmail.com
    Stability   :  experimental
    Portability :  portable
    
    Exact zero, one and neg for intervals.
    
    This module is hidden and reexported via its parent Interval. 
-}

module Numeric.AERN.RealArithmetic.Interval.ExactOps 
()
where

import Numeric.AERN.Basics.Interval
import qualified Numeric.AERN.Basics.NumericOrder as NumOrd 
import Numeric.AERN.RealArithmetic.ExactOps

instance  (HasZero e, NumOrd.PartialComparison e) => HasZero (Interval e) where
    zero = Interval zero zero

instance  (HasOne e) => HasOne (Interval e) where
    one = Interval one one

instance (HasInfinities e) => HasInfinities (Interval e) where
    plusInfinity = Interval plusInfinity plusInfinity
    minusInfinity = Interval minusInfinity minusInfinity
    excludesPlusInfinity (Interval l r) = excludesPlusInfinity r
    excludesMinusInfinity (Interval l r) = excludesMinusInfinity l

instance  (Neg e) => Neg (Interval e) where
    neg (Interval l r) = Interval (neg r) (neg l)