half-0.3: Half-precision floating-point

Copyright | (C) 2014 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | PatternSynonyms
Safe Haskell | None
Language | Haskell98

Numeric.Half

Description

Half-precision floating-point values. These arise commonly in GPU work and it is useful to be able to compute them and compute with them on the CPU as well.

Synopsis

- newtype Half = Half {
  - getHalf :: CUShort
  }
- isZero :: Half -> Bool
- fromHalf :: Half -> Float
- toHalf :: Float -> Half
- pattern POS_INF :: Half
- pattern NEG_INF :: Half
- pattern QNaN :: Half
- pattern SNaN :: Half
- pattern HALF_MIN :: Half
- pattern HALF_NRM_MIN :: Half
- pattern HALF_MAX :: Half
- pattern HALF_EPSILON :: Half
- pattern HALF_DIG :: (Eq a, Num a) => a
- pattern HALF_MIN_10_EXP :: (Eq a, Num a) => a
- pattern HALF_MAX_10_EXP :: (Eq a, Num a) => a

# Documentation

newtype Half Source #

Constructors

Half |

Fields

- getHalf :: CUShort

#### Instances

Instances details

Eq Half Source # |
Instance details Defined in Numeric.Half Methods (==) :: Half -> Half -> Bool (/=) :: Half -> Half -> Bool
Floating Half Source # |

Instance details

Defined in Numeric.Half

Methods

pi :: Half

exp :: Half -> Half

log :: Half -> Half

sqrt :: Half -> Half

(**) :: Half -> Half -> Half

logBase :: Half -> Half -> Half

sin :: Half -> Half

cos :: Half -> Half

tan :: Half -> Half

asin :: Half -> Half

acos :: Half -> Half

atan :: Half -> Half

sinh :: Half -> Half

cosh :: Half -> Half

tanh :: Half -> Half

asinh :: Half -> Half

acosh :: Half -> Half

atanh :: Half -> Half

log1p :: Half -> Half

expm1 :: Half -> Half

log1pexp :: Half -> Half

log1mexp :: Half -> Half

Fractional Half Source # |
Instance details Defined in Numeric.Half Methods (/) :: Half -> Half -> Half recip :: Half -> Half fromRational :: Rational -> Half
Num Half Source # |
Instance details Defined in Numeric.Half Methods (+) :: Half -> Half -> Half (-) :: Half -> Half -> Half (*) :: Half -> Half -> Half negate :: Half -> Half abs :: Half -> Half signum :: Half -> Half fromInteger :: Integer -> Half
Ord Half Source # |
Instance details Defined in Numeric.Half Methods compare :: Half -> Half -> Ordering (<) :: Half -> Half -> Bool (<=) :: Half -> Half -> Bool (>) :: Half -> Half -> Bool (>=) :: Half -> Half -> Bool max :: Half -> Half -> Half min :: Half -> Half -> Half
Read Half Source # |
Instance details Defined in Numeric.Half Methods readsPrec :: Int -> ReadS Half readList :: ReadS [Half] readPrec :: ReadPrec Half readListPrec :: ReadPrec [Half]
Real Half Source # |
Instance details Defined in Numeric.Half Methods toRational :: Half -> Rational
RealFloat Half Source # |

Instance details

Defined in Numeric.Half

Methods

floatRadix :: Half -> Integer

floatDigits :: Half -> Int

floatRange :: Half -> (Int, Int)

decodeFloat :: Half -> (Integer, Int)

encodeFloat :: Integer -> Int -> Half

exponent :: Half -> Int

significand :: Half -> Half

scaleFloat :: Int -> Half -> Half

isNaN :: Half -> Bool

isInfinite :: Half -> Bool

isDenormalized :: Half -> Bool

isNegativeZero :: Half -> Bool

isIEEE :: Half -> Bool

atan2 :: Half -> Half -> Half

RealFrac Half Source # |
Instance details Defined in Numeric.Half Methods properFraction :: Integral b => Half -> (b, Half) truncate :: Integral b => Half -> b round :: Integral b => Half -> b ceiling :: Integral b => Half -> b floor :: Integral b => Half -> b
Show Half Source # |
Instance details Defined in Numeric.Half Methods showsPrec :: Int -> Half -> ShowS show :: Half -> String showList :: [Half] -> ShowS
Generic Half Source # |
Instance details Defined in Numeric.Half Associated Types type Rep Half :: Type -> Type Methods from :: Half -> Rep Half x to :: Rep Half x -> Half
Lift Half Source # |
Instance details Defined in Numeric.Half Methods lift :: Half -> Q Exp
NFData Half Source # |
Instance details Defined in Numeric.Half Methods rnf :: Half -> ()
Storable Half Source # |
Instance details Defined in Numeric.Half Methods sizeOf :: Half -> Int alignment :: Half -> Int peekElemOff :: Ptr Half -> Int -> IO Half pokeElemOff :: Ptr Half -> Int -> Half -> IO () peekByteOff :: Ptr b -> Int -> IO Half pokeByteOff :: Ptr b -> Int -> Half -> IO () peek :: Ptr Half -> IO Half poke :: Ptr Half -> Half -> IO ()
type Rep Half Source # |
Instance details Defined in Numeric.Half type Rep Half = D1 ('MetaData "Half" "Numeric.Half" "half-0.3-sDjECUyk3x1ItifQKye0" 'True) (C1 ('MetaCons "Half" 'PrefixI 'True) (S1 ('MetaSel ('Just "getHalf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CUShort)))

isZero :: Half -> Bool Source #

Is this `Half` equal to 0?

fromHalf :: Half -> Float Source #

Convert a `Half` to a `Float` while preserving NaN

toHalf :: Float -> Half Source #

Convert a `Float` to a `Half` with proper rounding, while preserving NaN and dealing appropriately with infinity

pattern POS_INF :: Half Source #

Positive infinity

pattern NEG_INF :: Half Source #

Negative infinity

pattern QNaN :: Half Source #

Quiet NaN

pattern SNaN :: Half Source #

Signalling NaN

pattern HALF_MIN :: Half Source #

Smallest positive half

pattern HALF_NRM_MIN :: Half Source #

Smallest positive normalized half

pattern HALF_MAX :: Half Source #

Largest positive half

pattern HALF_EPSILON :: Half Source #

Smallest positive e for which half (1.0 + e) != half (1.0)

pattern HALF_DIG :: (Eq a, Num a) => a Source #

Number of base 10 digits that can be represented without change

pattern HALF_MIN_10_EXP :: (Eq a, Num a) => a Source #

pattern HALF_MAX_10_EXP :: (Eq a, Num a) => a Source #