lol-0.2.0.0: A library for lattice cryptography.

Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Types.FiniteField

Description

Basic (unoptimized) finite field arithmetic.

Synopsis

Documentation

data GF fp d Source

A finite field of given degree over F_p.

Instances

(Eq fp, C fp) => Eq (GF k fp d) Source 
Show fp => Show (GF k fp d) Source 
NFData fp => NFData (GF k fp d) Source 
GFCtx k fp d => C (GF k fp d) Source 
GFCtx k fp d => C (GF k fp d) Source 
C fp => C (GF k fp d) Source 
C fp => C (GF k fp d) Source 
GFCtx k fp d => Enumerable (GF k fp d) Source 
GFCtx k fp d => CRTrans (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, Additive (CT m fp)) => C (GF k fp d) (CT m fp) 
(GFCtx k fp d, Fact m, Additive (RT m fp)) => C (GF k fp d) (RT m fp) 
(GFCtx k fp d, Fact m, CElt t fp) => C (GF k fp d) (Cyc t m fp) 
(GFCtx k fp d, Fact m, UCElt t fp) => C (GF k fp d) (UCyc Factored t m P fp) 

type GFCtx fp d = (PrimeField fp, Reflects d Int) Source

size :: GFCtx fp d => Tagged (GF fp d) Int Source

The order of the field: size (GF fp d) = p^d

trace :: forall fp d. GFCtx fp d => GF fp d -> fp Source

Trace into the prime subfield.

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 fp-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 IrreducibleChar2 and exported from Lol.)

data X Source

Convenience data type for writing IrreduciblePoly instances.

Constructors

X 

(^^) :: Ring a => X -> Int -> Polynomial a Source

Convenience function for writing IrreduciblePoly instances.

newtype TensorCoeffs a Source

Constructors

Coeffs 

Fields

unCoeffs :: [a]
 

Instances

C a => C (TensorCoeffs a) Source 
(Additive fp, Ring (GF k fp d), Reflects k d Int) => C (GF k fp d) (TensorCoeffs fp) Source