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

Stability experimental Patrick Perry

Numeric.IEEE

Description

Operations on IEEE floating point numbers.

Synopsis

# IEEE type class

class RealFloat a => IEEE a whereSource

IEEE floating point types.

Methods

infinity :: aSource

Infinity value.

minNormal :: aSource

The smallest representable positive normalized value.

maxFinite :: aSource

The largest representable finite value.

epsilon :: aSource

The smallest representalbe positive value `x` such that `1 + x /= 1`.

copySign :: a -> a -> aSource

`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.

succIEEE :: a -> aSource

Return the next largest IEEE value (`Infinity` and `NaN` are unchanged).

predIEEE :: a -> aSource

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`.

nan :: aSource

Default `NaN` value.

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.

Maximum `NaN` payload for type `a`.

The payload stored in a `NaN` value. Undefined if the argument is not `NaN`.

Instances

 IEEE Double IEEE Float IEEE CFloat IEEE CDouble

# 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`.

minNaN :: RealFloat a => a -> a -> aSource

Return the minimum of two values; if one value is `NaN`, return it. Prefer the first if both values are `NaN`.

maxNaN :: RealFloat a => a -> a -> aSource

Return the maximum of two values; if one value is `NaN`, return it. Prefer the first if both values are `NaN`.