License | BSD-style |
---|---|
Maintainer | Haskell Foundation |
Safe Haskell | None |
Language | Haskell2010 |
Types to represent ℤ/nℤ.
ℤ/nℤ is a finite field and is defined as the set of natural number: {0, 1, ..., n − 1}.
Synopsis
- data Zn64 (n :: Nat)
- unZn64 :: Zn64 n -> Word64
- data Zn (n :: Nat)
- unZn :: Zn n -> Natural
- zn64 :: forall n. (KnownNat n, NatWithinBound Word64 n) => Word64 -> Zn64 n
- zn :: forall n. KnownNat n => Natural -> Zn n
- zn64Nat :: forall m n. (KnownNat m, KnownNat n, NatWithinBound Word64 m, NatWithinBound Word64 n, CmpNat m n ~ 'LT) => Proxy m -> Zn64 n
- znNat :: forall m n. (KnownNat m, KnownNat n, CmpNat m n ~ 'LT) => Proxy m -> Zn n
Documentation
A type level bounded natural backed by a Word64
Instances
A type level bounded natural
Instances
zn64 :: forall n. (KnownNat n, NatWithinBound Word64 n) => Word64 -> Zn64 n Source #
Create an element of ℤ/nℤ from a Word64
If the value is greater than n, then the value is normalized by using the integer modulus n
zn :: forall n. KnownNat n => Natural -> Zn n Source #
Create an element of ℤ/nℤ from a Natural.
If the value is greater than n, then the value is normalized by using the integer modulus n