| Copyright | (C) 2014 Edward Kmett |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Stability | experimental |
| Portability | PatternSynonyms |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Numeric.Half.Internal
Contents
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
- pure_floatToHalf :: Float -> Half
- pure_halfToFloat :: Half -> Float
Documentation
Instances
| Storable Half Source # | |
Defined in Numeric.Half.Internal Methods peekElemOff :: Ptr Half -> Int -> IO Half pokeElemOff :: Ptr Half -> Int -> Half -> IO () peekByteOff :: Ptr b -> Int -> IO Half pokeByteOff :: Ptr b -> Int -> Half -> IO () | |
| Floating Half Source # | |
Defined in Numeric.Half.Internal | |
| RealFloat Half Source # | |
Defined in Numeric.Half.Internal Methods floatRadix :: Half -> Integer floatDigits :: Half -> Int floatRange :: Half -> (Int, Int) decodeFloat :: Half -> (Integer, Int) encodeFloat :: Integer -> Int -> Half significand :: Half -> Half scaleFloat :: Int -> Half -> Half isInfinite :: Half -> Bool isDenormalized :: Half -> Bool isNegativeZero :: Half -> Bool | |
| Generic Half Source # | |
| Num Half Source # | |
| Read Half Source # | |
Defined in Numeric.Half.Internal | |
| Fractional Half Source # | |
Defined in Numeric.Half.Internal | |
| Real Half Source # | |
Defined in Numeric.Half.Internal Methods toRational :: Half -> Rational | |
| RealFrac Half Source # | |
| Show Half Source # | |
| Binary Half Source # | |
| NFData Half Source # | |
Defined in Numeric.Half.Internal | |
| Eq Half Source # | |
| Ord Half Source # | |
| Lift Half Source # | |
| type Rep Half Source # | |
Defined in Numeric.Half.Internal type Rep Half = D1 ('MetaData "Half" "Numeric.Half.Internal" "half-0.3.1-60qJgit6UE35Vp0WewyM9N" 'True) (C1 ('MetaCons "Half" 'PrefixI 'True) (S1 ('MetaSel ('Just "getHalf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CUShort))) | |
toHalf :: Float -> Half Source #
Convert a Float to a Half with proper rounding, while preserving NaN and dealing appropriately with infinity
Patterns
These are available with GHC-7.8 and later.
pattern HALF_NRM_MIN :: Half Source #
Smallest positive normalized 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 #
Pure conversions
pure_floatToHalf :: Float -> Half Source #
Naive pure-Haskell implementation of toHalf.
pure_halfToFloat :: Half -> Float Source #
Naive pure-Haskell implementation of fromHalf.