ieee-0.7: Utilities for dealing with IEEE floating point numbers

Stabilityexperimental
MaintainerPatrick Perry <patperry@gmail.com>

Numeric.IEEE

Contents

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.

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.

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.