posit-3.2.0.3
Safe HaskellSafe-Inferred
LanguageHaskell2010

Posit

Description

Library implementing standard Posit Numbers (Posit Standard version 3.2, with some improvements) a fixed width word size of 2^es bytes.

Synopsis

Documentation

data Posit (es :: ES) Source #

Base GADT rapper type, that uses the Exponent Size kind to index the various implementations

Instances

Instances details
Floating Posit128 Source # 
Instance details

Defined in Posit

Floating Posit16 Source # 
Instance details

Defined in Posit

Floating Posit256 Source # 
Instance details

Defined in Posit

Floating Posit32 Source # 
Instance details

Defined in Posit

Floating Posit64 Source # 
Instance details

Defined in Posit

Floating Posit8 Source # 
Instance details

Defined in Posit

AltFloating Posit128 Source # 
Instance details

Defined in Posit

AltFloating Posit16 Source # 
Instance details

Defined in Posit

AltFloating Posit256 Source # 
Instance details

Defined in Posit

AltFloating Posit32 Source # 
Instance details

Defined in Posit

AltFloating Posit64 Source # 
Instance details

Defined in Posit

AltFloating Posit8 Source # 
Instance details

Defined in Posit

PositC es => Storable (Posit es) Source # 
Instance details

Defined in Posit

Methods

sizeOf :: Posit es -> Int #

alignment :: Posit es -> Int #

peekElemOff :: Ptr (Posit es) -> Int -> IO (Posit es) #

pokeElemOff :: Ptr (Posit es) -> Int -> Posit es -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Posit es) #

pokeByteOff :: Ptr b -> Int -> Posit es -> IO () #

peek :: Ptr (Posit es) -> IO (Posit es) #

poke :: Ptr (Posit es) -> Posit es -> IO () #

PositC es => Bounded (Posit es) Source # 
Instance details

Defined in Posit

Methods

minBound :: Posit es #

maxBound :: Posit es #

PositC es => Enum (Posit es) Source # 
Instance details

Defined in Posit

Methods

succ :: Posit es -> Posit es #

pred :: Posit es -> Posit es #

toEnum :: Int -> Posit es #

fromEnum :: Posit es -> Int #

enumFrom :: Posit es -> [Posit es] #

enumFromThen :: Posit es -> Posit es -> [Posit es] #

enumFromTo :: Posit es -> Posit es -> [Posit es] #

enumFromThenTo :: Posit es -> Posit es -> Posit es -> [Posit es] #

(Floating (Posit es), PositC es) => RealFloat (Posit es) Source # 
Instance details

Defined in Posit

Methods

floatRadix :: Posit es -> Integer #

floatDigits :: Posit es -> Int #

floatRange :: Posit es -> (Int, Int) #

decodeFloat :: Posit es -> (Integer, Int) #

encodeFloat :: Integer -> Int -> Posit es #

exponent :: Posit es -> Int #

significand :: Posit es -> Posit es #

scaleFloat :: Int -> Posit es -> Posit es #

isNaN :: Posit es -> Bool #

isInfinite :: Posit es -> Bool #

isDenormalized :: Posit es -> Bool #

isNegativeZero :: Posit es -> Bool #

isIEEE :: Posit es -> Bool #

atan2 :: Posit es -> Posit es -> Posit es #

PositC es => Num (Posit es) Source # 
Instance details

Defined in Posit

Methods

(+) :: Posit es -> Posit es -> Posit es #

(-) :: Posit es -> Posit es -> Posit es #

(*) :: Posit es -> Posit es -> Posit es #

negate :: Posit es -> Posit es #

abs :: Posit es -> Posit es #

signum :: Posit es -> Posit es #

fromInteger :: Integer -> Posit es #

PositC es => Read (Posit es) Source # 
Instance details

Defined in Posit

PositC es => Fractional (Posit es) Source # 
Instance details

Defined in Posit

Methods

(/) :: Posit es -> Posit es -> Posit es #

recip :: Posit es -> Posit es #

fromRational :: Rational -> Posit es #

PositC es => Real (Posit es) Source # 
Instance details

Defined in Posit

Methods

toRational :: Posit es -> Rational #

PositC es => RealFrac (Posit es) Source # 
Instance details

Defined in Posit

Methods

properFraction :: Integral b => Posit es -> (b, Posit es) #

truncate :: Integral b => Posit es -> b #

round :: Integral b => Posit es -> b #

ceiling :: Integral b => Posit es -> b #

floor :: Integral b => Posit es -> b #

PositC es => Show (Posit es) Source # 
Instance details

Defined in Posit

Methods

showsPrec :: Int -> Posit es -> ShowS #

show :: Posit es -> String #

showList :: [Posit es] -> ShowS #

PositC es => Eq (Posit es) Source # 
Instance details

Defined in Posit

Methods

(==) :: Posit es -> Posit es -> Bool #

(/=) :: Posit es -> Posit es -> Bool #

PositC es => Ord (Posit es) Source # 
Instance details

Defined in Posit

Methods

compare :: Posit es -> Posit es -> Ordering #

(<) :: Posit es -> Posit es -> Bool #

(<=) :: Posit es -> Posit es -> Bool #

(>) :: Posit es -> Posit es -> Bool #

(>=) :: Posit es -> Posit es -> Bool #

max :: Posit es -> Posit es -> Posit es #

min :: Posit es -> Posit es -> Posit es #

PositC es => AltShow (Posit es) Source # 
Instance details

Defined in Posit

PositC es => FusedOps (Posit es) Source # 
Instance details

Defined in Posit

Methods

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 es1, PositC es2) => Convertible (Posit es1) (Posit es2) Source # 
Instance details

Defined in Posit

Methods

convert :: Posit es1 -> Posit es2 Source #

Main Exported Types

An 8-bit Posit number with es ~ Z

An 16-bit Posit number with es ~ I

An 32-bit Posit number with es ~ II

An 64-bit Posit number with es ~ III

An 128-bit Posit number with es ~ IV

An 256-bit Posit number with es ~ V

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

Methods

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

Instances details
FusedOps Rational Source # 
Instance details

Defined in Posit

PositC es => FusedOps (Posit es) Source # 
Instance details

Defined in Posit

Methods

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 #

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

Methods

convert :: a -> b Source #

Instances

Instances details
(PositC es1, PositC es2) => Convertible (Posit es1) (Posit es2) Source # 
Instance details

Defined in Posit

Methods

convert :: Posit es1 -> Posit es2 Source #

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

Methods

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

Instances

Instances details
PositC es => AltShow (Posit es) Source # 
Instance details

Defined in Posit

Additional Special Functions

class AltFloating p where Source #

Methods

phi :: p Source #

gamma :: p -> p Source #

sinc :: p -> p Source #

expm1 :: p -> p Source #

Functions to lift functions of Integers or Rationals to operate on Posit Types

viaIntegral :: PositC es => (IntN es -> IntN es) -> Posit es -> Posit es Source #

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 #

viaRational6 :: PositC es => (Rational -> Rational -> Rational -> Rational -> Rational -> Rational -> Rational) -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es -> Posit es Source #

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 Source #