Copyright | (C) 2013-2015, University of Twente |
---|---|
License | BSD2 (see the file LICENSE) |
Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
Safe Haskell | Safe |
Language | Haskell2010 |
Extensions |
|
- class ExtendingNum a b where
- data SaturationMode
- class (Bounded a, Num a) => SaturatingNum a where
- satPlus :: SaturationMode -> a -> a -> a
- satMin :: SaturationMode -> a -> a -> a
- satMult :: SaturationMode -> a -> a -> a
- boundedPlus :: SaturatingNum a => a -> a -> a
- boundedMin :: SaturatingNum a => a -> a -> a
- boundedMult :: SaturatingNum a => a -> a -> a
Arithmetic functions for arguments and results of different precision
class ExtendingNum a b where Source
Adding, subtracting, and multiplying values of two different (sub-)types.
Type of the result of the addition or subtraction
Type of the result of the multiplication
plus :: a -> b -> AResult a b Source
Add values of different (sub-)types, return a value of a (sub-)type that is potentially different from either argument.
minus :: a -> b -> AResult a b Source
Subtract values of different (sub-)types, return a value of a (sub-)type that is potentially different from either argument.
times :: a -> b -> MResult a b Source
Multiply values of different (sub-)types, return a value of a (sub-)type that is potentially different from either argument.
(KnownNat ((+) (Max m n) 1), KnownNat ((+) m n)) => ExtendingNum (BitVector m) (BitVector n) Source | |
ExtendingNum (Index m) (Index n) Source | |
(KnownNat ((+) 1 (Max m n)), KnownNat ((+) m n)) => ExtendingNum (Signed m) (Signed n) Source | |
(KnownNat ((+) 1 (Max m n)), KnownNat ((+) m n)) => ExtendingNum (Unsigned m) (Unsigned n) Source | |
ExtendingNum a b => ExtendingNum (Signal' clk a) (Signal' clk b) Source | |
ExtendingNum a b => ExtendingNum (DSignal n a) (DSignal n b) Source | |
ENumFixedC rep int1 frac1 int2 frac2 => ExtendingNum (Fixed rep int1 frac1) (Fixed rep int2 frac2) Source | When used in a polymorphic setting, use the following Constraint synonyms for less verbose type signatures:
|
Saturating arithmetic functions
data SaturationMode Source
Determine how overflow and underflow are handled by the functions in
SaturatingNum
class (Bounded a, Num a) => SaturatingNum a where Source
Num
operators in which overflow and underflow behaviour can be specified
using SaturationMode
.
satPlus :: SaturationMode -> a -> a -> a Source
Addition with parametrisable over- and underflow behaviour
satMin :: SaturationMode -> a -> a -> a Source
Subtraction with parametrisable over- and underflow behaviour
satMult :: SaturationMode -> a -> a -> a Source
Multiplication with parametrisable over- and underflow behaviour
(KnownNat n, KnownNat ((+) n 1), KnownNat ((+) n n)) => SaturatingNum (BitVector n) Source | |
(KnownNat n, KnownNat ((+) 1 n), KnownNat ((+) n n)) => SaturatingNum (Signed n) Source | |
(KnownNat n, KnownNat ((+) 1 n), KnownNat ((+) n n)) => SaturatingNum (Unsigned n) Source | |
SaturatingNum a => SaturatingNum (Signal' clk a) Source | |
SaturatingNum a => SaturatingNum (DSignal delay a) Source | |
NumFixedC rep int frac => SaturatingNum (Fixed rep int frac) Source |
boundedPlus :: SaturatingNum a => a -> a -> a Source
boundedMin :: SaturatingNum a => a -> a -> a Source
boundedMult :: SaturatingNum a => a -> a -> a Source