half-0.3.2: Half-precision floating-point
Copyright(C) 2014 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
PortabilityPatternSynonyms
Safe HaskellTrustworthy
LanguageHaskell2010

Numeric.Half.Internal

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

Documentation

newtype Half Source #

A half-precision floating point value

Constructors

Half 

Fields

Instances

Instances details
Binary Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

put :: Half -> Put

get :: Get Half

putList :: [Half] -> Put

NFData Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

rnf :: Half -> ()

Floating Half Source # 
Instance details

Defined in Numeric.Half.Internal

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

RealFloat Half Source # 
Instance details

Defined in Numeric.Half.Internal

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

Storable Half Source # 
Instance details

Defined in Numeric.Half.Internal

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 ()

Generic Half Source # 
Instance details

Defined in Numeric.Half.Internal

Associated Types

type Rep Half 
Instance details

Defined in Numeric.Half.Internal

type Rep Half = D1 ('MetaData "Half" "Numeric.Half.Internal" "half-0.3.2-9VpkDf4wlPx95ClAf6yBV4" 'True) (C1 ('MetaCons "Half" 'PrefixI 'True) (S1 ('MetaSel ('Just "getHalf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CUShort)))

Methods

from :: Half -> Rep Half x

to :: Rep Half x -> Half

Num Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

(+) :: Half -> Half -> Half

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

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

negate :: Half -> Half

abs :: Half -> Half

signum :: Half -> Half

fromInteger :: Integer -> Half

Read Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

readsPrec :: Int -> ReadS Half

readList :: ReadS [Half]

readPrec :: ReadPrec Half

readListPrec :: ReadPrec [Half]

Fractional Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

(/) :: Half -> Half -> Half

recip :: Half -> Half

fromRational :: Rational -> Half

Real Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

toRational :: Half -> Rational

RealFrac Half Source # 
Instance details

Defined in Numeric.Half.Internal

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.Internal

Methods

showsPrec :: Int -> Half -> ShowS

show :: Half -> String

showList :: [Half] -> ShowS

Eq Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

(==) :: Half -> Half -> Bool

(/=) :: Half -> Half -> Bool

Ord Half Source # 
Instance details

Defined in Numeric.Half.Internal

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

Lift Half Source # 
Instance details

Defined in Numeric.Half.Internal

Methods

lift :: Quote m => Half -> m Exp

liftTyped :: forall (m :: Type -> Type). Quote m => Half -> Code m Half

type Rep Half Source # 
Instance details

Defined in Numeric.Half.Internal

type Rep Half = D1 ('MetaData "Half" "Numeric.Half.Internal" "half-0.3.2-9VpkDf4wlPx95ClAf6yBV4" '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

Patterns

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 #

Minimum positive integer such that 10 raised to that power is a normalized half

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

Maximum positive integer such that 10 raised to that power is a normalized half

Pure conversions

pure_floatToHalf :: Float -> Half Source #

Naive pure-Haskell implementation of toHalf.

pure_halfToFloat :: Half -> Float Source #

Naive pure-Haskell implementation of fromHalf.