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

Numeric.IEEE

Contents

Description

Operations on IEEE floating point numbers.

Synopsis

IEEE type class

class RealFloat a => IEEE a where #

IEEE floating point types.

Methods

infinity :: a #

Infinity value.

minDenormal :: a #

The smallest representable positive value.

minNormal :: a #

The smallest representable positive normalized value.

maxFinite :: a #

The largest representable finite value.

epsilon :: a #

The smallest positive value x such that 1 + x is representable.

copySign :: a -> a -> a #

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.

succIEEE :: a -> a #

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

predIEEE :: a -> a #

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.

nan :: a #

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 Double # 
IEEE Float # 
IEEE CFloat # 
IEEE CDouble # 

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.

minNaN :: RealFloat a => a -> a -> a #

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 -> a #

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