float: Remove use of decodeFloatInteger.
[altfloat.git] / Data / Floating.hs
blob42af463eecaa9f015664a0224bf52177f2c3c6c4
1 {-
2 - Copyright (C) 2009 Nick Bowler.
4 - License BSD2: 2-clause BSD license. See LICENSE for full terms.
5 - This is free software: you are free to change and redistribute it.
6 - There is NO WARRANTY, to the extent permitted by law.
7 -}
9 -- | Top level module for alternative floating point support.
10 module Data.Floating (
11 Double, Float,
12 module Data.Floating.Classes,
13 module Data.Floating,
14 toFloating
15 ) where
17 import Prelude hiding (RealFloat(..), Double, Float)
18 import Data.Floating.Classes
19 import Data.Floating.Instances
20 import Data.Floating.Double
21 import Data.Floating.Float
22 import Data.Floating.Types
23 import Data.Floating.Environment
25 import Control.Monad
27 isInfinite :: RealFloat a => a -> Bool
28 isInfinite = (== FPInfinite) . classify
30 isNaN :: RealFloat a => a -> Bool
31 isNaN = (== FPNaN) . classify
33 isNormal :: RealFloat a => a -> Bool
34 isNormal = (== FPNormal) . classify
36 isSubNormal :: RealFloat a => a -> Bool
37 isSubNormal = (== FPSubNormal) . classify
39 isFinite :: RealFloat a => a -> Bool
40 isFinite = not . liftM2 (||) isInfinite isNaN
42 isNegativeZero :: RealFloat a => a -> Bool
43 isNegativeZero = liftM2 (&&) ((== FPZero) . classify) ((== (-1)) . signum)