-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Crack various integer, floating-point data formats
--
-- Crack HP, SP and DP floats and 8, 16, 32, 64 bit words and integers.
--
-- For details, please see:
-- http://github.com/LeventErkok/crackNum/
@package crackNum
@version 2.2
-- | A library for formatting/analyzing FP and Integer values
module Data.Numbers.CrackNum
-- | Complete internal representation for a floating-point number
data FP
FP :: Integer -> Precision -> Bool -> Int -> Int -> Int -> [Bool] -> String -> Kind -> FP
-- | The value as represented as a full Integer. Storage purposes only.
[intVal] :: FP -> Integer
-- | FP precision.
[prec] :: FP -> Precision
-- | Sign. If True then negative, otherwise positive.
[sign] :: FP -> Bool
-- | The exponent as it is stored.
[stExpt] :: FP -> Int
-- | The implicit bias of the exponent.
[bias] :: FP -> Int
-- | The actual exponent.
[expt] :: FP -> Int
-- | Bits in the fractional part
[fracBits] :: FP -> [Bool]
-- | Layout representation
[bitLayOut] :: FP -> String
-- | Floating-point kind (i.e., value)
[kind] :: FP -> Kind
-- | Floating point precision
data Precision
-- | Half precision; 16 bits = 1 sign + 5 exponent + 10 mantissa
HP :: Precision
-- | Single precision; 32 bits = 1 sign + 8 exponent + 23 mantissa
SP :: Precision
-- | Double precision; 64 bits = 1 sign + 11 exponent + 52 mantissa
DP :: Precision
-- | Integer/Word precision
data IPrecision
-- | 8-bit unsigned (byte)
W8 :: IPrecision
-- | 8-bit signed
I8 :: IPrecision
-- | 16-bit unsigned (word)
W16 :: IPrecision
-- | 16-bit signed
I16 :: IPrecision
-- | 32-bit unsigned (double-word)
W32 :: IPrecision
-- | 32-bit signed
I32 :: IPrecision
-- | 64-bit unsigned (quad-word)
W64 :: IPrecision
-- | 64-bit signed
I64 :: IPrecision
-- | Kinds of floating point values
data Kind
-- | Zero: 0. If Bool is true, then this is -0; otherwise +0.
Zero :: Bool -> Kind
-- | Infinity: oo. If Bool is true, then this is -oo, otherwie +oo.
Infty :: Bool -> Kind
-- | The signaling-NaN.
SNaN :: Kind
-- | The quiet-NaN.
QNaN :: Kind
-- | Denormalized number, i.e., leading bit is not 1
Denormal :: Kind
-- | Normal value.
Normal :: Kind
-- | Turn a Haskell float to the internal detailed FP representation
floatToFP :: Float -> FP
-- | Turn a Haskell double to the internal detailed FP representation
doubleToFP :: Double -> FP
-- | Convert the given string to a IEEE number with the required precision
stringToFP :: Precision -> String -> FP
-- | 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.
integerToFP :: Precision -> Integer -> FP
-- | 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.)
displayFP :: FP -> String
-- | Display a Integer (signed/unsigned) number in a nicely formatted way
displayWord :: IPrecision -> Integer -> String
instance GHC.Show.Show Data.Numbers.CrackNum.Data.FP