module Nettle.Topology.ExtendedDouble (
  ExtendedDouble(..)
  , addExtendedDouble
  ) where

data ExtendedDouble = Finite !Double 
                    | Infinity 
                      deriving (Show,Read,Eq)
                               
addExtendedDouble :: ExtendedDouble -> ExtendedDouble -> ExtendedDouble
addExtendedDouble (Finite x) (Finite y) = Finite (x + y)
addExtendedDouble _ _                   = Infinity
                               
instance Ord ExtendedDouble where                               
  Finite x <= Finite y = x <= y
  Finite _ <= Infinity = True
  Infinity <= Infinity = True
  Infinity <= Finite _ = False