Integral package:clash-prelude
Integral numbers, supporting integer division.
The Haskell Report defines no laws for
Integral. However,
Integral instances are customarily expected to define a
Euclidean domain and have the following properties for the
div/
mod and
quot/
rem pairs, given suitable
Euclidean functions
f and
g:
- x = y * quot x y + rem x y with rem x y
= fromInteger 0 or g (rem x y) < g
y
- x = y * div x y + mod x y with mod x y
= fromInteger 0 or f (mod x y) < f
y
An example of a suitable Euclidean function, for
Integer's
instance, is
abs.
Like
fromIntegral, but errors if
a is out of bounds for
b. Useful when you "know"
a can't be out of bounds, but
would like to have your assumptions checked.
- NB: Check only affects simulation. I.e., no checks will be
inserted into the generated HDL
- NB: fromIntegral is not well suited for Clash as it
will go through Integer which is arbitrarily bounded in HDL.
Instead use bitCoerce and the Resize class.
general coercion from integral types