foundation-0.0.30: Alternative prelude with batteries and no dependencies

License | BSD-style
Maintainer | Vincent Hanquez <vincent@snarc.org>
Stability | experimental
Portability | portable
Safe Haskell | None
Language | Haskell2010

Foundation.Numerical

Description

Compared to the Haskell hierarchy of number classes this provide a more flexible approach that is closer to the mathematical foundation (group, field, etc)

This try to only provide one feature per class, at the expense of the number of classes.

Synopsis

- class (Integral a, Eq a, Ord a) => IsIntegral a where
  - toInteger :: a -> Integer
- class IsIntegral a => IsNatural a where
  - toNatural :: a -> Natural
- class Signed a where
  - abs :: a -> a
  - signum :: a -> Sign
- class Additive a where
  - azero :: a
  - (+) :: a -> a -> a
  - scale :: IsNatural n => n -> a -> a
- class Subtractive a where
  - type Difference a
  - (-) :: a -> a -> Difference a
- class Multiplicative a where
  - midentity :: a
  - (*) :: a -> a -> a
  - (^) :: (IsNatural n, Enum n, IDivisible n) => a -> n -> a
- class (Additive a, Multiplicative a) => IDivisible a where
  - div :: a -> a -> a
  - mod :: a -> a -> a
  - divMod :: a -> a -> (a, a)
- class Multiplicative a => Divisible a where
  - (/) :: a -> a -> a
- data Sign
  - = SignNegative
  - | SignZero
  - | SignPositive
- recip :: Divisible a => a -> a
- class IntegralRounding a where
  - roundUp :: Integral n => a -> n
  - roundDown :: Integral n => a -> n
  - roundTruncate :: Integral n => a -> n
  - roundNearest :: Integral n => a -> n
- class FloatingPoint a where
  - floatRadix :: Proxy a -> Integer
  - floatDigits :: Proxy a -> Int
  - floatRange :: Proxy a -> (Int, Int)
  - floatDecode :: a -> (Integer, Int)
  - floatEncode :: Integer -> Int -> a

# Documentation

class (Integral a, Eq a, Ord a) => IsIntegral a where #

Number literals, convertible through the generic Integer type.

all number are Enum'erable, meaning that you can move to next element

Methods

toInteger :: a -> Integer #

#### Instances

Instances details

IsIntegral Word128 |
Instance details Defined in Basement.Types.Word128 Methods toInteger :: Word128 -> Integer #
IsIntegral Word256 |
Instance details Defined in Basement.Types.Word256 Methods toInteger :: Word256 -> Integer #
IsIntegral CBool |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CBool -> Integer #
IsIntegral CChar |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CChar -> Integer #
IsIntegral CInt |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CInt -> Integer #
IsIntegral CIntMax |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CIntMax -> Integer #
IsIntegral CIntPtr |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CIntPtr -> Integer #
IsIntegral CLLong |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CLLong -> Integer #
IsIntegral CLong |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CLong -> Integer #
IsIntegral CPtrdiff |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CPtrdiff -> Integer #
IsIntegral CSChar |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CSChar -> Integer #
IsIntegral CShort |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CShort -> Integer #
IsIntegral CSigAtomic |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CSigAtomic -> Integer #
IsIntegral CSize |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CSize -> Integer #
IsIntegral CUChar |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CUChar -> Integer #
IsIntegral CUInt |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CUInt -> Integer #
IsIntegral CUIntMax |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CUIntMax -> Integer #
IsIntegral CUIntPtr |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CUIntPtr -> Integer #
IsIntegral CULLong |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CULLong -> Integer #
IsIntegral CULong |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CULong -> Integer #
IsIntegral CUShort |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CUShort -> Integer #
IsIntegral CWchar |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: CWchar -> Integer #
IsIntegral Int16 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Int16 -> Integer #
IsIntegral Int32 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Int32 -> Integer #
IsIntegral Int64 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Int64 -> Integer #
IsIntegral Int8 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Int8 -> Integer #
IsIntegral Word16 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Word16 -> Integer #
IsIntegral Word32 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Word32 -> Integer #
IsIntegral Word64 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Word64 -> Integer #
IsIntegral Word8 |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Word8 -> Integer #
IsIntegral Integer |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Integer -> Integer #
IsIntegral Natural |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Natural -> Integer #
IsIntegral Int |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Int -> Integer #
IsIntegral Word |
Instance details Defined in Basement.Numerical.Number Methods toInteger :: Word -> Integer #
KnownNat n => IsIntegral (Zn n) |
Instance details Defined in Basement.Bounded Methods toInteger :: Zn n -> Integer #
(KnownNat n, NatWithinBound Word64 n) => IsIntegral (Zn64 n) |
Instance details Defined in Basement.Bounded Methods toInteger :: Zn64 n -> Integer #
IsIntegral (CountOf ty) |
Instance details Defined in Basement.Types.OffsetSize Methods toInteger :: CountOf ty -> Integer #
IsIntegral (Offset ty) |
Instance details Defined in Basement.Types.OffsetSize Methods toInteger :: Offset ty -> Integer #

class IsIntegral a => IsNatural a where #

Non Negative Number literals, convertible through the generic Natural type

Methods

toNatural :: a -> Natural #

#### Instances

Instances details

IsNatural Word128 |
Instance details Defined in Basement.Types.Word128 Methods toNatural :: Word128 -> Natural #
IsNatural Word256 |
Instance details Defined in Basement.Types.Word256 Methods toNatural :: Word256 -> Natural #
IsNatural CSize |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CSize -> Natural #
IsNatural CUChar |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CUChar -> Natural #
IsNatural CUInt |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CUInt -> Natural #
IsNatural CUIntMax |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CUIntMax -> Natural #
IsNatural CUIntPtr |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CUIntPtr -> Natural #
IsNatural CULLong |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CULLong -> Natural #
IsNatural CULong |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CULong -> Natural #
IsNatural CUShort |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: CUShort -> Natural #
IsNatural Word16 |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: Word16 -> Natural #
IsNatural Word32 |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: Word32 -> Natural #
IsNatural Word64 |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: Word64 -> Natural #
IsNatural Word8 |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: Word8 -> Natural #
IsNatural Natural |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: Natural -> Natural #
IsNatural Word |
Instance details Defined in Basement.Numerical.Number Methods toNatural :: Word -> Natural #
KnownNat n => IsNatural (Zn n) |
Instance details Defined in Basement.Bounded Methods toNatural :: Zn n -> Natural #
(KnownNat n, NatWithinBound Word64 n) => IsNatural (Zn64 n) |
Instance details Defined in Basement.Bounded Methods toNatural :: Zn64 n -> Natural #
IsNatural (CountOf ty) |
Instance details Defined in Basement.Types.OffsetSize Methods toNatural :: CountOf ty -> Natural #
IsNatural (Offset ty) |
Instance details Defined in Basement.Types.OffsetSize Methods toNatural :: Offset ty -> Natural #

class Signed a where #

types that have sign and can be made absolute

Methods

abs :: a -> a #

signum :: a -> Sign #

#### Instances

Instances details

Signed Int16 # |
Instance details Defined in Foundation.Numerical Methods abs :: Int16 -> Int16 # signum :: Int16 -> Sign #
Signed Int32 # |
Instance details Defined in Foundation.Numerical Methods abs :: Int32 -> Int32 # signum :: Int32 -> Sign #
Signed Int64 # |
Instance details Defined in Foundation.Numerical Methods abs :: Int64 -> Int64 # signum :: Int64 -> Sign #
Signed Int8 # |
Instance details Defined in Foundation.Numerical Methods abs :: Int8 -> Int8 # signum :: Int8 -> Sign #
Signed Integer # |
Instance details Defined in Foundation.Numerical Methods abs :: Integer -> Integer # signum :: Integer -> Sign #
Signed Double # |
Instance details Defined in Foundation.Numerical Methods abs :: Double -> Double # signum :: Double -> Sign #
Signed Float # |
Instance details Defined in Foundation.Numerical Methods abs :: Float -> Float # signum :: Float -> Sign #
Signed Int # |
Instance details Defined in Foundation.Numerical Methods abs :: Int -> Int # signum :: Int -> Sign #

class Additive a where #

Represent class of things that can be added together, contains a neutral element and is commutative.

    x + azero = x
    azero + x = x
    x + y = y + x

Minimal complete definition

azero, (+)

Methods

azero :: a #

(+) :: a -> a -> a infixl 6 #

scale :: IsNatural n => n -> a -> a #

default scale :: (Enum n, IsNatural n) => n -> a -> a #

#### Instances

Instances details

Additive Word128 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word128 # (+) :: Word128 -> Word128 -> Word128 # scale :: IsNatural n => n -> Word128 -> Word128 #
Additive Word256 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word256 # (+) :: Word256 -> Word256 -> Word256 # scale :: IsNatural n => n -> Word256 -> Word256 #
Additive NanoSeconds # |
Instance details Defined in Foundation.Time.Types Methods azero :: NanoSeconds # (+) :: NanoSeconds -> NanoSeconds -> NanoSeconds # scale :: IsNatural n => n -> NanoSeconds -> NanoSeconds #
Additive Seconds # |
Instance details Defined in Foundation.Time.Types Methods azero :: Seconds # (+) :: Seconds -> Seconds -> Seconds # scale :: IsNatural n => n -> Seconds -> Seconds #
Additive CChar |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CChar # (+) :: CChar -> CChar -> CChar # scale :: IsNatural n => n -> CChar -> CChar #
Additive CClock |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CClock # (+) :: CClock -> CClock -> CClock # scale :: IsNatural n => n -> CClock -> CClock #
Additive CDouble |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CDouble # (+) :: CDouble -> CDouble -> CDouble # scale :: IsNatural n => n -> CDouble -> CDouble #
Additive CFloat |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CFloat # (+) :: CFloat -> CFloat -> CFloat # scale :: IsNatural n => n -> CFloat -> CFloat #
Additive CInt |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CInt # (+) :: CInt -> CInt -> CInt # scale :: IsNatural n => n -> CInt -> CInt #
Additive CIntMax |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CIntMax # (+) :: CIntMax -> CIntMax -> CIntMax # scale :: IsNatural n => n -> CIntMax -> CIntMax #
Additive CIntPtr |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CIntPtr # (+) :: CIntPtr -> CIntPtr -> CIntPtr # scale :: IsNatural n => n -> CIntPtr -> CIntPtr #
Additive CLLong |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CLLong # (+) :: CLLong -> CLLong -> CLLong # scale :: IsNatural n => n -> CLLong -> CLLong #
Additive CLong |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CLong # (+) :: CLong -> CLong -> CLong # scale :: IsNatural n => n -> CLong -> CLong #
Additive CPtrdiff |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CPtrdiff # (+) :: CPtrdiff -> CPtrdiff -> CPtrdiff # scale :: IsNatural n => n -> CPtrdiff -> CPtrdiff #
Additive CSChar |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CSChar # (+) :: CSChar -> CSChar -> CSChar # scale :: IsNatural n => n -> CSChar -> CSChar #
Additive CSUSeconds |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CSUSeconds # (+) :: CSUSeconds -> CSUSeconds -> CSUSeconds # scale :: IsNatural n => n -> CSUSeconds -> CSUSeconds #
Additive CShort |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CShort # (+) :: CShort -> CShort -> CShort # scale :: IsNatural n => n -> CShort -> CShort #
Additive CSigAtomic |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CSigAtomic # (+) :: CSigAtomic -> CSigAtomic -> CSigAtomic # scale :: IsNatural n => n -> CSigAtomic -> CSigAtomic #
Additive CSize |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CSize # (+) :: CSize -> CSize -> CSize # scale :: IsNatural n => n -> CSize -> CSize #
Additive CTime |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CTime # (+) :: CTime -> CTime -> CTime # scale :: IsNatural n => n -> CTime -> CTime #
Additive CUChar |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CUChar # (+) :: CUChar -> CUChar -> CUChar # scale :: IsNatural n => n -> CUChar -> CUChar #
Additive CUInt |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CUInt # (+) :: CUInt -> CUInt -> CUInt # scale :: IsNatural n => n -> CUInt -> CUInt #
Additive CUIntMax |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CUIntMax # (+) :: CUIntMax -> CUIntMax -> CUIntMax # scale :: IsNatural n => n -> CUIntMax -> CUIntMax #
Additive CUIntPtr |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CUIntPtr # (+) :: CUIntPtr -> CUIntPtr -> CUIntPtr # scale :: IsNatural n => n -> CUIntPtr -> CUIntPtr #
Additive CULLong |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CULLong # (+) :: CULLong -> CULLong -> CULLong # scale :: IsNatural n => n -> CULLong -> CULLong #
Additive CULong |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CULong # (+) :: CULong -> CULong -> CULong # scale :: IsNatural n => n -> CULong -> CULong #
Additive CUSeconds |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CUSeconds # (+) :: CUSeconds -> CUSeconds -> CUSeconds # scale :: IsNatural n => n -> CUSeconds -> CUSeconds #
Additive CUShort |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CUShort # (+) :: CUShort -> CUShort -> CUShort # scale :: IsNatural n => n -> CUShort -> CUShort #
Additive CWchar |
Instance details Defined in Basement.Numerical.Additive Methods azero :: CWchar # (+) :: CWchar -> CWchar -> CWchar # scale :: IsNatural n => n -> CWchar -> CWchar #
Additive Int16 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Int16 # (+) :: Int16 -> Int16 -> Int16 # scale :: IsNatural n => n -> Int16 -> Int16 #
Additive Int32 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Int32 # (+) :: Int32 -> Int32 -> Int32 # scale :: IsNatural n => n -> Int32 -> Int32 #
Additive Int64 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Int64 # (+) :: Int64 -> Int64 -> Int64 # scale :: IsNatural n => n -> Int64 -> Int64 #
Additive Int8 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Int8 # (+) :: Int8 -> Int8 -> Int8 # scale :: IsNatural n => n -> Int8 -> Int8 #
Additive Rational |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Rational # (+) :: Rational -> Rational -> Rational # scale :: IsNatural n => n -> Rational -> Rational #
Additive COff |
Instance details Defined in Basement.Numerical.Additive Methods azero :: COff # (+) :: COff -> COff -> COff # scale :: IsNatural n => n -> COff -> COff #
Additive Word16 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word16 # (+) :: Word16 -> Word16 -> Word16 # scale :: IsNatural n => n -> Word16 -> Word16 #
Additive Word32 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word32 # (+) :: Word32 -> Word32 -> Word32 # scale :: IsNatural n => n -> Word32 -> Word32 #
Additive Word64 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word64 # (+) :: Word64 -> Word64 -> Word64 # scale :: IsNatural n => n -> Word64 -> Word64 #
Additive Word8 |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word8 # (+) :: Word8 -> Word8 -> Word8 # scale :: IsNatural n => n -> Word8 -> Word8 #
Additive Integer |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Integer # (+) :: Integer -> Integer -> Integer # scale :: IsNatural n => n -> Integer -> Integer #
Additive Natural |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Natural # (+) :: Natural -> Natural -> Natural # scale :: IsNatural n => n -> Natural -> Natural #
Additive Double |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Double # (+) :: Double -> Double -> Double # scale :: IsNatural n => n -> Double -> Double #
Additive Float |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Float # (+) :: Float -> Float -> Float # scale :: IsNatural n => n -> Float -> Float #
Additive Int |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Int # (+) :: Int -> Int -> Int # scale :: IsNatural n => n -> Int -> Int #
Additive Word |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Word # (+) :: Word -> Word -> Word # scale :: IsNatural n => n -> Word -> Word #
SizeValid n => Additive (Bits n) |
Instance details Defined in Basement.Bits Methods azero :: Bits n # (+) :: Bits n -> Bits n -> Bits n # scale :: IsNatural n0 => n0 -> Bits n -> Bits n #
KnownNat n => Additive (Zn n) |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Zn n # (+) :: Zn n -> Zn n -> Zn n # scale :: IsNatural n0 => n0 -> Zn n -> Zn n #
(KnownNat n, NatWithinBound Word64 n) => Additive (Zn64 n) |
Instance details Defined in Basement.Numerical.Additive Methods azero :: Zn64 n # (+) :: Zn64 n -> Zn64 n -> Zn64 n # scale :: IsNatural n0 => n0 -> Zn64 n -> Zn64 n #
Additive (CountOf ty) |
Instance details Defined in Basement.Types.OffsetSize Methods azero :: CountOf ty # (+) :: CountOf ty -> CountOf ty -> CountOf ty # scale :: IsNatural n => n -> CountOf ty -> CountOf ty #
Additive (Offset ty) |
Instance details Defined in Basement.Types.OffsetSize Methods azero :: Offset ty # (+) :: Offset ty -> Offset ty -> Offset ty # scale :: IsNatural n => n -> Offset ty -> Offset ty #

class Subtractive a where #

Represent class of things that can be subtracted.

Note that the result is not necessary of the same type as the operand depending on the actual type.

For example:

    (-) :: Int -> Int -> Int
    (-) :: DateTime -> DateTime -> Seconds
    (-) :: Ptr a -> Ptr a -> PtrDiff
    (-) :: Natural -> Natural -> Maybe Natural

Associated Types

type Difference a #

Methods

(-) :: a -> a -> Difference a infixl 6 #

#### Instances

Instances details

Subtractive Word128 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word128 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word128 = Word128
Methods (-) :: Word128 -> Word128 -> Difference Word128 #
Subtractive Word256 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word256 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word256 = Word256
Methods (-) :: Word256 -> Word256 -> Difference Word256 #
Subtractive CBool |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CBool |
Instance details Defined in Basement.Numerical.Subtractive type Difference CBool = CBool
Methods (-) :: CBool -> CBool -> Difference CBool #
Subtractive CChar |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CChar |
Instance details Defined in Basement.Numerical.Subtractive type Difference CChar = CChar
Methods (-) :: CChar -> CChar -> Difference CChar #
Subtractive CClock |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CClock |
Instance details Defined in Basement.Numerical.Subtractive type Difference CClock = CClock
Methods (-) :: CClock -> CClock -> Difference CClock #
Subtractive CDouble |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CDouble |
Instance details Defined in Basement.Numerical.Subtractive type Difference CDouble = CDouble
Methods (-) :: CDouble -> CDouble -> Difference CDouble #
Subtractive CFloat |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CFloat |
Instance details Defined in Basement.Numerical.Subtractive type Difference CFloat = CFloat
Methods (-) :: CFloat -> CFloat -> Difference CFloat #
Subtractive CInt |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CInt |
Instance details Defined in Basement.Numerical.Subtractive type Difference CInt = CInt
Methods (-) :: CInt -> CInt -> Difference CInt #
Subtractive CIntMax |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CIntMax |
Instance details Defined in Basement.Numerical.Subtractive type Difference CIntMax = CIntMax
Methods (-) :: CIntMax -> CIntMax -> Difference CIntMax #
Subtractive CIntPtr |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CIntPtr |
Instance details Defined in Basement.Numerical.Subtractive type Difference CIntPtr = CIntPtr
Methods (-) :: CIntPtr -> CIntPtr -> Difference CIntPtr #
Subtractive CLLong |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CLLong |
Instance details Defined in Basement.Numerical.Subtractive type Difference CLLong = CLLong
Methods (-) :: CLLong -> CLLong -> Difference CLLong #
Subtractive CLong |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CLong |
Instance details Defined in Basement.Numerical.Subtractive type Difference CLong = CLong
Methods (-) :: CLong -> CLong -> Difference CLong #
Subtractive CPtrdiff |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CPtrdiff |
Instance details Defined in Basement.Numerical.Subtractive type Difference CPtrdiff = CPtrdiff
Methods (-) :: CPtrdiff -> CPtrdiff -> Difference CPtrdiff #
Subtractive CSChar |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CSChar |
Instance details Defined in Basement.Numerical.Subtractive type Difference CSChar = CSChar
Methods (-) :: CSChar -> CSChar -> Difference CSChar #
Subtractive CSUSeconds |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CSUSeconds |
Instance details Defined in Basement.Numerical.Subtractive type Difference CSUSeconds = CSUSeconds
Methods (-) :: CSUSeconds -> CSUSeconds -> Difference CSUSeconds #
Subtractive CShort |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CShort |
Instance details Defined in Basement.Numerical.Subtractive type Difference CShort = CShort
Methods (-) :: CShort -> CShort -> Difference CShort #
Subtractive CSigAtomic |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CSigAtomic |
Instance details Defined in Basement.Numerical.Subtractive type Difference CSigAtomic = CSigAtomic
Methods (-) :: CSigAtomic -> CSigAtomic -> Difference CSigAtomic #
Subtractive CSize |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CSize |
Instance details Defined in Basement.Numerical.Subtractive type Difference CSize = CSize
Methods (-) :: CSize -> CSize -> Difference CSize #
Subtractive CTime |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CTime |
Instance details Defined in Basement.Numerical.Subtractive type Difference CTime = CTime
Methods (-) :: CTime -> CTime -> Difference CTime #
Subtractive CUChar |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CUChar |
Instance details Defined in Basement.Numerical.Subtractive type Difference CUChar = CUChar
Methods (-) :: CUChar -> CUChar -> Difference CUChar #
Subtractive CUInt |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CUInt |
Instance details Defined in Basement.Numerical.Subtractive type Difference CUInt = CUInt
Methods (-) :: CUInt -> CUInt -> Difference CUInt #
Subtractive CUIntMax |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CUIntMax |
Instance details Defined in Basement.Numerical.Subtractive type Difference CUIntMax = CUIntMax
Methods (-) :: CUIntMax -> CUIntMax -> Difference CUIntMax #
Subtractive CUIntPtr |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CUIntPtr |
Instance details Defined in Basement.Numerical.Subtractive type Difference CUIntPtr = CUIntPtr
Methods (-) :: CUIntPtr -> CUIntPtr -> Difference CUIntPtr #
Subtractive CULLong |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CULLong |
Instance details Defined in Basement.Numerical.Subtractive type Difference CULLong = CULLong
Methods (-) :: CULLong -> CULLong -> Difference CULLong #
Subtractive CULong |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CULong |
Instance details Defined in Basement.Numerical.Subtractive type Difference CULong = CULong
Methods (-) :: CULong -> CULong -> Difference CULong #
Subtractive CUSeconds |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CUSeconds |
Instance details Defined in Basement.Numerical.Subtractive type Difference CUSeconds = CUSeconds
Methods (-) :: CUSeconds -> CUSeconds -> Difference CUSeconds #
Subtractive CUShort |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CUShort |
Instance details Defined in Basement.Numerical.Subtractive type Difference CUShort = CUShort
Methods (-) :: CUShort -> CUShort -> Difference CUShort #
Subtractive CWchar |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference CWchar |
Instance details Defined in Basement.Numerical.Subtractive type Difference CWchar = CWchar
Methods (-) :: CWchar -> CWchar -> Difference CWchar #
Subtractive Int16 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Int16 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Int16 = Int16
Methods (-) :: Int16 -> Int16 -> Difference Int16 #
Subtractive Int32 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Int32 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Int32 = Int32
Methods (-) :: Int32 -> Int32 -> Difference Int32 #
Subtractive Int64 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Int64 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Int64 = Int64
Methods (-) :: Int64 -> Int64 -> Difference Int64 #
Subtractive Int8 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Int8 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Int8 = Int8
Methods (-) :: Int8 -> Int8 -> Difference Int8 #
Subtractive COff |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference COff |
Instance details Defined in Basement.Numerical.Subtractive type Difference COff = COff
Methods (-) :: COff -> COff -> Difference COff #
Subtractive Word16 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word16 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word16 = Word16
Methods (-) :: Word16 -> Word16 -> Difference Word16 #
Subtractive Word32 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word32 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word32 = Word32
Methods (-) :: Word32 -> Word32 -> Difference Word32 #
Subtractive Word64 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word64 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word64 = Word64
Methods (-) :: Word64 -> Word64 -> Difference Word64 #
Subtractive Word8 |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word8 |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word8 = Word8
Methods (-) :: Word8 -> Word8 -> Difference Word8 #
Subtractive Integer |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Integer |
Instance details Defined in Basement.Numerical.Subtractive type Difference Integer = Integer
Methods (-) :: Integer -> Integer -> Difference Integer #
Subtractive Natural |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Natural |
Instance details Defined in Basement.Numerical.Subtractive type Difference Natural = Maybe Natural
Methods (-) :: Natural -> Natural -> Difference Natural #
Subtractive Char |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Char |
Instance details Defined in Basement.Numerical.Subtractive type Difference Char = Int
Methods (-) :: Char -> Char -> Difference Char #
Subtractive Double |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Double |
Instance details Defined in Basement.Numerical.Subtractive type Difference Double = Double
Methods (-) :: Double -> Double -> Difference Double #
Subtractive Float |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Float |
Instance details Defined in Basement.Numerical.Subtractive type Difference Float = Float
Methods (-) :: Float -> Float -> Difference Float #
Subtractive Int |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Int |
Instance details Defined in Basement.Numerical.Subtractive type Difference Int = Int
Methods (-) :: Int -> Int -> Difference Int #
Subtractive Word |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference Word |
Instance details Defined in Basement.Numerical.Subtractive type Difference Word = Word
Methods (-) :: Word -> Word -> Difference Word #
SizeValid n => Subtractive (Bits n) |
Instance details Defined in Basement.Bits Associated Types
type Difference (Bits n) |
Instance details Defined in Basement.Bits type Difference (Bits n) = Bits n
Methods (-) :: Bits n -> Bits n -> Difference (Bits n) #
KnownNat n => Subtractive (Zn n) |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference (Zn n) |
Instance details Defined in Basement.Numerical.Subtractive type Difference (Zn n) = Zn n
Methods (-) :: Zn n -> Zn n -> Difference (Zn n) #
(KnownNat n, NatWithinBound Word64 n) => Subtractive (Zn64 n) |
Instance details Defined in Basement.Numerical.Subtractive Associated Types
type Difference (Zn64 n) |
Instance details Defined in Basement.Numerical.Subtractive type Difference (Zn64 n) = Zn64 n
Methods (-) :: Zn64 n -> Zn64 n -> Difference (Zn64 n) #
Subtractive (CountOf ty) |
Instance details Defined in Basement.Types.OffsetSize Associated Types
type Difference (CountOf ty) |
Instance details Defined in Basement.Types.OffsetSize type Difference (CountOf ty) = Maybe (CountOf ty)
Methods (-) :: CountOf ty -> CountOf ty -> Difference (CountOf ty) #
Subtractive (Offset ty) |
Instance details Defined in Basement.Types.OffsetSize Associated Types
type Difference (Offset ty) |
Instance details Defined in Basement.Types.OffsetSize type Difference (Offset ty) = CountOf ty
Methods (-) :: Offset ty -> Offset ty -> Difference (Offset ty) #

class Multiplicative a where #

Represent class of things that can be multiplied together

    x * midentity = x
    midentity * x = x

Minimal complete definition

midentity, (*)

Methods

midentity :: a #

Identity element over multiplication

(*) :: a -> a -> a infixl 7 #

Multiplication of 2 elements that result in another element

(^) :: (IsNatural n, Enum n, IDivisible n) => a -> n -> a infixr 8 #

Raise to power, repeated multiplication e.g. > a ^ 2 = a * a > a ^ 10 = (a ^ 5) * (a ^ 5) .. (^) :: (IsNatural n) => a -> n -> a

#### Instances

Instances details

Multiplicative Word128 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word128 # (*) :: Word128 -> Word128 -> Word128 # (^) :: (IsNatural n, Enum n, IDivisible n) => Word128 -> n -> Word128 #
Multiplicative Word256 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word256 # (*) :: Word256 -> Word256 -> Word256 # (^) :: (IsNatural n, Enum n, IDivisible n) => Word256 -> n -> Word256 #
Multiplicative CChar |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CChar # (*) :: CChar -> CChar -> CChar # (^) :: (IsNatural n, Enum n, IDivisible n) => CChar -> n -> CChar #
Multiplicative CClock |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CClock # (*) :: CClock -> CClock -> CClock # (^) :: (IsNatural n, Enum n, IDivisible n) => CClock -> n -> CClock #
Multiplicative CDouble |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CDouble # (*) :: CDouble -> CDouble -> CDouble # (^) :: (IsNatural n, Enum n, IDivisible n) => CDouble -> n -> CDouble #
Multiplicative CFloat |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CFloat # (*) :: CFloat -> CFloat -> CFloat # (^) :: (IsNatural n, Enum n, IDivisible n) => CFloat -> n -> CFloat #
Multiplicative CInt |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CInt # (*) :: CInt -> CInt -> CInt # (^) :: (IsNatural n, Enum n, IDivisible n) => CInt -> n -> CInt #
Multiplicative CIntMax |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CIntMax # (*) :: CIntMax -> CIntMax -> CIntMax # (^) :: (IsNatural n, Enum n, IDivisible n) => CIntMax -> n -> CIntMax #
Multiplicative CIntPtr |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CIntPtr # (*) :: CIntPtr -> CIntPtr -> CIntPtr # (^) :: (IsNatural n, Enum n, IDivisible n) => CIntPtr -> n -> CIntPtr #
Multiplicative CLLong |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CLLong # (*) :: CLLong -> CLLong -> CLLong # (^) :: (IsNatural n, Enum n, IDivisible n) => CLLong -> n -> CLLong #
Multiplicative CLong |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CLong # (*) :: CLong -> CLong -> CLong # (^) :: (IsNatural n, Enum n, IDivisible n) => CLong -> n -> CLong #
Multiplicative CPtrdiff |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CPtrdiff # (*) :: CPtrdiff -> CPtrdiff -> CPtrdiff # (^) :: (IsNatural n, Enum n, IDivisible n) => CPtrdiff -> n -> CPtrdiff #
Multiplicative CSChar |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CSChar # (*) :: CSChar -> CSChar -> CSChar # (^) :: (IsNatural n, Enum n, IDivisible n) => CSChar -> n -> CSChar #
Multiplicative CSUSeconds |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CSUSeconds # (*) :: CSUSeconds -> CSUSeconds -> CSUSeconds # (^) :: (IsNatural n, Enum n, IDivisible n) => CSUSeconds -> n -> CSUSeconds #
Multiplicative CShort |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CShort # (*) :: CShort -> CShort -> CShort # (^) :: (IsNatural n, Enum n, IDivisible n) => CShort -> n -> CShort #
Multiplicative CSigAtomic |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CSigAtomic # (*) :: CSigAtomic -> CSigAtomic -> CSigAtomic # (^) :: (IsNatural n, Enum n, IDivisible n) => CSigAtomic -> n -> CSigAtomic #
Multiplicative CSize |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CSize # (*) :: CSize -> CSize -> CSize # (^) :: (IsNatural n, Enum n, IDivisible n) => CSize -> n -> CSize #
Multiplicative CTime |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CTime # (*) :: CTime -> CTime -> CTime # (^) :: (IsNatural n, Enum n, IDivisible n) => CTime -> n -> CTime #
Multiplicative CUChar |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CUChar # (*) :: CUChar -> CUChar -> CUChar # (^) :: (IsNatural n, Enum n, IDivisible n) => CUChar -> n -> CUChar #
Multiplicative CUInt |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CUInt # (*) :: CUInt -> CUInt -> CUInt # (^) :: (IsNatural n, Enum n, IDivisible n) => CUInt -> n -> CUInt #
Multiplicative CUIntMax |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CUIntMax # (*) :: CUIntMax -> CUIntMax -> CUIntMax # (^) :: (IsNatural n, Enum n, IDivisible n) => CUIntMax -> n -> CUIntMax #
Multiplicative CUIntPtr |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CUIntPtr # (*) :: CUIntPtr -> CUIntPtr -> CUIntPtr # (^) :: (IsNatural n, Enum n, IDivisible n) => CUIntPtr -> n -> CUIntPtr #
Multiplicative CULLong |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CULLong # (*) :: CULLong -> CULLong -> CULLong # (^) :: (IsNatural n, Enum n, IDivisible n) => CULLong -> n -> CULLong #
Multiplicative CULong |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CULong # (*) :: CULong -> CULong -> CULong # (^) :: (IsNatural n, Enum n, IDivisible n) => CULong -> n -> CULong #
Multiplicative CUSeconds |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CUSeconds # (*) :: CUSeconds -> CUSeconds -> CUSeconds # (^) :: (IsNatural n, Enum n, IDivisible n) => CUSeconds -> n -> CUSeconds #
Multiplicative CUShort |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CUShort # (*) :: CUShort -> CUShort -> CUShort # (^) :: (IsNatural n, Enum n, IDivisible n) => CUShort -> n -> CUShort #
Multiplicative CWchar |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: CWchar # (*) :: CWchar -> CWchar -> CWchar # (^) :: (IsNatural n, Enum n, IDivisible n) => CWchar -> n -> CWchar #
Multiplicative Int16 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Int16 # (*) :: Int16 -> Int16 -> Int16 # (^) :: (IsNatural n, Enum n, IDivisible n) => Int16 -> n -> Int16 #
Multiplicative Int32 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Int32 # (*) :: Int32 -> Int32 -> Int32 # (^) :: (IsNatural n, Enum n, IDivisible n) => Int32 -> n -> Int32 #
Multiplicative Int64 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Int64 # (*) :: Int64 -> Int64 -> Int64 # (^) :: (IsNatural n, Enum n, IDivisible n) => Int64 -> n -> Int64 #
Multiplicative Int8 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Int8 # (*) :: Int8 -> Int8 -> Int8 # (^) :: (IsNatural n, Enum n, IDivisible n) => Int8 -> n -> Int8 #
Multiplicative Rational |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Rational # (*) :: Rational -> Rational -> Rational # (^) :: (IsNatural n, Enum n, IDivisible n) => Rational -> n -> Rational #
Multiplicative COff |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: COff # (*) :: COff -> COff -> COff # (^) :: (IsNatural n, Enum n, IDivisible n) => COff -> n -> COff #
Multiplicative Word16 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word16 # (*) :: Word16 -> Word16 -> Word16 # (^) :: (IsNatural n, Enum n, IDivisible n) => Word16 -> n -> Word16 #
Multiplicative Word32 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word32 # (*) :: Word32 -> Word32 -> Word32 # (^) :: (IsNatural n, Enum n, IDivisible n) => Word32 -> n -> Word32 #
Multiplicative Word64 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word64 # (*) :: Word64 -> Word64 -> Word64 # (^) :: (IsNatural n, Enum n, IDivisible n) => Word64 -> n -> Word64 #
Multiplicative Word8 |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word8 # (*) :: Word8 -> Word8 -> Word8 # (^) :: (IsNatural n, Enum n, IDivisible n) => Word8 -> n -> Word8 #
Multiplicative Integer |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Integer # (*) :: Integer -> Integer -> Integer # (^) :: (IsNatural n, Enum n, IDivisible n) => Integer -> n -> Integer #
Multiplicative Natural |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Natural # (*) :: Natural -> Natural -> Natural # (^) :: (IsNatural n, Enum n, IDivisible n) => Natural -> n -> Natural #
Multiplicative Double |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Double # (*) :: Double -> Double -> Double # (^) :: (IsNatural n, Enum n, IDivisible n) => Double -> n -> Double #
Multiplicative Float |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Float # (*) :: Float -> Float -> Float # (^) :: (IsNatural n, Enum n, IDivisible n) => Float -> n -> Float #
Multiplicative Int |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Int # (*) :: Int -> Int -> Int # (^) :: (IsNatural n, Enum n, IDivisible n) => Int -> n -> Int #
Multiplicative Word |
Instance details Defined in Basement.Numerical.Multiplicative Methods midentity :: Word # (*) :: Word -> Word -> Word # (^) :: (IsNatural n, Enum n, IDivisible n) => Word -> n -> Word #
SizeValid n => Multiplicative (Bits n) |
Instance details Defined in Basement.Bits Methods midentity :: Bits n # (*) :: Bits n -> Bits n -> Bits n # (^) :: (IsNatural n0, Enum n0, IDivisible n0) => Bits n -> n0 -> Bits n #

class (Additive a, Multiplicative a) => IDivisible a where #

Represent types that supports an euclidian division

    (x ‘div‘ y) * y + (x ‘mod‘ y) == x

Minimal complete definition

div, mod | divMod

Methods

div :: a -> a -> a #

mod :: a -> a -> a #

divMod :: a -> a -> (a, a) #

#### Instances

Instances details

IDivisible Word128 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word128 -> Word128 -> Word128 # mod :: Word128 -> Word128 -> Word128 # divMod :: Word128 -> Word128 -> (Word128, Word128) #
IDivisible Word256 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word256 -> Word256 -> Word256 # mod :: Word256 -> Word256 -> Word256 # divMod :: Word256 -> Word256 -> (Word256, Word256) #
IDivisible CChar |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CChar -> CChar -> CChar # mod :: CChar -> CChar -> CChar # divMod :: CChar -> CChar -> (CChar, CChar) #
IDivisible CInt |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CInt -> CInt -> CInt # mod :: CInt -> CInt -> CInt # divMod :: CInt -> CInt -> (CInt, CInt) #
IDivisible CIntMax |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CIntMax -> CIntMax -> CIntMax # mod :: CIntMax -> CIntMax -> CIntMax # divMod :: CIntMax -> CIntMax -> (CIntMax, CIntMax) #
IDivisible CIntPtr |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CIntPtr -> CIntPtr -> CIntPtr # mod :: CIntPtr -> CIntPtr -> CIntPtr # divMod :: CIntPtr -> CIntPtr -> (CIntPtr, CIntPtr) #
IDivisible CLLong |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CLLong -> CLLong -> CLLong # mod :: CLLong -> CLLong -> CLLong # divMod :: CLLong -> CLLong -> (CLLong, CLLong) #
IDivisible CLong |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CLong -> CLong -> CLong # mod :: CLong -> CLong -> CLong # divMod :: CLong -> CLong -> (CLong, CLong) #
IDivisible CPtrdiff |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CPtrdiff -> CPtrdiff -> CPtrdiff # mod :: CPtrdiff -> CPtrdiff -> CPtrdiff # divMod :: CPtrdiff -> CPtrdiff -> (CPtrdiff, CPtrdiff) #
IDivisible CSChar |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CSChar -> CSChar -> CSChar # mod :: CSChar -> CSChar -> CSChar # divMod :: CSChar -> CSChar -> (CSChar, CSChar) #
IDivisible CShort |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CShort -> CShort -> CShort # mod :: CShort -> CShort -> CShort # divMod :: CShort -> CShort -> (CShort, CShort) #
IDivisible CSigAtomic |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CSigAtomic -> CSigAtomic -> CSigAtomic # mod :: CSigAtomic -> CSigAtomic -> CSigAtomic # divMod :: CSigAtomic -> CSigAtomic -> (CSigAtomic, CSigAtomic) #
IDivisible CSize |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CSize -> CSize -> CSize # mod :: CSize -> CSize -> CSize # divMod :: CSize -> CSize -> (CSize, CSize) #
IDivisible CUChar |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CUChar -> CUChar -> CUChar # mod :: CUChar -> CUChar -> CUChar # divMod :: CUChar -> CUChar -> (CUChar, CUChar) #
IDivisible CUInt |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CUInt -> CUInt -> CUInt # mod :: CUInt -> CUInt -> CUInt # divMod :: CUInt -> CUInt -> (CUInt, CUInt) #
IDivisible CUIntMax |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CUIntMax -> CUIntMax -> CUIntMax # mod :: CUIntMax -> CUIntMax -> CUIntMax # divMod :: CUIntMax -> CUIntMax -> (CUIntMax, CUIntMax) #
IDivisible CUIntPtr |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CUIntPtr -> CUIntPtr -> CUIntPtr # mod :: CUIntPtr -> CUIntPtr -> CUIntPtr # divMod :: CUIntPtr -> CUIntPtr -> (CUIntPtr, CUIntPtr) #
IDivisible CULLong |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CULLong -> CULLong -> CULLong # mod :: CULLong -> CULLong -> CULLong # divMod :: CULLong -> CULLong -> (CULLong, CULLong) #
IDivisible CULong |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CULong -> CULong -> CULong # mod :: CULong -> CULong -> CULong # divMod :: CULong -> CULong -> (CULong, CULong) #
IDivisible CUShort |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CUShort -> CUShort -> CUShort # mod :: CUShort -> CUShort -> CUShort # divMod :: CUShort -> CUShort -> (CUShort, CUShort) #
IDivisible CWchar |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: CWchar -> CWchar -> CWchar # mod :: CWchar -> CWchar -> CWchar # divMod :: CWchar -> CWchar -> (CWchar, CWchar) #
IDivisible Int16 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Int16 -> Int16 -> Int16 # mod :: Int16 -> Int16 -> Int16 # divMod :: Int16 -> Int16 -> (Int16, Int16) #
IDivisible Int32 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Int32 -> Int32 -> Int32 # mod :: Int32 -> Int32 -> Int32 # divMod :: Int32 -> Int32 -> (Int32, Int32) #
IDivisible Int64 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Int64 -> Int64 -> Int64 # mod :: Int64 -> Int64 -> Int64 # divMod :: Int64 -> Int64 -> (Int64, Int64) #
IDivisible Int8 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Int8 -> Int8 -> Int8 # mod :: Int8 -> Int8 -> Int8 # divMod :: Int8 -> Int8 -> (Int8, Int8) #
IDivisible Word16 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word16 -> Word16 -> Word16 # mod :: Word16 -> Word16 -> Word16 # divMod :: Word16 -> Word16 -> (Word16, Word16) #
IDivisible Word32 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word32 -> Word32 -> Word32 # mod :: Word32 -> Word32 -> Word32 # divMod :: Word32 -> Word32 -> (Word32, Word32) #
IDivisible Word64 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word64 -> Word64 -> Word64 # mod :: Word64 -> Word64 -> Word64 # divMod :: Word64 -> Word64 -> (Word64, Word64) #
IDivisible Word8 |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word8 -> Word8 -> Word8 # mod :: Word8 -> Word8 -> Word8 # divMod :: Word8 -> Word8 -> (Word8, Word8) #
IDivisible Integer |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Integer -> Integer -> Integer # mod :: Integer -> Integer -> Integer # divMod :: Integer -> Integer -> (Integer, Integer) #
IDivisible Natural |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Natural -> Natural -> Natural # mod :: Natural -> Natural -> Natural # divMod :: Natural -> Natural -> (Natural, Natural) #
IDivisible Int |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Int -> Int -> Int # mod :: Int -> Int -> Int # divMod :: Int -> Int -> (Int, Int) #
IDivisible Word |
Instance details Defined in Basement.Numerical.Multiplicative Methods div :: Word -> Word -> Word # mod :: Word -> Word -> Word # divMod :: Word -> Word -> (Word, Word) #
SizeValid n => IDivisible (Bits n) |
Instance details Defined in Basement.Bits Methods div :: Bits n -> Bits n -> Bits n # mod :: Bits n -> Bits n -> Bits n # divMod :: Bits n -> Bits n -> (Bits n, Bits n) #

class Multiplicative a => Divisible a where #

Support for division between same types

This is likely to change to represent specific mathematic divisions

Methods

(/) :: a -> a -> a infixl 7 #

#### Instances

Instances details

Divisible CDouble |
Instance details Defined in Basement.Numerical.Multiplicative Methods (/) :: CDouble -> CDouble -> CDouble #
Divisible CFloat |
Instance details Defined in Basement.Numerical.Multiplicative Methods (/) :: CFloat -> CFloat -> CFloat #
Divisible Rational |
Instance details Defined in Basement.Numerical.Multiplicative Methods (/) :: Rational -> Rational -> Rational #
Divisible Double |
Instance details Defined in Basement.Numerical.Multiplicative Methods (/) :: Double -> Double -> Double #
Divisible Float |
Instance details Defined in Basement.Numerical.Multiplicative Methods (/) :: Float -> Float -> Float #

data Sign #

Sign of a signed number

Constructors

SignNegative |
SignZero |
SignPositive |

#### Instances

Instances details

Eq Sign # |
Instance details Defined in Foundation.Numerical Methods (==) :: Sign -> Sign -> Bool # (/=) :: Sign -> Sign -> Bool #

recip :: Divisible a => a -> a #

class IntegralRounding a where #

Methods

roundUp :: Integral n => a -> n #

Round up, to the next integral.

Also known as `ceiling`

roundDown :: Integral n => a -> n #

Round down, to the previous integral

Also known as `floor`

roundTruncate :: Integral n => a -> n #

Truncate to the closest integral to the fractional number closer to 0.

This is equivalent to roundUp for negative Number and roundDown for positive Number

roundNearest :: Integral n => a -> n #

Round to the nearest integral

    roundNearest 3.6

4 > roundNearest 3.4 3

#### Instances

Instances details

IntegralRounding Rational # |
Instance details Defined in Foundation.Numerical Methods roundUp :: Integral n => Rational -> n # roundDown :: Integral n => Rational -> n # roundTruncate :: Integral n => Rational -> n # roundNearest :: Integral n => Rational -> n #
IntegralRounding Double # |
Instance details Defined in Foundation.Numerical Methods roundUp :: Integral n => Double -> n # roundDown :: Integral n => Double -> n # roundTruncate :: Integral n => Double -> n # roundNearest :: Integral n => Double -> n #
IntegralRounding Float # |
Instance details Defined in Foundation.Numerical Methods roundUp :: Integral n => Float -> n # roundDown :: Integral n => Float -> n # roundTruncate :: Integral n => Float -> n # roundNearest :: Integral n => Float -> n #

class FloatingPoint a where #

IEEE754 Floating Point

Methods

floatRadix :: Proxy a -> Integer #

floatDigits :: Proxy a -> Int #

floatRange :: Proxy a -> (Int, Int) #

floatDecode :: a -> (Integer, Int) #

floatEncode :: Integer -> Int -> a #

#### Instances

Instances details

FloatingPoint Double # |
Instance details Defined in Foundation.Numerical.Floating Methods floatRadix :: Proxy Double -> Integer # floatDigits :: Proxy Double -> Int # floatRange :: Proxy Double -> (Int, Int) # floatDecode :: Double -> (Integer, Int) # floatEncode :: Integer -> Int -> Double #
FloatingPoint Float # |
Instance details Defined in Foundation.Numerical.Floating Methods floatRadix :: Proxy Float -> Integer # floatDigits :: Proxy Float -> Int # floatRange :: Proxy Float -> (Int, Int) # floatDecode :: Float -> (Integer, Int) # floatEncode :: Integer -> Int -> Float #