Copyright  (C) 20132016 University of Twente 

License  BSD2 (see the file LICENSE) 
Maintainer  Christiaan Baaij <christiaan.baaij@gmail.com> 
Safe Haskell  Safe 
Language  Haskell2010 
Extensions 

Synopsis
 class ExtendingNum a b where
 data SaturationMode
 class (Bounded a, Num a) => SaturatingNum a where
 satAdd :: SaturationMode > a > a > a
 satSub :: SaturationMode > a > a > a
 satMul :: SaturationMode > a > a > a
 boundedAdd :: SaturatingNum a => a > a > a
 boundedSub :: SaturatingNum a => a > a > a
 boundedMul :: SaturatingNum a => a > a > a
 satSucc :: SaturatingNum a => SaturationMode > a > a
 satPred :: SaturatingNum a => SaturationMode > 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
add :: 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.
sub :: 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.
mul :: 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.
Instances
(KnownNat m, KnownNat n) => ExtendingNum (BitVector m) (BitVector n) Source #  
Defined in Clash.Sized.Internal.BitVector  
ExtendingNum (Index m) (Index n) Source #  
Defined in Clash.Sized.Internal.Index  
(KnownNat m, KnownNat n) => ExtendingNum (Unsigned m) (Unsigned n) Source #  
Defined in Clash.Sized.Internal.Unsigned  
ExtendingNum (Signed m) (Signed n) Source #  
Defined in Clash.Sized.Internal.Signed  
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:

Defined in Clash.Sized.Fixed type AResult (Fixed rep int1 frac1) (Fixed rep int2 frac2) Source # type MResult (Fixed rep int1 frac1) (Fixed rep int2 frac2) Source # add :: Fixed rep int1 frac1 > Fixed rep int2 frac2 > AResult (Fixed rep int1 frac1) (Fixed rep int2 frac2) Source # sub :: Fixed rep int1 frac1 > Fixed rep int2 frac2 > AResult (Fixed rep int1 frac1) (Fixed rep int2 frac2) Source # mul :: Fixed rep int1 frac1 > Fixed rep int2 frac2 > MResult (Fixed rep int1 frac1) (Fixed rep int2 frac2) Source # 
Saturating arithmetic functions
data SaturationMode Source #
Determine how overflow and underflow are handled by the functions in
SaturatingNum
SatWrap  Wrap around on overflow and underflow 
SatBound  
SatZero  Become 
SatSymmetric  Become 
Instances
Eq SaturationMode Source #  
Defined in Clash.Class.Num (==) :: SaturationMode > SaturationMode > Bool # (/=) :: SaturationMode > SaturationMode > Bool # 
class (Bounded a, Num a) => SaturatingNum a where Source #
Num
operators in which overflow and underflow behavior can be specified
using SaturationMode
.
satAdd :: SaturationMode > a > a > a Source #
Addition with parameterizable over and underflow behavior
satSub :: SaturationMode > a > a > a Source #
Subtraction with parameterizable over and underflow behavior
satMul :: SaturationMode > a > a > a Source #
Multiplication with parameterizable over and underflow behavior
Instances
KnownNat n => SaturatingNum (BitVector n) Source #  
(KnownNat n, 1 <= n) => SaturatingNum (Index n) Source #  
KnownNat n => SaturatingNum (Unsigned n) Source #  
KnownNat n => SaturatingNum (Signed n) Source #  
NumFixedC rep int frac => SaturatingNum (Fixed rep int frac) Source #  
Defined in Clash.Sized.Fixed 
boundedAdd :: SaturatingNum a => a > a > a Source #
boundedSub :: SaturatingNum a => a > a > a Source #
boundedMul :: SaturatingNum a => a > a > a Source #
satSucc :: SaturatingNum a => SaturationMode > a > a Source #
Get successor of (or in other words, add 1 to) given number
satPred :: SaturatingNum a => SaturationMode > a > a Source #
Get predecessor of (or in other words, subtract 1 from) given number