Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- Main Exported Types
- A Complete Pair of Patterns for Matching Exported Types
- Fused Operation Interface defined by the Posit Standard
- Posits are Convertable between different Posit representations
- Additional functions to show the Posit in different formats
- Additional Special Functions
- Functions to lift functions of Integers or Rationals to operate on Posit Types
Library implementing standard Posit Numbers both Posit Standard version 3.2 and 2022, with some improvements. Posit is the interface, PositC provides the implemetation. 2's Complement Fixed Point Integers, and Rational numbers, are used throughout, as well as Integers & Naturals. Encode and Decode are indexed through a Type Family.
Synopsis
- data Posit (es :: ES)
- type Posit8 = Posit Z_3_2
- type Posit16 = Posit I_3_2
- type Posit32 = Posit II_3_2
- type Posit64 = Posit III_3_2
- type Posit128 = Posit IV_3_2
- type Posit256 = Posit V_3_2
- type P8 = Posit Z_2022
- type P16 = Posit I_2022
- type P32 = Posit II_2022
- type P64 = Posit III_2022
- type P128 = Posit IV_2022
- type P256 = Posit V_2022
- pattern NaR :: forall es. PositC es => Posit es
- pattern R :: forall es. PositC es => Rational -> Posit es
- class Num a => FusedOps a where
- fma :: a -> a -> a -> a
- fam :: a -> a -> a -> a
- fmms :: a -> a -> a -> a -> a
- fsum3 :: a -> a -> a -> a
- fsum4 :: a -> a -> a -> a -> a
- fsumL :: Foldable t => t a -> a
- fdot3 :: a -> a -> a -> a -> a -> a -> a
- fdot4 :: a -> a -> a -> a -> a -> a -> a -> a -> a
- fdotL :: Foldable t => t a -> t a -> a
- fsm :: a -> a -> a -> a
- class Convertible a b where
- convert :: a -> b
- class AltShow a where
- displayBinary :: a -> String
- displayIntegral :: a -> String
- displayRational :: a -> String
- displayDecimal :: a -> String
- class AltFloating p where
- viaIntegral :: PositC es => (IntN es -> IntN es) -> Posit es -> Posit es
- viaRational :: PositC es => (Rational -> Rational) -> Posit es -> Posit es
- viaRational2 :: PositC es => (Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es
- viaRational3 :: PositC es => (Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es
- viaRational4 :: PositC es => (Rational -> Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es
- viaRational6 :: PositC es => (Rational -> Rational -> Rational -> Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es
- viaRational8 :: PositC es => (Rational -> Rational -> Rational -> Rational -> Rational -> Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es
Documentation
data Posit (es :: ES) Source #
Base GADT rapper type, that uses the Exponent Size kind to index the various implementations
Instances
PositC es => Storable (Posit es) Source # | |
PositC es => Bounded (Posit es) Source # | |
PositC es => Enum (Posit es) Source # | |
PositF es => Floating (Posit es) Source # | |
Defined in Posit sqrt :: Posit es -> Posit es # (**) :: Posit es -> Posit es -> Posit es # logBase :: Posit es -> Posit es -> Posit es # asin :: Posit es -> Posit es # acos :: Posit es -> Posit es # atan :: Posit es -> Posit es # sinh :: Posit es -> Posit es # cosh :: Posit es -> Posit es # tanh :: Posit es -> Posit es # asinh :: Posit es -> Posit es # acosh :: Posit es -> Posit es # atanh :: Posit es -> Posit es # log1p :: Posit es -> Posit es # expm1 :: Posit es -> Posit es # | |
(Floating (Posit es), PositC es) => RealFloat (Posit es) Source # | |
Defined in Posit floatRadix :: Posit es -> Integer # floatDigits :: Posit es -> Int # floatRange :: Posit es -> (Int, Int) # decodeFloat :: Posit es -> (Integer, Int) # encodeFloat :: Integer -> Int -> Posit es # significand :: Posit es -> Posit es # scaleFloat :: Int -> Posit es -> Posit es # isInfinite :: Posit es -> Bool # isDenormalized :: Posit es -> Bool # isNegativeZero :: Posit es -> Bool # | |
PositC es => Num (Posit es) Source # | |
PositC es => Read (Posit es) Source # | |
PositC es => Fractional (Posit es) Source # | |
PositC es => Real (Posit es) Source # | |
Defined in Posit toRational :: Posit es -> Rational # | |
PositC es => RealFrac (Posit es) Source # | |
PositC es => Show (Posit es) Source # | |
NFData (Posit es) Source # | NFData Instance |
PositC es => Eq (Posit es) Source # | |
PositC es => Ord (Posit es) Source # | |
PositF es => AltFloating (Posit es) Source # | |
Defined in Posit | |
PositC es => AltShow (Posit es) Source # | |
PositC es => FusedOps (Posit es) Source # | |
Defined in Posit fma :: Posit es -> Posit es -> Posit es -> Posit es Source # fam :: Posit es -> Posit es -> Posit es -> Posit es Source # fmms :: Posit es -> Posit es -> Posit es -> Posit es -> Posit es Source # fsum3 :: Posit es -> Posit es -> Posit es -> Posit es Source # fsum4 :: Posit es -> Posit es -> Posit es -> Posit es -> Posit es Source # fsumL :: Foldable t => t (Posit es) -> Posit es Source # fdot3 :: Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es Source # fdot4 :: Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es Source # fdotL :: Foldable t => t (Posit es) -> t (Posit es) -> Posit es Source # fsm :: Posit es -> Posit es -> Posit es -> Posit es Source # | |
PositC es => Random (Posit es) Source # | Random instance for the Posit Sampling of R [0,1), this is for the real numbers, not on the projective real numbers, for projective real numbers, use Uniform. |
PositC es => Uniform (Posit es) Source # | Uniform instance for the Posit Sampling of the projective real line |
Defined in Posit uniformM :: StatefulGen g m => g -> m (Posit es) # | |
(PositC es1, PositC es2) => Convertible (Posit es1) (Posit es2) Source # | |
Main Exported Types
A Posit-3.2 8-bit Posit number with exponentSize
= '0', and 1 byte wide
A Posit-3.2 16-bit Posit number with exponentSize
= '1', and 2 bytes wide
A Posit-3.2 32-bit Posit number with exponentSize
= '2', and 4 bytes wide
A Posit-3.2 64-bit Posit number with exponentSize
= '3', and 8 bytes wide
A Posit-3.2 128-bit Posit number with exponentSize
= '4', and 16 bytes wide
A Posit-3.2 256-bit Posit number with exponentSize
= '5', and 32 bytes wide
A Posit-2022 8-bit Posit number with exponentSize
= '2', and 1 byte wide
A Posit-2022 16-bit Posit number with exponentSize
= '2', and 2 bytes wide
A Posit-2022 32-bit Posit number with exponentSize
= '2', and 4 bytes wide
A Posit-2022 64-bit Posit number with exponentSize
= '2', and 8 bytes wide
A Posit-2022 128-bit Posit number with exponentSize
= '2', and 16 bytes wide
A Posit-2022 256-bit Posit number with exponentSize
= '2', and 32 bytes wide
A Complete Pair of Patterns for Matching Exported Types
pattern NaR :: forall es. PositC es => Posit es Source #
Not a Real Number, the Posit is like a Maybe type, it's either a real number or not
A pattern for Exception handling when a value is Not a Real number (NaR).
pattern R :: forall es. PositC es => Rational -> Posit es Source #
A Real or at least Rational Number, rounded to the nearest Posit Rational representation
A pattern for the non-Exceptional case, yielding a Rational, will make a total function when paired with NaR, if the Rational implementation is total.
Fused Operation Interface defined by the Posit Standard
class Num a => FusedOps a where Source #
A class that delays the rounding operation until the end for some operations
fma :: a -> a -> a -> a Source #
Fused Multiply Add: (a * b) + c
fam :: a -> a -> a -> a Source #
Fused Add Multiply: (a + b) * c
fmms :: a -> a -> a -> a -> a Source #
Fused Multiply Multiply Subtract: (a * b) - (c * d)
fsum3 :: a -> a -> a -> a Source #
Fused Sum of 3 values: a + b + c
fsum4 :: a -> a -> a -> a -> a Source #
Fused Sum of 4 values: a + b + c + d
fsumL :: Foldable t => t a -> a Source #
Fused Sum of a List of Posits
fdot3 :: a -> a -> a -> a -> a -> a -> a Source #
Fused Dot Product of 3 element vector: (a1 * b1) + (a2 * b2) + (a3 * b3)
fdot4 :: a -> a -> a -> a -> a -> a -> a -> a -> a Source #
Fused Dot Product of 4 element vector: (a0 * b0) + (a1 * b1) + (a2 * b2) + (a3 * b3)
fdotL :: Foldable t => t a -> t a -> a Source #
Fused Dot Product of Two Lists
fsm :: a -> a -> a -> a Source #
Fused Subtract Multiply: a - (b * c)
Instances
Posits are Convertable between different Posit representations
class Convertible a b where Source #
A Convertible class that will cast or convert
between two different Posit es types
Additional functions to show the Posit in different formats
class AltShow a where Source #
A Alternative to the typical Show
class to assist in displaying the Posit es type in different formats
displayBinary :: a -> String Source #
Display the Posit in its Binary Representation
displayIntegral :: a -> String Source #
Display the Posit in its Integral Representation
displayRational :: a -> String Source #
Display the Posit as a Rational
displayDecimal :: a -> String Source #
Display the Posit as a Decimal until the Repetend occurs
Additional Special Functions
class AltFloating p where Source #
approxEq :: p -> p -> Bool Source #
goldenRatio :: p Source #
hypot2 :: p -> p -> p Source #
Functions to lift functions of Integers or Rationals to operate on Posit Types
viaRational2 :: PositC es => (Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es Source #
viaRational3 :: PositC es => (Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es Source #
viaRational4 :: PositC es => (Rational -> Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es Source #