-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Utilities for dealing with IEEE floating point numbers
--   
--   Utilities for dealing with IEEE floating point numbers, ported from
--   the Tango math library; approximate and exact equality comparisons for
--   general types.
@package ieee754
@version 0.7.3

-- | Operations on IEEE floating point numbers.
module Numeric.IEEE

-- | IEEE floating point types.
class RealFloat a => IEEE a
infinity :: IEEE a => a
minNormal :: IEEE a => a
maxFinite :: IEEE a => a
epsilon :: IEEE a => a
copySign :: IEEE a => a -> a -> a
identicalIEEE :: IEEE a => a -> a -> Bool
succIEEE :: IEEE a => a -> a
predIEEE :: IEEE a => a -> a
bisectIEEE :: IEEE a => a -> a -> a
sameSignificandBits :: IEEE a => a -> a -> Int
nan :: IEEE a => a
nanWithPayload :: IEEE a => Word64 -> a
maxNaNPayload :: IEEE a => a -> Word64
nanPayload :: IEEE a => a -> Word64

-- | Return the minimum of two values; if one value is NaN, return
--   the other. Prefer the first if both values are NaN.
minNum :: RealFloat a => a -> a -> a

-- | Return the maximum of two values; if one value is NaN, return
--   the other. Prefer the first if both values are NaN.
maxNum :: RealFloat a => a -> a -> a

-- | Return the minimum of two values; if one value is NaN, return
--   it. Prefer the first if both values are NaN.
minNaN :: RealFloat a => a -> a -> a

-- | Return the maximum of two values; if one value is NaN, return
--   it. Prefer the first if both values are NaN.
maxNaN :: RealFloat a => a -> a -> a
instance IEEE CDouble
instance IEEE Double
instance IEEE CFloat
instance IEEE Float

-- | A type class for approximate and exact equalilty comparisons and
--   instances for common data types.
module Data.AEq

-- | Types with approximate and exact equality comparisons.
class Eq a => AEq a where === = (==) ~== = (==)
(===) :: AEq a => a -> a -> Bool
(~==) :: AEq a => a -> a -> Bool
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l, AEq m, AEq n, AEq o) => AEq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l, AEq m, AEq n) => AEq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l, AEq m) => AEq (a, b, c, d, e, f, g, h, i, j, k, l, m)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l) => AEq (a, b, c, d, e, f, g, h, i, j, k, l)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k) => AEq (a, b, c, d, e, f, g, h, i, j, k)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j) => AEq (a, b, c, d, e, f, g, h, i, j)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i) => AEq (a, b, c, d, e, f, g, h, i)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h) => AEq (a, b, c, d, e, f, g, h)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g) => AEq (a, b, c, d, e, f, g)
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f) => AEq (a, b, c, d, e, f)
instance (AEq a, AEq b, AEq c, AEq d, AEq e) => AEq (a, b, c, d, e)
instance (AEq a, AEq b, AEq c, AEq d) => AEq (a, b, c, d)
instance (AEq a, AEq b, AEq c) => AEq (a, b, c)
instance (AEq a, AEq b) => AEq (a, b)
instance (AEq a, AEq b) => AEq (Either a b)
instance AEq a => AEq (Maybe a)
instance AEq a => AEq [a]
instance AEq CTime
instance AEq CClock
instance AEq CUIntMax
instance AEq CIntMax
instance AEq CUIntPtr
instance AEq CIntPtr
instance AEq CULLong
instance AEq CLLong
instance AEq CSigAtomic
instance AEq CWchar
instance AEq CSize
instance AEq CPtrdiff
instance AEq CULong
instance AEq CLong
instance AEq CUInt
instance AEq CInt
instance AEq CUShort
instance AEq CShort
instance AEq CUChar
instance AEq CSChar
instance AEq CChar
instance AEq (ForeignPtr a)
instance AEq (FunPtr a)
instance AEq (Ptr a)
instance AEq (StablePtr a)
instance AEq IntPtr
instance AEq WordPtr
instance AEq ()
instance AEq Word64
instance AEq Word32
instance AEq Word16
instance AEq Word8
instance AEq Word
instance AEq Ordering
instance AEq Integer
instance AEq Int64
instance AEq Int32
instance AEq Int16
instance AEq Int8
instance AEq Int
instance AEq Char
instance AEq Bool
instance AEq (Complex CDouble)
instance AEq (Complex CFloat)
instance AEq CDouble
instance AEq CFloat
instance AEq (Complex Double)
instance AEq (Complex Float)
instance AEq Double
instance AEq Float
