ieee754-0.8.0: Utilities for dealing with IEEE floating point numbers

CopyrightCopyright (c) 2010 Patrick Perry <patperry@gmail.com>
LicenseBSD3
MaintainerPatrick Perry <patperry@gmail.com>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell98

Data.AEq

Description

A type class for approximate and exact equalilty comparisons and instances for common data types.

Synopsis
  • class Eq a => AEq a where

    Documentation

    class Eq a => AEq a where Source #

    Types with approximate and exact equality comparisons.

    Methods

    (===) :: a -> a -> Bool infix 4 Source #

    An exact equality comparison.

    For real IEEE types, two values are equivalent in the following cases:

    • both values are +0;
    • both values are -0;
    • both values are nonzero and equal to each other (according to ==);
    • both values are NaN with the same payload and sign.

    For complex IEEE types, two values are equivalent if their real and imaginary parts are equivalent.

    (~==) :: a -> a -> Bool infix 4 Source #

    An approximate equality comparison operator.

    For real IEEE types, two values are approximately equal in the following cases:

    • at least half of their significand bits agree;
    • both values are less than epsilon;
    • both values are NaN.

    For complex IEEE types, two values are approximately equal in the followiing cases:

    • their magnitudes are approximately equal and the angle between them is less than 32*epsilon;
    • both magnitudes are less than epsilon;
    • both have a NaN real or imaginary part.

    Admitedly, the 32 is a bit of a hack. Future versions of the library may switch to a more principled test of the angle.

    Instances
    AEq Bool Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Bool -> Bool -> Bool Source #

    (~==) :: Bool -> Bool -> Bool Source #

    AEq Char Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Char -> Char -> Bool Source #

    (~==) :: Char -> Char -> Bool Source #

    AEq Double Source # 
    Instance details

    Defined in Data.AEq

    AEq Float Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Float -> Float -> Bool Source #

    (~==) :: Float -> Float -> Bool Source #

    AEq Int Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Int -> Int -> Bool Source #

    (~==) :: Int -> Int -> Bool Source #

    AEq Int8 Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Int8 -> Int8 -> Bool Source #

    (~==) :: Int8 -> Int8 -> Bool Source #

    AEq Int16 Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Int16 -> Int16 -> Bool Source #

    (~==) :: Int16 -> Int16 -> Bool Source #

    AEq Int32 Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Int32 -> Int32 -> Bool Source #

    (~==) :: Int32 -> Int32 -> Bool Source #

    AEq Int64 Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Int64 -> Int64 -> Bool Source #

    (~==) :: Int64 -> Int64 -> Bool Source #

    AEq Integer Source # 
    Instance details

    Defined in Data.AEq

    AEq Ordering Source # 
    Instance details

    Defined in Data.AEq

    AEq Word Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Word -> Word -> Bool Source #

    (~==) :: Word -> Word -> Bool Source #

    AEq Word8 Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Word8 -> Word8 -> Bool Source #

    (~==) :: Word8 -> Word8 -> Bool Source #

    AEq Word16 Source # 
    Instance details

    Defined in Data.AEq

    AEq Word32 Source # 
    Instance details

    Defined in Data.AEq

    AEq Word64 Source # 
    Instance details

    Defined in Data.AEq

    AEq () Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: () -> () -> Bool Source #

    (~==) :: () -> () -> Bool Source #

    AEq CChar Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: CChar -> CChar -> Bool Source #

    (~==) :: CChar -> CChar -> Bool Source #

    AEq CSChar Source # 
    Instance details

    Defined in Data.AEq

    AEq CUChar Source # 
    Instance details

    Defined in Data.AEq

    AEq CShort Source # 
    Instance details

    Defined in Data.AEq

    AEq CUShort Source # 
    Instance details

    Defined in Data.AEq

    AEq CInt Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: CInt -> CInt -> Bool Source #

    (~==) :: CInt -> CInt -> Bool Source #

    AEq CUInt Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: CUInt -> CUInt -> Bool Source #

    (~==) :: CUInt -> CUInt -> Bool Source #

    AEq CLong Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: CLong -> CLong -> Bool Source #

    (~==) :: CLong -> CLong -> Bool Source #

    AEq CULong Source # 
    Instance details

    Defined in Data.AEq

    AEq CLLong Source # 
    Instance details

    Defined in Data.AEq

    AEq CULLong Source # 
    Instance details

    Defined in Data.AEq

    AEq CFloat Source # 
    Instance details

    Defined in Data.AEq

    AEq CDouble Source # 
    Instance details

    Defined in Data.AEq

    AEq CPtrdiff Source # 
    Instance details

    Defined in Data.AEq

    AEq CSize Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: CSize -> CSize -> Bool Source #

    (~==) :: CSize -> CSize -> Bool Source #

    AEq CWchar Source # 
    Instance details

    Defined in Data.AEq

    AEq CSigAtomic Source # 
    Instance details

    Defined in Data.AEq

    AEq CClock Source # 
    Instance details

    Defined in Data.AEq

    AEq CTime Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: CTime -> CTime -> Bool Source #

    (~==) :: CTime -> CTime -> Bool Source #

    AEq CIntPtr Source # 
    Instance details

    Defined in Data.AEq

    AEq CUIntPtr Source # 
    Instance details

    Defined in Data.AEq

    AEq CIntMax Source # 
    Instance details

    Defined in Data.AEq

    AEq CUIntMax Source # 
    Instance details

    Defined in Data.AEq

    AEq WordPtr Source # 
    Instance details

    Defined in Data.AEq

    AEq IntPtr Source # 
    Instance details

    Defined in Data.AEq

    AEq a => AEq [a] Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: [a] -> [a] -> Bool Source #

    (~==) :: [a] -> [a] -> Bool Source #

    AEq a => AEq (Maybe a) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Maybe a -> Maybe a -> Bool Source #

    (~==) :: Maybe a -> Maybe a -> Bool Source #

    AEq (StablePtr a) Source # 
    Instance details

    Defined in Data.AEq

    AEq (Ptr a) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Ptr a -> Ptr a -> Bool Source #

    (~==) :: Ptr a -> Ptr a -> Bool Source #

    AEq (FunPtr a) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: FunPtr a -> FunPtr a -> Bool Source #

    (~==) :: FunPtr a -> FunPtr a -> Bool Source #

    AEq (Complex Double) Source # 
    Instance details

    Defined in Data.AEq

    AEq (Complex Float) Source # 
    Instance details

    Defined in Data.AEq

    AEq (Complex CFloat) Source # 
    Instance details

    Defined in Data.AEq

    AEq (Complex CDouble) Source # 
    Instance details

    Defined in Data.AEq

    AEq (ForeignPtr a) Source # 
    Instance details

    Defined in Data.AEq

    (AEq a, AEq b) => AEq (Either a b) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: Either a b -> Either a b -> Bool Source #

    (~==) :: Either a b -> Either a b -> Bool Source #

    (AEq a, AEq b) => AEq (a, b) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b) -> (a, b) -> Bool Source #

    (~==) :: (a, b) -> (a, b) -> Bool Source #

    (AEq a, AEq b, AEq c) => AEq (a, b, c) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c) -> (a, b, c) -> Bool Source #

    (~==) :: (a, b, c) -> (a, b, c) -> Bool Source #

    (AEq a, AEq b, AEq c, AEq d) => AEq (a, b, c, d) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d) -> (a, b, c, d) -> Bool Source #

    (~==) :: (a, b, c, d) -> (a, b, c, d) -> Bool Source #

    (AEq a, AEq b, AEq c, AEq d, AEq e) => AEq (a, b, c, d, e) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool Source #

    (~==) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool Source #

    (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f) => AEq (a, b, c, d, e, f) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool Source #

    (~==) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool Source #

    (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g) => AEq (a, b, c, d, e, f, g) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Source #

    (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) Source # 
    Instance details

    Defined in Data.AEq

    Methods

    (===) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Source #

    (~==) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Source #