-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Safe arithmetic operations. -- -- safe-numeric provides safer numeric operators, that have more -- explicit behaviour in terms of overflow and underflow, and are harder -- to misuse. @package safe-numeric @version 0.1 -- | Safe numeric operations. -- -- We take a fairly conservative approach here - this module is an -- extension not a replacement for Prelude. Our suffix naming -- conventions are as follows: -- --
-- - functions:
-- - {name: [fromIntegral, fromInteger, +, '-', '*', ^], within: [], message: "Use safe versions from Safe.Numeric"}
-- - {name: [div, mod, divMod, quot, rem, quotRem], within: [], message: "Use safe versions from Safe.Numeric"}
--
module Safe.Numeric
class NumExpand b a
-- | Safely expand type b into type a, with no runtime
-- bounds checking.
--
-- a.k.a. "fromIntegral hurts my fingers and my eyes"
--
-- The value is statically guaranteed to remain the same relative to 0 in
-- both directions, i.e. not overflow or underflow, without any runtime
-- checks.
ex :: NumExpand b a => b -> a
-- | Safely expand type b into type a, with no runtime
-- bounds checking.
--
-- a.k.a. "fromIntegral hurts my fingers and my eyes"
--
-- The value is statically guaranteed to remain the same relative to 0 in
-- both directions, i.e. not overflow or underflow, without any runtime
-- checks.
ex :: (NumExpand b a, Num a, Integral b) => b -> a
-- | Convert from a type into a smaller type
class NumConvert b a
-- | Wrap around if the input is out-of-bounds.
ctW :: NumConvert b a => b -> a
-- | Wrap around if the input is out-of-bounds.
ctW :: (NumConvert b a, Num a, Integral b) => b -> a
-- | Explicit error if the input is out-of-bounds.
ctE :: NumConvert b a => b -> Either ArithException a
-- | Explicit error if the input is out-of-bounds.
ctE :: (NumConvert b a, Integral a, Bounded a, Integral b) => b -> Either ArithException a
-- | Output minBound if the input is too small, or maxBound
-- if too large.
ctS :: NumConvert b a => b -> a
-- | Output minBound if the input is too small, or maxBound
-- if too large.
ctS :: (NumConvert b a, Integral a, Bounded a, Integral b) => b -> a
-- | Runtime (async) exception if the input is out-of-bounds.
ctX :: (NumConvert b a, Partial) => b -> a
-- | Runtime (async) exception if the input is out-of-bounds.
ctX :: (NumConvert b a, Integral a, Bounded a, Integral b) => Partial => b -> a
-- | Type alias for Word that explicitly states its lower-bound
-- size.
type Word29_ = Word
-- | Type alias for Int that explicitly states its lower-bound size.
type Int29_ = Int
-- | Add with wrap-around.
--
-- Same as + but indicates to the reader that you explicitly
-- thought about this issue and decided that wrap-around is the correct
-- behaviour.
(+@) :: Num a => a -> a -> a
infixl 6 +@
-- | Add with explicit error on overflow or underflow.
(+%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a
infixl 6 +%
-- | Add with output maxBound on overflow or minBound on
-- underflow.
(+:) :: (Integral a, Bounded a) => a -> a -> a
infixl 6 +:
-- | Add with runtime (async) exception on overflow or underflow.
(+!) :: (Integral a, Bounded a) => Partial => a -> a -> a
infixl 6 +!
-- | Subtract with wrap-around.
--
-- Same as - but indicates to the reader that you explicitly
-- thought about this issue and decided that wrap-around is the correct
-- behaviour.
(-@) :: Num a => a -> a -> a
infixl 6 -@
-- | Subtract with explicit error on overflow or underflow.
(-%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a
infixl 6 -%
-- | Subtract with output maxBound on overflow or minBound on
-- underflow.
(-:) :: (Integral a, Bounded a) => a -> a -> a
infixl 6 -:
-- | Subtract with runtime (async) exception on overflow or underflow.
(-!) :: (Integral a, Bounded a) => Partial => a -> a -> a
infixl 6 -!
-- | Multiply with wrap-around.
--
-- Same as * but indicates to the reader that you explicitly
-- thought about this issue and decided that wrap-around is the correct
-- behaviour.
(*@) :: Num a => a -> a -> a
infixl 7 *@
-- | Multiply with explicit error on overflow or underflow.
(*%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a
infixl 7 *%
-- | Multiply with output maxBound on overflow or minBound on
-- underflow.
(*:) :: (Integral a, Bounded a) => a -> a -> a
infixl 7 *:
-- | Multiply with runtime (async) exception on overflow or underflow.
(*!) :: (Integral a, Bounded a) => Partial => a -> a -> a
infixl 7 *!
-- | Power with wrap-around.
--
-- Same as ^ but indicates to the reader that you explicitly
-- thought about this issue and decided that wrap-around is the correct
-- behaviour.
(^@) :: Integral a => a -> a -> a
infixr 8 ^@
-- | Power with explicit error on overflow or underflow.
(^%) :: (Integral a, Bounded a) => a -> a -> Either ArithException a
infixr 8 ^%
-- | Power with output maxBound on overflow or minBound on
-- underflow.
(^:) :: (Integral a, Bounded a) => a -> a -> a
infixr 8 ^:
-- | Power with runtime (async) exception on overflow or underflow.
(^!) :: (Integral a, Bounded a) => Partial => a -> a -> a
infixr 8 ^!
-- | Type alias for a division-operation result with explicit error.
--
-- The Left case means division by zero, and its
-- parameter represents the sign of the nominator operand.
type DivResult a = Either Ordering a
-- | Division (truncated towards -Inf) with explicit error on
-- division-by-zero.
divE :: Integral a => a -> a -> DivResult a
-- | Division (truncated towards -Inf) with runtime (async) exception on
-- division-by-zero.
--
-- Same as div but indicates to the reader that you explicitly
-- thought about this issue and decided that runtime exception is the
-- correct behaviour.
divX :: Integral a => a -> a -> a
-- | Modulus (truncated towards -Inf) with explicit error on
-- division-by-zero.
modE :: Integral a => a -> a -> DivResult a
-- | Modulus (truncated towards -Inf) with runtime (async) exception on
-- division-by-zero.
--
-- Same as mod but indicates to the reader that you explicitly
-- thought about this issue and decided that runtime exception is the
-- correct behaviour.
modX :: Integral a => a -> a -> a
-- | Division-and-modulus (truncated towards -Inf) with explicit error on
-- division-by-zero.
divModE :: Integral a => a -> a -> DivResult (a, a)
-- | Division-and-modulus (truncated towards -Inf) with runtime (async)
-- exception on division-by-zero.
--
-- Same as divMod but indicates to the reader that you explicitly
-- thought about this issue and decided that runtime exception is the
-- correct behaviour.
divModX :: Integral a => a -> a -> (a, a)
-- | Division (truncated towards 0) with explicit error on
-- division-by-zero.
quotE :: Integral a => a -> a -> DivResult a
-- | Division (truncated towards 0) with runtime (async) exception on
-- division-by-zero.
--
-- Same as quot but indicates to the reader that you explicitly
-- thought about this issue and decided that runtime exception is the
-- correct behaviour.
quotX :: Integral a => a -> a -> a
-- | Modulus (truncated towards 0) with explicit error on division-by-zero.
remE :: Integral a => a -> a -> DivResult a
-- | Modulus (truncated towards 0) with runtime (async) exception on
-- division-by-zero.
--
-- Same as rem but indicates to the reader that you explicitly
-- thought about this issue and decided that runtime exception is the
-- correct behaviour.
remX :: Integral a => a -> a -> a
-- | Division-and-modulus (truncated towards 0) with explicit error on
-- division-by-zero.
quotRemE :: Integral a => a -> a -> DivResult (a, a)
-- | Division-and-modulus (truncated towards 0) with runtime (async)
-- exception on division-by-zero.
--
-- Same as quotRem but indicates to the reader that you explicitly
-- thought about this issue and decided that runtime exception is the
-- correct behaviour.
quotRemX :: Integral a => a -> a -> (a, a)
instance Safe.Numeric.NumExpand GHC.Word.Word8 Safe.Numeric.Int29_
instance Safe.Numeric.NumExpand GHC.Word.Word16 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert GHC.Word.Word32 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert GHC.Word.Word64 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Safe.Numeric.Int29_
instance Safe.Numeric.NumExpand GHC.Int.Int8 Safe.Numeric.Int29_
instance Safe.Numeric.NumExpand GHC.Int.Int16 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word8
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word16
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word32
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Word.Word64
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int8
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int16
instance Safe.Numeric.NumExpand Safe.Numeric.Int29_ Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int32
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ GHC.Int.Int64
instance Safe.Numeric.NumConvert Safe.Numeric.Int29_ Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand Safe.Numeric.Int29_ GHC.Integer.Type.Integer
instance Safe.Numeric.NumConvert GHC.Int.Int32 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert GHC.Int.Int64 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Safe.Numeric.Int29_
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Safe.Numeric.Int29_
instance Safe.Numeric.NumExpand GHC.Word.Word8 Safe.Numeric.Word29_
instance Safe.Numeric.NumExpand GHC.Word.Word16 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word8
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word16
instance Safe.Numeric.NumExpand Safe.Numeric.Word29_ Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word32
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Word.Word64
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int8
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int16
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int32
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ GHC.Int.Int64
instance Safe.Numeric.NumConvert Safe.Numeric.Word29_ Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand Safe.Numeric.Word29_ GHC.Integer.Type.Integer
instance Safe.Numeric.NumConvert GHC.Word.Word32 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Word.Word64 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Int.Int8 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Int.Int16 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Int.Int32 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Int.Int64 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Safe.Numeric.Word29_
instance Safe.Numeric.NumConvert GHC.Word.Word8 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Word.Word16 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Word.Word16 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Word.Word16 GHC.Int.Int16
instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Int.Int16
instance Safe.Numeric.NumConvert GHC.Word.Word32 GHC.Int.Int32
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Word.Word32
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int16
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int32
instance Safe.Numeric.NumConvert GHC.Word.Word64 GHC.Int.Int64
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word8
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word16
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word32
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Word.Word64
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int8
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int16
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int32
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 GHC.Int.Int64
instance Safe.Numeric.NumConvert Data.WideWord.Word128.Word128 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word8
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word16
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word32
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Word.Word64
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int8
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int16
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int32
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 GHC.Int.Int64
instance Safe.Numeric.NumConvert Data.WideWord.Word256.Word256 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word32
instance Safe.Numeric.NumConvert GHC.Int.Int8 GHC.Word.Word64
instance Safe.Numeric.NumConvert GHC.Int.Int8 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert GHC.Int.Int8 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word32
instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Word.Word64
instance Safe.Numeric.NumConvert GHC.Int.Int16 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert GHC.Int.Int16 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert GHC.Int.Int16 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word32
instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Word.Word64
instance Safe.Numeric.NumConvert GHC.Int.Int32 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert GHC.Int.Int32 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Int.Int32 GHC.Int.Int16
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word32
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Word.Word64
instance Safe.Numeric.NumConvert GHC.Int.Int64 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert GHC.Int.Int64 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Int.Int16
instance Safe.Numeric.NumConvert GHC.Int.Int64 GHC.Int.Int32
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word8
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word16
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word32
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Word.Word64
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int8
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int16
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int32
instance Safe.Numeric.NumConvert Data.WideWord.Int128.Int128 GHC.Int.Int64
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word8
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word16
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word32
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Word.Word64
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Data.WideWord.Word128.Word128
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Data.WideWord.Word256.Word256
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int8
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int16
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int32
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer GHC.Int.Int64
instance Safe.Numeric.NumConvert GHC.Integer.Type.Integer Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word8
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word16
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word32
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Word.Word64
instance Safe.Numeric.NumExpand GHC.Word.Word8 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumExpand GHC.Word.Word8 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Int.Int16
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Int.Int32
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Word.Word8 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Word.Word8 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Word.Word16
instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Word.Word32
instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Word.Word64
instance Safe.Numeric.NumExpand GHC.Word.Word16 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumExpand GHC.Word.Word16 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Int.Int32
instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Word.Word16 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Word.Word16 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Word.Word32
instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Word.Word64
instance Safe.Numeric.NumExpand GHC.Word.Word32 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumExpand GHC.Word.Word32 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Word.Word32 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Word.Word32 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Word.Word64 GHC.Word.Word64
instance Safe.Numeric.NumExpand GHC.Word.Word64 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumExpand GHC.Word.Word64 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumExpand GHC.Word.Word64 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Word.Word64 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand Data.WideWord.Word128.Word128 Data.WideWord.Word128.Word128
instance Safe.Numeric.NumExpand Data.WideWord.Word128.Word128 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumExpand Data.WideWord.Word128.Word128 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand Data.WideWord.Word256.Word256 Data.WideWord.Word256.Word256
instance Safe.Numeric.NumExpand Data.WideWord.Word256.Word256 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int8
instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int16
instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int32
instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Int.Int8 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Int.Int8 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Int.Int16
instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Int.Int32
instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Int.Int16 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Int.Int16 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Int.Int32 GHC.Int.Int32
instance Safe.Numeric.NumExpand GHC.Int.Int32 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Int.Int32 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Int.Int32 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Int.Int64 GHC.Int.Int64
instance Safe.Numeric.NumExpand GHC.Int.Int64 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand GHC.Int.Int64 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand Data.WideWord.Int128.Int128 Data.WideWord.Int128.Int128
instance Safe.Numeric.NumExpand Data.WideWord.Int128.Int128 GHC.Integer.Type.Integer
instance Safe.Numeric.NumExpand GHC.Integer.Type.Integer GHC.Integer.Type.Integer