Copyright | Copyright (c) 2010 Patrick Perry <patperry@gmail.com> |
---|---|
License | BSD3 |
Maintainer | Patrick Perry <patperry@gmail.com> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell98 |
Numeric.IEEE
Description
Operations on IEEE floating point numbers.
Synopsis
- class RealFloat a => IEEE a where
- infinity :: a
- minDenormal :: a
- minNormal :: a
- maxFinite :: a
- epsilon :: a
- copySign :: a -> a -> a
- identicalIEEE :: a -> a -> Bool
- succIEEE :: a -> a
- predIEEE :: a -> a
- bisectIEEE :: a -> a -> a
- sameSignificandBits :: a -> a -> Int
- nan :: a
- nanWithPayload :: Word64 -> a
- maxNaNPayload :: a -> Word64
- nanPayload :: a -> Word64
- minNum :: RealFloat a => a -> a -> a
- maxNum :: RealFloat a => a -> a -> a
- minNaN :: RealFloat a => a -> a -> a
- maxNaN :: RealFloat a => a -> a -> a
IEEE type class
class RealFloat a => IEEE a where #
IEEE floating point types.
Methods
Infinity value.
minDenormal :: a #
The smallest representable positive value.
The smallest representable positive normalized value.
The largest representable finite value.
The smallest positive value x
such that 1 + x
is representable.
copySign x y
returns x
with its sign changed to y
's.
identicalIEEE :: a -> a -> Bool #
Return True
if two values are exactly (bitwise) equal.
Return the next largest IEEE value (Infinity
and NaN
are
unchanged).
Return the next smallest IEEE value (-Infinity
and NaN
are
unchanged).
bisectIEEE :: a -> a -> a #
Given two values with the same sign, return the value halfway
between them on the IEEE number line. If the signs of the values
differ or either is NaN
, the value is undefined.
sameSignificandBits :: a -> a -> Int #
The number of significand bits which are equal in the two arguments
(equivalent to feqrel
from the Tango Math library). The result is
between 0
and
.floatDigits
Default NaN
value.
nanWithPayload :: Word64 -> a #
Quiet NaN
value with a positive integer payload. Payload must be
less than maxNaNPayload
. Beware that while some platforms allow
using 0
as a payload, this behavior is not portable.
maxNaNPayload :: a -> Word64 #
Maximum NaN
payload for type a
.
nanPayload :: a -> Word64 #
The payload stored in a NaN
value. Undefined if the argument
is not NaN
.
Instances
IEEE CDouble # | |
Defined in Numeric.IEEE Methods minDenormal :: CDouble # copySign :: CDouble -> CDouble -> CDouble # identicalIEEE :: CDouble -> CDouble -> Bool # succIEEE :: CDouble -> CDouble # predIEEE :: CDouble -> CDouble # bisectIEEE :: CDouble -> CDouble -> CDouble # sameSignificandBits :: CDouble -> CDouble -> Int # nanWithPayload :: Word64 -> CDouble # maxNaNPayload :: CDouble -> Word64 # nanPayload :: CDouble -> Word64 # | |
IEEE CFloat # | |
Defined in Numeric.IEEE Methods minDenormal :: CFloat # copySign :: CFloat -> CFloat -> CFloat # identicalIEEE :: CFloat -> CFloat -> Bool # succIEEE :: CFloat -> CFloat # predIEEE :: CFloat -> CFloat # bisectIEEE :: CFloat -> CFloat -> CFloat # sameSignificandBits :: CFloat -> CFloat -> Int # nanWithPayload :: Word64 -> CFloat # maxNaNPayload :: CFloat -> Word64 # nanPayload :: CFloat -> Word64 # | |
IEEE Double # | |
Defined in Numeric.IEEE Methods minDenormal :: Double # copySign :: Double -> Double -> Double # identicalIEEE :: Double -> Double -> Bool # succIEEE :: Double -> Double # predIEEE :: Double -> Double # bisectIEEE :: Double -> Double -> Double # sameSignificandBits :: Double -> Double -> Int # nanWithPayload :: Word64 -> Double # maxNaNPayload :: Double -> Word64 # nanPayload :: Double -> Word64 # | |
IEEE Float # | |
Defined in Numeric.IEEE Methods minDenormal :: Float # copySign :: Float -> Float -> Float # identicalIEEE :: Float -> Float -> Bool # bisectIEEE :: Float -> Float -> Float # sameSignificandBits :: Float -> Float -> Int # nanWithPayload :: Word64 -> Float # maxNaNPayload :: Float -> Word64 # nanPayload :: Float -> Word64 # |
NaN-aware minimum and maximum
minNum :: RealFloat a => a -> a -> a #
Return the minimum 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 maximum of two values; if one value is NaN
, return the
other. Prefer the first if both values are NaN
.