Stability | experimental |
---|---|

Maintainer | Patrick Perry <patperry@gmail.com> |

Operations on IEEE floating point numbers.

- class RealFloat a => IEEE a where
- infinity :: 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 whereSource

IEEE floating point types.

Infinity value.

The smallest representable positive normalized value.

The largest representable finite value.

The smallest representalbe positive value `x`

such that `1 + x /= 1`

.

`copySign x y`

returns `x`

with its sign changed to `y`

's.

identicalIEEE :: a -> a -> BoolSource

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 -> aSource

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 -> IntSource

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 -> aSource

`NaN`

value with a positive integer payload. Payload must be
ess than `maxNaNPayload`

. Beware that while some platforms allow
using `0`

as a payload, this behavior is not portable.

maxNaNPayload :: a -> Word64Source

Maximum `NaN`

payload for type `a`

.

nanPayload :: a -> Word64Source

The payload stored in a `NaN`

value. Undefined if the argument
is not `NaN`

.

# NaN-aware minimum and maximum

minNum :: RealFloat a => a -> a -> aSource

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 -> aSource

Return the maximum of two values; if one value is `NaN`

, return the
other. Prefer the first if both values are `NaN`

.