lol-0.7.0.0: A library for lattice cryptography.

Copyright(c) Eric Crockett 2011-2017
Chris Peikert 2011-2017
LicenseGPL-3
Maintainerecrockett0@gmail.com
Stabilityexperimental
PortabilityPOSIX \( \def\Z{\mathbb{Z}} \) \( \def\R{\mathbb{R}} \)
Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Types.Unsafe.RRq

Description

An implementation of the additive quotient group \(\R/(q\Z)\). This module is "unsafe" because it exports the RRq constructor. This module should only be used to make tensor-specific instances for RRq. The safe way to use this type is to import Crypto.Lol.Types.

Synopsis

Documentation

newtype RRq q r Source #

The additive group \( \R/(q\Z) \) of reals modulo q, using underlying floating-point type r.

Constructors

RRq r 
Instances
(Reflects q r, RealField r) => Reduce r (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

reduce :: r -> RRq q r Source #

TensorPowDec t (RRq q r) => UnCyc t (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

cycPow :: Fact m => CycRep t P m (RRq q r) -> Cyc t m (RRq q r) Source #

cycDec :: Fact m => CycRep t D m (RRq q r) -> Cyc t m (RRq q r) Source #

unCycPow :: Fact m => Cyc t m (RRq q r) -> CycRep t P m (RRq q r) Source #

unCycDec :: Fact m => Cyc t m (RRq q r) -> CycRep t D m (RRq q r) Source #

TensorPowDec t (RRq q r) => ExtensionCyc (Cyc t) (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

embed :: Divides m m' => Cyc t m (RRq q r) -> Cyc t m' (RRq q r) Source #

twace :: Divides m m' => Cyc t m' (RRq q r) -> Cyc t m (RRq q r) Source #

powBasis :: Divides m m' => Tagged m [Cyc t m' (RRq q r)] Source #

coeffsCyc :: Divides m m' => Basis -> Cyc t m' (RRq q r) -> [Cyc t m (RRq q r)] Source #

(Protoable (IZipVector m (RRq q Double)), ProtoType (IZipVector m (RRq q Double)) ~ KqProduct, Protoable (IZipVector m b), ProtoType (IZipVector m b) ~ KqProduct) => Protoable (IZipVector m (RRq q Double, b)) Source # 
Instance details

Defined in Crypto.Lol.Types.IZipVector

Associated Types

type ProtoType (IZipVector m (RRq q Double, b)) :: Type Source #

(Fact m, Reflects q Double) => Protoable (IZipVector m (RRq q Double)) Source # 
Instance details

Defined in Crypto.Lol.Types.IZipVector

Associated Types

type ProtoType (IZipVector m (RRq q Double)) :: Type Source #

(Fact m, UnCyc t Int64, UnCyc t (RRq q r), IFunctor t, IFElt t Int64, IFElt t (RRq q r)) => FunctorCyc (Cyc t m) Int64 (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (Int64 -> RRq q r) -> Cyc t m Int64 -> Cyc t m (RRq q r) Source #

(Fact m, UnCyc t Double, UnCyc t (RRq q r), IFunctor t, IFElt t Double, IFElt t (RRq q r)) => FunctorCyc (Cyc t m) Double (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (Double -> RRq q r) -> Cyc t m Double -> Cyc t m (RRq q r) Source #

(Fact m, UnCyc t (a, b), UnCyc t (RRq q r), IFunctor t, IFElt t (a, b), IFElt t (RRq q r)) => FunctorCyc (Cyc t m) (a, b) (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> ((a, b) -> RRq q r) -> Cyc t m (a, b) -> Cyc t m (RRq q r) Source #

(Fact m, TensorPowDec t (RRq q r), Foldable (t m)) => FoldableCyc (Cyc t m) (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

foldrCyc :: Maybe Basis -> (RRq q r -> b -> b) -> b -> Cyc t m (RRq q r) -> b Source #

(Fact m, UnCyc t (RRq q r), UnCyc t Int64, IFunctor t, IFElt t (RRq q r), IFElt t Int64) => FunctorCyc (Cyc t m) (RRq q r) Int64 Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (RRq q r -> Int64) -> Cyc t m (RRq q r) -> Cyc t m Int64 Source #

(Fact m, UnCyc t (RRq q r), UnCyc t Double, IFunctor t, IFElt t (RRq q r), IFElt t Double) => FunctorCyc (Cyc t m) (RRq q r) Double Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (RRq q r -> Double) -> Cyc t m (RRq q r) -> Cyc t m Double Source #

(Fact m, Functor (t m), UnCyc t (RRq q r)) => FunctorCyc (Cyc t m) (RRq q r) Integer Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (RRq q r -> Integer) -> Cyc t m (RRq q r) -> Cyc t m Integer Source #

(Fact m, UnCyc t (RRq q r), UnCyc t (a, b), IFunctor t, IFElt t (RRq q r), IFElt t (a, b)) => FunctorCyc (Cyc t m) (RRq q r) (a, b) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (RRq q r -> (a, b)) -> Cyc t m (RRq q r) -> Cyc t m (a, b) Source #

(Fact m, Rescale (RRq q r) (RRq p r), TensorPowDec t (RRq q r), TensorPowDec t (RRq p r)) => RescaleCyc (Cyc t m) (RRq q r) (RRq p r) Source #

rescale from one modulus to another

Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

rescaleCyc :: Basis -> Cyc t m (RRq q r) -> Cyc t m (RRq p r) Source #

(Fact m, UnCyc t (ZqBasic q z), UnCyc t (RRq q r), IFunctor t, IFElt t (ZqBasic q z), IFElt t (RRq q r)) => FunctorCyc (Cyc t m) (ZqBasic q z) (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (ZqBasic q z -> RRq q r) -> Cyc t m (ZqBasic q z) -> Cyc t m (RRq q r) Source #

(Fact m, UnCyc t (RRq q r), UnCyc t (ZqBasic q z), IFunctor t, IFElt t (RRq q r), IFElt t (ZqBasic q z)) => FunctorCyc (Cyc t m) (RRq q r) (ZqBasic q z) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (RRq q r -> ZqBasic q z) -> Cyc t m (RRq q r) -> Cyc t m (ZqBasic q z) Source #

(Fact m, UnCyc t (RRq q r), UnCyc t (RRq q r), IFunctor t, IFElt t (RRq q r), IFElt t (RRq q r)) => FunctorCyc (Cyc t m) (RRq q r) (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

fmapCyc :: Maybe Basis -> (RRq q r -> RRq q r) -> Cyc t m (RRq q r) -> Cyc t m (RRq q r) Source #

Eq r => Eq (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

(==) :: RRq q r -> RRq q r -> Bool #

(/=) :: RRq q r -> RRq q r -> Bool #

Show r => Show (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

showsPrec :: Int -> RRq q r -> ShowS #

show :: RRq q r -> String #

showList :: [RRq q r] -> ShowS #

Show (t m (RRq q r)) => Show (Cyc t m (RRq q r)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

showsPrec :: Int -> Cyc t m (RRq q r) -> ShowS #

show :: Cyc t m (RRq q r) -> String #

showList :: [Cyc t m (RRq q r)] -> ShowS #

Random (RRq q Double) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

randomR :: RandomGen g => (RRq q Double, RRq q Double) -> g -> (RRq q Double, g) #

random :: RandomGen g => g -> (RRq q Double, g) #

randomRs :: RandomGen g => (RRq q Double, RRq q Double) -> g -> [RRq q Double] #

randoms :: RandomGen g => g -> [RRq q Double] #

randomRIO :: (RRq q Double, RRq q Double) -> IO (RRq q Double) #

randomIO :: IO (RRq q Double) #

Random (t m (RRq q r)) => Random (Cyc t m (RRq q r)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

randomR :: RandomGen g => (Cyc t m (RRq q r), Cyc t m (RRq q r)) -> g -> (Cyc t m (RRq q r), g) #

random :: RandomGen g => g -> (Cyc t m (RRq q r), g) #

randomRs :: RandomGen g => (Cyc t m (RRq q r), Cyc t m (RRq q r)) -> g -> [Cyc t m (RRq q r)] #

randoms :: RandomGen g => g -> [Cyc t m (RRq q r)] #

randomRIO :: (Cyc t m (RRq q r), Cyc t m (RRq q r)) -> IO (Cyc t m (RRq q r)) #

randomIO :: IO (Cyc t m (RRq q r)) #

NFData r => NFData (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

rnf :: RRq q r -> () #

(Fact m, forall (m' :: Factored). Fact m' => NFData (t m' (RRq q r))) => NFData (Cyc t m (RRq q r)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

rnf :: Cyc t m (RRq q r) -> () #

C r => C (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

isZero :: RRq q r -> Bool #

ZeroTestable (t m (RRq q r)) => C (Cyc t m (RRq q r)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

isZero :: Cyc t m (RRq q r) -> Bool #

RealField r => C (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

zero :: RRq q r #

(+) :: RRq q r -> RRq q r -> RRq q r #

(-) :: RRq q r -> RRq q r -> RRq q r #

negate :: RRq q r -> RRq q r #

(Additive (RRq q r), TensorPowDec t (RRq q r), IFunctor t, Fact m) => C (Cyc t m (RRq q r)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

zero :: Cyc t m (RRq q r) #

(+) :: Cyc t m (RRq q r) -> Cyc t m (RRq q r) -> Cyc t m (RRq q r) #

(-) :: Cyc t m (RRq q r) -> Cyc t m (RRq q r) -> Cyc t m (RRq q r) #

negate :: Cyc t m (RRq q r) -> Cyc t m (RRq q r) #

(Reflects q r, Field r, Reduce r (RRq q r)) => Lift' (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

lift :: RRq q r -> LiftOf (RRq q r) Source #

(Fact m, CRTElt t Double, TensorPowDec t (RRq q Double), Protoable (CycRep t D m (RRq q Double))) => Protoable (Cyc t m (RRq q Double)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Associated Types

type ProtoType (Cyc t m (RRq q Double)) :: Type Source #

Methods

toProto :: Cyc t m (RRq q Double) -> ProtoType (Cyc t m (RRq q Double)) Source #

fromProto :: MonadError String m0 => ProtoType (Cyc t m (RRq q Double)) -> m0 (Cyc t m (RRq q Double)) Source #

(Additive (RRq q r), Additive (RRq p r)) => Rescale (RRq q r) (RRq p r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

rescale :: RRq q r -> RRq p r Source #

(Reflects q Double, FunctorCyc (Cyc t m) Double (RRq q Double)) => Reduce (Cyc t m Double) (Cyc t m (RRq q Double)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

Methods

reduce :: Cyc t m Double -> Cyc t m (RRq q Double) Source #

(ToInteger z, RealField r, Reflects q z, Reflects q r) => Subgroup (ZqBasic q z) (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

Methods

fromSubgroup :: ZqBasic q z -> RRq q r Source #

data Cyc t m (RRq q r) Source #

additive group \( K/qR \), limited to powerful- or decoding-basis representation

Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

data Cyc t m (RRq q r)
type ProtoType (IZipVector m (RRq q Double, b)) Source # 
Instance details

Defined in Crypto.Lol.Types.IZipVector

type ProtoType (IZipVector m (RRq q Double)) Source # 
Instance details

Defined in Crypto.Lol.Types.IZipVector

type LiftOf (RRq q r) Source # 
Instance details

Defined in Crypto.Lol.Types.Unsafe.RRq

type LiftOf (RRq q r) = r
type ProtoType (Cyc t m (RRq q Double)) Source # 
Instance details

Defined in Crypto.Lol.Cyclotomic.Cyc

type ProtoType (Cyc t m (RRq q Double))