Copyright | (c) 2017 Andrew Lelechenko 2018 Bhavik Mehta |
---|---|
License | MIT |
Maintainer | Andrew Lelechenko <andrew.lelechenko@gmail.com> |
Safe Haskell | None |
Language | Haskell2010 |
Deprecated: Use Math.NumberTheory.Moduli.Multiplicative instead
Description: Deprecated
Primitive roots and cyclic groups.
Synopsis
- data PrimitiveRoot m
- unPrimitiveRoot :: PrimitiveRoot m -> MultMod m
- isPrimitiveRoot :: (Integral a, UniqueFactorisation a) => CyclicGroup a m -> Mod m -> Maybe (PrimitiveRoot m)
Primitive roots
data PrimitiveRoot m Source #
PrimitiveRoot
m is a type which is only inhabited
by primitive roots of m.
Instances
Eq (PrimitiveRoot m) Source # | |
Defined in Math.NumberTheory.Moduli.Multiplicative (==) :: PrimitiveRoot m -> PrimitiveRoot m -> Bool # (/=) :: PrimitiveRoot m -> PrimitiveRoot m -> Bool # | |
KnownNat m => Show (PrimitiveRoot m) Source # | |
Defined in Math.NumberTheory.Moduli.Multiplicative showsPrec :: Int -> PrimitiveRoot m -> ShowS # show :: PrimitiveRoot m -> String # showList :: [PrimitiveRoot m] -> ShowS # |
unPrimitiveRoot :: PrimitiveRoot m -> MultMod m Source #
Extract primitive root value.
isPrimitiveRoot :: (Integral a, UniqueFactorisation a) => CyclicGroup a m -> Mod m -> Maybe (PrimitiveRoot m) Source #
Check whether a given modular residue is a primitive root.
>>>
:set -XDataKinds
>>>
import Data.Maybe
>>>
isPrimitiveRoot (fromJust cyclicGroup) (1 :: Mod 13)
Nothing>>>
isPrimitiveRoot (fromJust cyclicGroup) (2 :: Mod 13)
Just (PrimitiveRoot {unPrimitiveRoot = MultMod {multElement = (2 `modulo` 13)}})