Copyright | (c) Eric Crockett 2011-2017 Chris Peikert 2011-2017 |
---|---|
License | GPL-2 |
Maintainer | ecrockett0@email.com |
Stability | experimental |
Portability | POSIX \( \def\F{\mathbb{F}} \) |
Safe Haskell | None |
Language | Haskell2010 |
Basic (unoptimized) finite field arithmetic.
- data GF fp d
- type PrimeField fp = (Enumerable fp, Field fp, Eq fp, ZeroTestable fp, Prime (CharOf fp), IrreduciblePoly fp)
- type GFCtx fp d = (PrimeField fp, Reflects d Int)
- size :: GFCtx fp d => Tagged (GF fp d) Int
- trace :: forall fp d. GFCtx fp d => GF fp d -> fp
- toList :: forall fp d. (Reflects d Int, Additive fp) => GF fp d -> [fp]
- fromList :: forall fp d. Reflects d Int => [fp] -> GF fp d
- class Field fp => IrreduciblePoly fp where
- data X = X
- (^^) :: Ring a => X -> Int -> Polynomial a
- newtype TensorCoeffs a = Coeffs {
- unCoeffs :: [a]
Documentation
A finite field of given degree over \(\F_p\).
GFCtx k fp d => CRTrans Maybe (GF k fp d) Source # | |
(C fp, Eq fp) => Eq (GF k fp d) Source # | |
Show fp => Show (GF k fp d) Source # | |
(Random fp, Reflects k d Int) => Random (GF k fp d) Source # | |
NFData fp => NFData (GF k fp d) Source # | |
GFCtx k fp d => C (GF k fp d) Source # | |
C fp => C (GF k fp d) Source # | |
GFCtx k fp d => C (GF k fp d) Source # | |
C fp => C (GF k fp d) Source # | |
GFCtx k fp d => Enumerable (GF k fp d) Source # | |
(Additive fp, Ring (GF k fp d), Reflects k d Int) => C (GF k fp d) (TensorCoeffs fp) Source # | |
(GFCtx k fp d, Fact m, CElt t fp) => C (GF k fp d) (Cyc t m fp) # | \(R_p\) is an \(\F_{p^d}\)-module when \(d\) divides \(\varphi(m)\), by applying \(d\)-dimensional \(\F_p\)-linear transform on \(d\)-dim chunks of powerful basis coeffs. |
(GFCtx k fp d, Fact m, Tensor t, TElt t fp) => C (GF k fp d) (UCyc t m P fp) # | \(R_p\) is an \(\F_{p^d}\)-module when \(d\) divides \(\varphi(m)\), by applying \(d\)-dimensional \(\F_p\)-linear transform on \(d\)-dim chunks of powerful basis coeffs. |
type PrimeField fp = (Enumerable fp, Field fp, Eq fp, ZeroTestable fp, Prime (CharOf fp), IrreduciblePoly fp) Source #
Constraint synonym for a prime field.
size :: GFCtx fp d => Tagged (GF fp d) Int Source #
The order of the field: size (GF fp d) =
\( p^d \)
toList :: forall fp d. (Reflects d Int, Additive fp) => GF fp d -> [fp] Source #
Yield a list of length exactly \(d\) (i.e., including trailing zeros) of the \(\F_p\)-coefficients with respect to the power basis.
fromList :: forall fp d. Reflects d Int => [fp] -> GF fp d Source #
Yield a field element given up to \(d\) coefficients with respect to the power basis.
class Field fp => IrreduciblePoly fp where Source #
Represents fields over which we can get irreducible polynomials of desired degrees. (An instance of this class is defined in Crypto.Lol.Types.IrreducibleChar2 and exported from Crypto.Lol.Types.)
irreduciblePoly :: Reflects d Int => Tagged d (Polynomial fp) Source #
(^^) :: Ring a => X -> Int -> Polynomial a Source #
Convenience function for writing IrreduciblePoly
instances.
newtype TensorCoeffs a Source #
This wrapper for a list of coefficients is used to define a \(\F_{p^d}\)-module structure for tensors over \(\F_p\) of dimension \(n\), where \(d \mid n\).