packages feed

AERN-Real-Double-2011.1.0.2: src/Numeric/AERN/RealArithmetic/Basis/Double/NumericOrder.hs

{-# LANGUAGE TypeFamilies #-}
{-|
    Module      :  Numeric.AERN.RealArithmetic.Basis.Double.NumericOrder
    Description :  numeric order instances for Double  
    Copyright   :  (c) Michal Konecny
    License     :  BSD3

    Maintainer  :  mikkonecny@gmail.com
    Stability   :  experimental
    Portability :  portable
    
    Numeric order Comparison and lattice instances for Double.
    
    This is a private module reexported publicly via its parent.
-}
module Numeric.AERN.RealArithmetic.Basis.Double.NumericOrder
where

import Prelude hiding (EQ,LT,GT)

import Numeric.AERN.Basics.Exception
import Control.Exception

import Numeric.AERN.Basics.PartialOrdering
import qualified Numeric.AERN.Basics.NumericOrder as NumOrd

import Numeric.AERN.Misc.List
import Numeric.AERN.Misc.Debug

import Data.Maybe

sampleD :: Double
sampleD = 0

nanD :: Double
nanD = 0/0

instance NumOrd.HasLeast Double where
    least = - 1/0

instance NumOrd.HasGreatest Double where
    greatest = 1/0

instance NumOrd.HasExtrema Double where

instance NumOrd.RoundedLatticeEffort Double where
    type NumOrd.MinmaxEffortIndicator Double = ()
    minmaxDefaultEffort _ = ()

instance NumOrd.RoundedLattice Double where
    maxUpEff _ a b = Prelude.max a b
    maxDnEff = NumOrd.maxUpEff 
    minUpEff _ a b = Prelude.min a b
    minDnEff = NumOrd.minUpEff