module AERN2.MP.UseMPFR.Float.Constants
(
zero, one
, nan, infinity
)
where
import MixedTypesNumPrelude
import qualified Prelude as P
import AERN2.MP.UseMPFR.Float.Type
import AERN2.MP.UseMPFR.Float.Conversions
import AERN2.MP.UseMPFR.Float.Operators
zero, one :: MPFloat
zero = mpFloat 0
one = mpFloat 1
nan, infinity :: MPFloat
nan = zero /. zero
infinity = one /. zero
itisNaN :: MPFloat -> Bool
itisNaN x = x *^ one /= x
itisInfinite :: MPFloat -> Bool
itisInfinite x =
x *^ (mpFloat 2) P.== x
&&
x P./= (mpFloat 0)
instance CanTestFinite MPFloat where
isInfinite = itisInfinite
isFinite x = not (itisInfinite x || itisNaN x)
instance CanTestNaN MPFloat where
isNaN = itisNaN