lol-0.5.0.2: A library for lattice cryptography.

Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Cyclotomic.Tensor.RepaTensor

Description

A pure, repa-based implementation of the Tensor interface.

Synopsis

Documentation

data RT m r Source #

An implementation of Tensor backed by repa.

Instances

Tensor RT Source # 

Associated Types

type TElt (RT :: Factored -> * -> *) r :: Constraint Source #

Methods

entailIndexT :: Tagged * (RT m r) (Fact m :- (Applicative (RT m), Traversable (RT m))) Source #

entailEqT :: Tagged * (RT m r) ((Eq r, Fact m, TElt RT r) :- Eq (RT m r)) Source #

entailZTT :: Tagged * (RT m r) ((ZeroTestable r, Fact m, TElt RT r) :- ZeroTestable (RT m r)) Source #

entailNFDataT :: Tagged * (RT m r) ((NFData r, Fact m, TElt RT r) :- NFData (RT m r)) Source #

entailRandomT :: Tagged * (RT m r) ((Random r, Fact m, TElt RT r) :- Random (RT m r)) Source #

entailShowT :: Tagged * (RT m r) ((Show r, Fact m, TElt RT r) :- Show (RT m r)) Source #

entailModuleT :: Tagged * (GF k fp d, RT m fp) ((GFCtx k fp d, Fact m, TElt RT fp) :- Module (GF k fp d) (RT m fp)) Source #

scalarPow :: (Additive r, Fact m, TElt RT r) => r -> RT m r Source #

l :: (Additive r, Fact m, TElt RT r) => RT m r -> RT m r Source #

lInv :: (Additive r, Fact m, TElt RT r) => RT m r -> RT m r Source #

mulGPow :: (Ring r, Fact m, TElt RT r) => RT m r -> RT m r Source #

mulGDec :: (Ring r, Fact m, TElt RT r) => RT m r -> RT m r Source #

divGPow :: (ZeroTestable r, IntegralDomain r, Fact m, TElt RT r) => RT m r -> Maybe (RT m r) Source #

divGDec :: (ZeroTestable r, IntegralDomain r, Fact m, TElt RT r) => RT m r -> Maybe (RT m r) Source #

crtFuncs :: (CRTrans mon r, Fact m, TElt RT r) => mon (r -> RT m r, RT m r -> RT m r, RT m r -> RT m r, RT m r -> RT m r, RT m r -> RT m r) Source #

tGaussianDec :: (OrdFloat q, Random q, TElt RT q, ToRational v, Fact m, MonadRandom rnd) => v -> rnd (RT m q) Source #

gSqNormDec :: (Ring r, Fact m, TElt RT r) => RT m r -> r Source #

twacePowDec :: (Ring r, Divides m m', TElt RT r) => RT m' r -> RT m r Source #

embedPow :: (Additive r, Divides m m', TElt RT r) => RT m r -> RT m' r Source #

embedDec :: (Additive r, Divides m m', TElt RT r) => RT m r -> RT m' r Source #

crtExtFuncs :: (CRTrans mon r, Divides m m', TElt RT r) => mon (RT m' r -> RT m r, RT m r -> RT m' r) Source #

coeffs :: (Ring r, Divides m m', TElt RT r) => RT m' r -> [RT m r] Source #

powBasisPow :: (Ring r, TElt RT r, Divides m m') => Tagged Factored m [RT m' r] Source #

crtSetDec :: (Divides m m', PrimeField fp, Coprime (PToF (CharOf PrimeBin fp)) m', TElt RT fp) => Tagged Factored m [RT m' fp] Source #

fmapT :: (Fact m, TElt RT a, TElt RT b) => (a -> b) -> RT m a -> RT m b Source #

zipWithT :: (Fact m, TElt RT a, TElt RT b, TElt RT c) => (a -> b -> c) -> RT m a -> RT m b -> RT m c Source #

unzipT :: (Fact m, TElt RT (a, b), TElt RT a, TElt RT b) => RT m (a, b) -> (RT m a, RT m b) Source #

Fact m => Functor (RT m) Source # 

Methods

fmap :: (a -> b) -> RT m a -> RT m b #

(<$) :: a -> RT m b -> RT m a #

Fact m => Applicative (RT m) Source # 

Methods

pure :: a -> RT m a #

(<*>) :: RT m (a -> b) -> RT m a -> RT m b #

(*>) :: RT m a -> RT m b -> RT m b #

(<*) :: RT m a -> RT m b -> RT m a #

Fact m => Foldable (RT m) Source # 

Methods

fold :: Monoid m => RT m m -> m #

foldMap :: Monoid m => (a -> m) -> RT m a -> m #

foldr :: (a -> b -> b) -> b -> RT m a -> b #

foldr' :: (a -> b -> b) -> b -> RT m a -> b #

foldl :: (b -> a -> b) -> b -> RT m a -> b #

foldl' :: (b -> a -> b) -> b -> RT m a -> b #

foldr1 :: (a -> a -> a) -> RT m a -> a #

foldl1 :: (a -> a -> a) -> RT m a -> a #

toList :: RT m a -> [a] #

null :: RT m a -> Bool #

length :: RT m a -> Int #

elem :: Eq a => a -> RT m a -> Bool #

maximum :: Ord a => RT m a -> a #

minimum :: Ord a => RT m a -> a #

sum :: Num a => RT m a -> a #

product :: Num a => RT m a -> a #

Fact m => Traversable (RT m) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> RT m a -> f (RT m b) #

sequenceA :: Applicative f => RT m (f a) -> f (RT m a) #

mapM :: Monad m => (a -> m b) -> RT m a -> m (RT m b) #

sequence :: Monad m => RT m (m a) -> m (RT m a) #

Eq r => Eq (RT m r) Source # 

Methods

(==) :: RT m r -> RT m r -> Bool #

(/=) :: RT m r -> RT m r -> Bool #

Show r => Show (RT m r) Source # 

Methods

showsPrec :: Int -> RT m r -> ShowS #

show :: RT m r -> String #

showList :: [RT m r] -> ShowS #

(Unbox r, Random (Arr m r)) => Random (RT m r) Source # 

Methods

randomR :: RandomGen g => (RT m r, RT m r) -> g -> (RT m r, g) #

random :: RandomGen g => g -> (RT m r, g) #

randomRs :: RandomGen g => (RT m r, RT m r) -> g -> [RT m r] #

randoms :: RandomGen g => g -> [RT m r] #

randomRIO :: (RT m r, RT m r) -> IO (RT m r) #

randomIO :: IO (RT m r) #

(Unbox r, Arbitrary (Arr m r)) => Arbitrary (RT m r) Source # 

Methods

arbitrary :: Gen (RT m r) #

shrink :: RT m r -> [RT m r] #

NFData r => NFData (RT m r) Source # 

Methods

rnf :: RT m r -> () #

(ZeroTestable (Arr m r), ZeroTestable (IZipVector m r)) => C (RT m r) Source # 

Methods

isZero :: RT m r -> Bool #

(Unbox r, Additive (Arr m r)) => C (RT m r) Source # 

Methods

zero :: RT m r #

(+) :: RT m r -> RT m r -> RT m r #

(-) :: RT m r -> RT m r -> RT m r #

negate :: RT m r -> RT m r #

(Fact m, Reflects k q Double) => Protoable (RT m (RRq k q Double)) Source # 

Associated Types

type ProtoType (RT m (RRq k q Double)) :: * Source #

Methods

toProto :: RT m (RRq k q Double) -> ProtoType (RT m (RRq k q Double)) Source #

fromProto :: MonadError String m => ProtoType (RT m (RRq k q Double)) -> m (RT m (RRq k q Double)) Source #

(Fact m, Reflects k q Int64) => Protoable (RT m (ZqBasic k q Int64)) Source # 

Associated Types

type ProtoType (RT m (ZqBasic k q Int64)) :: * Source #

Methods

toProto :: RT m (ZqBasic k q Int64) -> ProtoType (RT m (ZqBasic k q Int64)) Source #

fromProto :: MonadError String m => ProtoType (RT m (ZqBasic k q Int64)) -> m (RT m (ZqBasic k q Int64)) Source #

(GFCtx k fp d, Fact m, Additive (RT m fp)) => C (GF k fp d) (RT m fp) Source # 

Methods

(*>) :: GF k fp d -> RT m fp -> RT m fp #

type TElt RT r Source # 
type TElt RT r = (Unbox r, Elt r)
type ProtoType (RT m (RRq k q Double)) Source # 
type ProtoType (RT m (RRq k q Double)) = Kq
type ProtoType (RT m (ZqBasic k q Int64)) Source # 
type ProtoType (RT m (ZqBasic k q Int64)) = Rq