lol-0.5.0.1: A library for lattice cryptography.

Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Cyclotomic.Tensor.CTensor

Description

Wrapper for a C++ implementation of the Tensor interface.

Synopsis

Documentation

data CT m r Source #

An implementation of Tensor backed by C++ code.

Instances

Tensor CT Source # 

Associated Types

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

Methods

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fact m => Functor (CT m) Source # 

Methods

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

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

Fact m => Applicative (CT m) Source # 

Methods

pure :: a -> CT m a #

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

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

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

Fact m => Foldable (CT m) Source # 

Methods

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

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

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

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

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

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

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

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

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

null :: CT m a -> Bool #

length :: CT m a -> Int #

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

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

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

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

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

Fact m => Traversable (CT m) Source # 

Methods

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

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

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

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

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

Methods

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

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

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

Methods

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

show :: CT m r -> String #

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

(Storable r, Random (CT' m r)) => Random (CT m r) Source # 

Methods

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

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

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

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

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

randomIO :: IO (CT m r) #

(Storable r, Arbitrary (CT' m r)) => Arbitrary (CT m r) Source # 

Methods

arbitrary :: Gen (CT m r) #

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

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

Methods

rnf :: CT m r -> () #

(ZeroTestable r, Storable r) => C (CT m r) Source # 

Methods

isZero :: CT m r -> Bool #

(Additive r, Storable r, Fact m) => C (CT m r) Source # 

Methods

zero :: CT m r #

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

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

negate :: CT m r -> CT m r #

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

Associated Types

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

Methods

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

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

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

Associated Types

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

Methods

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

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

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

Methods

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

type TElt CT r Source # 
type TElt CT r
type ProtoType (CT m (RRq k q Double)) Source # 
type ProtoType (CT m (RRq k q Double)) = Kq
type ProtoType (CT m (ZqBasic k q Int64)) Source # 
type ProtoType (CT m (ZqBasic k q Int64)) = Rq