| Copyright | (C) 2013-2016 University of Twente 2016 Myrtle Software Ltd 2021-2022 QBayLogic B.V. |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | QBayLogic B.V. <devops@qbaylogic.com> |
| Safe Haskell | Unsafe |
| Language | Haskell2010 |
| Extensions |
|
Clash.Sized.Internal.Signed
Description
Synopsis
- newtype Signed (n :: Nat) = S {}
- size# :: KnownNat n => Signed n -> Int
- pack# :: forall n. KnownNat n => Signed n -> BitVector n
- unpack# :: forall n. KnownNat n => BitVector n -> Signed n
- eq# :: Signed n -> Signed n -> Bool
- neq# :: Signed n -> Signed n -> Bool
- lt# :: Signed n -> Signed n -> Bool
- ge# :: Signed n -> Signed n -> Bool
- gt# :: Signed n -> Signed n -> Bool
- le# :: Signed n -> Signed n -> Bool
- toEnum# :: forall n. KnownNat n => Int -> Signed n
- fromEnum# :: forall n. KnownNat n => Signed n -> Int
- enumFrom# :: forall n. KnownNat n => Signed n -> [Signed n]
- enumFromThen# :: forall n. KnownNat n => Signed n -> Signed n -> [Signed n]
- enumFromTo# :: forall n. KnownNat n => Signed n -> Signed n -> [Signed n]
- enumFromThenTo# :: forall n. KnownNat n => Signed n -> Signed n -> Signed n -> [Signed n]
- minBound# :: forall n. KnownNat n => Signed n
- maxBound# :: forall n. KnownNat n => Signed n
- (+#) :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- (-#) :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- (*#) :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- negate# :: forall n. KnownNat n => Signed n -> Signed n
- abs# :: forall n. KnownNat n => Signed n -> Signed n
- fromInteger# :: forall n. KnownNat n => Integer -> Signed (n :: Nat)
- plus# :: Signed m -> Signed n -> Signed (Max m n + 1)
- minus# :: Signed m -> Signed n -> Signed (Max m n + 1)
- times# :: Signed m -> Signed n -> Signed (m + n)
- quot# :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- rem# :: Signed n -> Signed n -> Signed n
- div# :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- mod# :: Signed n -> Signed n -> Signed n
- toInteger# :: Signed n -> Integer
- and# :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- or# :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- xor# :: forall n. KnownNat n => Signed n -> Signed n -> Signed n
- complement# :: forall n. KnownNat n => Signed n -> Signed n
- shiftL# :: forall n. KnownNat n => Signed n -> Int -> Signed n
- shiftR# :: forall n. KnownNat n => Signed n -> Int -> Signed n
- rotateL# :: forall n. KnownNat n => Signed n -> Int -> Signed n
- rotateR# :: forall n. KnownNat n => Signed n -> Int -> Signed n
- resize# :: forall m n. (KnownNat n, KnownNat m) => Signed n -> Signed m
- truncateB# :: forall m n. KnownNat m => Signed (m + n) -> Signed m
- minBoundSym# :: KnownNat n => Signed n
Datatypes
newtype Signed (n :: Nat) Source #
Arbitrary-width signed integer represented by n bits, including the sign
bit
Uses standard 2-complements representation. Meaning that, given n bits,
a Signed n number has a range of: [-(2^(n-1)) .. 2^(n-1)-1] for
n > 0. When n = 0, both the min and max bound are 0.
- NB: The usual Haskell method of converting an integral numeric type to
another,
fromIntegral, is not well suited for Clash as it will go throughIntegerwhich is arbitrarily bounded in HDL. Instead usebitCoerceand theResizeclass. - NB: The
Numoperators performwrap-aroundon overflow. If you want saturation on overflow, check out theSaturatingNumclass.
>>>maxBound :: Signed 33>>>minBound :: Signed 3-4>>>read (show (minBound :: Signed 3)) :: Signed 3-4>>>1 + 2 :: Signed 33>>>2 + 3 :: Signed 3-3>>>(-2) + (-3) :: Signed 33>>>2 * 3 :: Signed 46>>>2 * 4 :: Signed 4-8>>>(2 :: Signed 3) `mul` (4 :: Signed 4) :: Signed 78>>>(2 :: Signed 3) `add` (3 :: Signed 3) :: Signed 45>>>(-2 :: Signed 3) `add` (-3 :: Signed 3) :: Signed 4-5>>>satAdd SatSymmetric 2 3 :: Signed 33>>>satAdd SatSymmetric (-2) (-3) :: Signed 3-3
Signed has the type role
>>>:i Signedtype role Signed nominal ...
as it is not safe to coerce between different width Signed. To change the
width, use the functions in the Resize class.
Constructors
| S | The constructor, |
Fields | |
Instances
Accessors
Length information
Type classes
BitPack
Eq
Ord
Enum
Enum (not synthesizable)
Bounded
Num
ExtendingNum
Integral
toInteger# :: Signed n -> Integer Source #
Bits
Resize
SaturatingNum
minBoundSym# :: KnownNat n => Signed n Source #