clash-prelude-0.10.2: CAES Language for Synchronous Hardware - Prelude library

Copyright(C) 2013-2015, University of Twente
LicenseBSD2 (see the file LICENSE)
MaintainerChristiaan Baaij <christiaan.baaij@gmail.com>
Safe HaskellSafe
LanguageHaskell2010
Extensions
  • MonoLocalBinds
  • TypeFamilies
  • DataKinds
  • MultiParamTypeClasses
  • KindSignatures
  • ExplicitNamespaces

CLaSH.Class.Num

Contents

Description

 

Synopsis

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.

Associated Types

type AResult a b Source

Type of the result of the addition or subtraction

type MResult a b Source

Type of the result of the multiplication

Methods

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.

Instances

(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

Constructors

SatWrap

Wrap around on overflow and underflow

SatBound

Become maxBound on overflow, and minBound on underflow

SatZero

Become 0 on overflow and underflow

SatSymmetric

Become maxBound on overflow, and (minBound - 1) on underflow for signed numbers, and minBound for unsigned numbers.

class (Bounded a, Num a) => SaturatingNum a where Source

Num operators in which overflow and underflow behaviour can be specified using SaturationMode.

Methods

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

boundedPlus :: SaturatingNum a => a -> a -> a Source

Addition that clips to maxBound on overflow, and minBound on underflow

boundedMin :: SaturatingNum a => a -> a -> a Source

Subtraction that clips to maxBound on overflow, and minBound on underflow

boundedMult :: SaturatingNum a => a -> a -> a Source

Multiplication that clips to maxBound on overflow, and minBound on underflow