crackNum-1.4: Crack various integer, floating-point data formats

Copyright(c) Levent Erkok
LicenseBSD3
Maintainererkokl@gmail.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Data.Numbers.CrackNum

Contents

Description

A library for formatting/analyzing FP and Integer values

Synopsis

Internal representation of a Floating-point numbers

data FP Source

Complete internal representation for a floating-point number

Constructors

FP 

Fields

intVal :: Integer

The value as represented as a full Integer. Storage purposes only.

prec :: Precision

FP precision.

sign :: Bool

Sign. If True then negative, otherwise positive.

stExpt :: Int

The exponent as it is stored.

bias :: Int

The implicit bias of the exponent.

expt :: Int

The actual exponent.

fracBits :: [Bool]

Bits in the fractional part

bitLayOut :: String

Layout representation

kind :: Kind

Floating-point kind (i.e., value)

data Precision Source

Floating point precision

Constructors

HP

Half precision; 16 bits = 1 sign + 5 exponent + 10 mantissa

SP

Single precision; 32 bits = 1 sign + 8 exponent + 23 mantissa

DP

Double precision; 64 bits = 1 sign + 11 exponent + 52 mantissa

data IPrecision Source

Integer/Word precision

Constructors

W8

8-bit unsigned (byte)

I8

8-bit signed

W16

16-bit unsigned (word)

I16

16-bit signed

W32

32-bit unsigned (double-word)

I32

32-bit signed

W64

64-bit unsigned (quad-word)

I64

64-bit signed

Instances

Eq IPrecision Source 
Show IPrecision Source

Show instance for integer-precisions

data Kind Source

Kinds of floating point values

Constructors

Zero Bool

Zero: 0. If Bool is true, then this is -0; otherwise +0.

Infty Bool

Infinity: oo. If Bool is true, then this is -oo, otherwie +oo.

SNaN

The screaming-NaN.

QNaN

The quiet-NaN.

Denormal

Denormalized number, i.e., leading bit is not 1

Normal

Normal value.

Creating FP values

floatToFP :: Float -> FP Source

Turn a Haskell float to the internal detailed FP representation

doubleToFP :: Double -> FP Source

Turn a Haskell double to the internal detailed FP representation

stringToFP :: Precision -> String -> FP Source

Convert the given string to a IEEE number with the required precision

integerToFP :: Precision -> Integer -> FP Source

Crack a Haskell Integer value as the given precision floating value. The Integer should be the value corresponding to the bit-pattern as the float is laid out in memory according to the IEEE rules.

Displaying FP and Int/Word values

displayFP :: FP -> String Source

Display a Floating-point number in a nicely formatted way. (This function is also available through the Show instance for FP, but is provided here for symmetry with displayWord.)

displayWord :: IPrecision -> Integer -> String Source

Display a Integer (signed/unsigned) number in a nicely formatted way