lol-repa-0.0.0.2: A repa backend for <https://hackage.haskell.org/package/lol lol>.

Copyright(c) Eric Crockett 2011-2017
Chris Peikert 2011-2017
LicenseGPL-2
Maintainerecrockett0@email.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Cyclotomic.Tensor.Repa

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 #

Methods

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 (ArgType (Factored -> * -> *) RT) Source # 

Methods

showsPrec :: Int -> ArgType (Factored -> * -> *) RT -> ShowS #

show :: ArgType (Factored -> * -> *) RT -> String #

showList :: [ArgType (Factored -> * -> *) RT] -> ShowS #

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

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 #

(Protoable (IZipVector m r), Fact m, Unbox r) => Protoable (RT m r) Source # 

Associated Types

type ProtoType (RT m r) :: * #

Methods

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

fromProto :: MonadError String m => ProtoType (RT m r) -> m (RT m r) #

(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 r) Source # 
type ProtoType (RT m r) = ProtoType (IZipVector m r)