Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- f32w08 :: Cast k Float (Extended Word8)
- f32w16 :: Cast k Float (Extended Word16)
- f32w32 :: Cast L Float (Extended Word32)
- f32w64 :: Cast L Float (Extended Word64)
- f32wxx :: Cast L Float (Extended Word)
- f32nat :: Cast L Float (Extended Natural)
- f32i08 :: Cast k Float (Extended Int8)
- f32i16 :: Cast k Float (Extended Int16)
- f32i32 :: Cast L Float (Extended Int32)
- f32i64 :: Cast L Float (Extended Int64)
- f32ixx :: Cast L Float (Extended Int)
- f32int :: Cast L Float (Extended Integer)
- f32f32 :: Cast k (Float, Float) Float
- f64f32 :: Cast k Double Float
- ratf32 :: Cast k Rational Float
- ulp32 :: Float -> Float -> Maybe (Ordering, Word32)
- near32 :: Word32 -> Float -> Float -> Bool
- shift32 :: Int32 -> Float -> Float
- f64w08 :: Cast k Double (Extended Word8)
- f64w16 :: Cast k Double (Extended Word16)
- f64w32 :: Cast k Double (Extended Word32)
- f64w64 :: Cast L Double (Extended Word64)
- f64wxx :: Cast L Double (Extended Word)
- f64nat :: Cast L Double (Extended Natural)
- f64i08 :: Cast k Double (Extended Int8)
- f64i16 :: Cast k Double (Extended Int16)
- f64i32 :: Cast k Double (Extended Int32)
- f64i64 :: Cast L Double (Extended Int64)
- f64ixx :: Cast L Double (Extended Int)
- f64int :: Cast L Double (Extended Integer)
- f64f64 :: Cast k (Double, Double) Double
- ratf64 :: Cast k Rational Double
- ulp64 :: Double -> Double -> Maybe (Ordering, Word64)
- near64 :: Word64 -> Double -> Double -> Bool
- shift64 :: Int64 -> Double -> Double
Float
ulp32 :: Float -> Float -> Maybe (Ordering, Word32) Source #
Compute the signed distance between two floats in units of least precision.
>>>
ulp32 1.0 (shift32 1 1.0)
Just (LT,1)>>>
ulp32 (0.0/0.0) 1.0
Nothing
near32 :: Word32 -> Float -> Float -> Bool Source #
Compare two floats for approximate equality.
Required accuracy is specified in units of least precision.
See https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/.
shift32 :: Int32 -> Float -> Float Source #
Shift a float by n units of least precision.
>>>
shift32 1 0
1.0e-45>>>
shift32 1 1 - 1
1.1920929e-7>>>
shift32 1 $ 0/0
Infinity>>>
shift32 (-1) $ 0/0
-Infinity>>>
shift32 1 $ 1/0
Infinity
Double
ulp64 :: Double -> Double -> Maybe (Ordering, Word64) Source #
Compute the signed distance between two doubles in units of least precision.
>>>
ulp64 1.0 (shift64 1 1.0)
Just (LT,1)>>>
ulp64 (0.0/0.0) 1.0
Nothing