arithmoi-0.11.0.0: Efficient basic number-theoretic functions.

Copyright(c) 2017 Andrew Lelechenko 2018 Bhavik Mehta
LicenseMIT
MaintainerAndrew Lelechenko <andrew.lelechenko@gmail.com>
Safe HaskellNone
LanguageHaskell2010

Math.NumberTheory.Moduli.PrimitiveRoot

Contents

Description

Deprecated: Use Math.NumberTheory.Moduli.Multiplicative instead

Description: Deprecated

Primitive roots and cyclic groups.

Synopsis

Primitive roots

data PrimitiveRoot m Source #

PrimitiveRoot m is a type which is only inhabited by primitive roots of m.

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)}})