lol-0.5.0.1: A library for lattice cryptography.

Safe HaskellNone
LanguageHaskell2010

Crypto.Lol.Types.RRq

Description

\( \def\Z{\mathbb{Z}} \) \( \def\R{\mathbb{R}} \) An implementation of the additive quotient group \(\R/(q\Z)\).

Synopsis

Documentation

data RRq q r Source #

The ring \(\R/(q\Z)\) of reals modulo q, using underlying floating type r.

Instances

Unbox r => Vector Vector (RRq k q r) Source # 

Methods

basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) (RRq k q r) -> m (Vector (RRq k q r)) #

basicUnsafeThaw :: PrimMonad m => Vector (RRq k q r) -> m (Mutable Vector (PrimState m) (RRq k q r)) #

basicLength :: Vector (RRq k q r) -> Int #

basicUnsafeSlice :: Int -> Int -> Vector (RRq k q r) -> Vector (RRq k q r) #

basicUnsafeIndexM :: Monad m => Vector (RRq k q r) -> Int -> m (RRq k q r) #

basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) (RRq k q r) -> Vector (RRq k q r) -> m () #

elemseq :: Vector (RRq k q r) -> RRq k q r -> b -> b #

Unbox r => MVector MVector (RRq k q r) Source # 

Methods

basicLength :: MVector s (RRq k q r) -> Int #

basicUnsafeSlice :: Int -> Int -> MVector s (RRq k q r) -> MVector s (RRq k q r) #

basicOverlaps :: MVector s (RRq k q r) -> MVector s (RRq k q r) -> Bool #

basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (RRq k q r)) #

basicInitialize :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> m () #

basicUnsafeReplicate :: PrimMonad m => Int -> RRq k q r -> m (MVector (PrimState m) (RRq k q r)) #

basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> Int -> m (RRq k q r) #

basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> Int -> RRq k q r -> m () #

basicClear :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> m () #

basicSet :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> RRq k q r -> m () #

basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> MVector (PrimState m) (RRq k q r) -> m () #

basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> MVector (PrimState m) (RRq k q r) -> m () #

basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (RRq k q r) -> Int -> m (MVector (PrimState m) (RRq k q r)) #

(Reflects k q r, RealField r, Additive (RRq k q r)) => Reduce r (RRq k q r) Source # 

Methods

reduce :: r -> RRq k q r Source #

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

Eq r => Eq (RRq k q r) Source # 

Methods

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

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

Ord r => Ord (RRq k q r) Source # 

Methods

compare :: RRq k q r -> RRq k q r -> Ordering #

(<) :: RRq k q r -> RRq k q r -> Bool #

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

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

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

max :: RRq k q r -> RRq k q r -> RRq k q r #

min :: RRq k q r -> RRq k q r -> RRq k q r #

Show r => Show (RRq k q r) Source # 

Methods

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

show :: RRq k q r -> String #

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

Storable r => Storable (RRq k q r) Source # 

Methods

sizeOf :: RRq k q r -> Int #

alignment :: RRq k q r -> Int #

peekElemOff :: Ptr (RRq k q r) -> Int -> IO (RRq k q r) #

pokeElemOff :: Ptr (RRq k q r) -> Int -> RRq k q r -> IO () #

peekByteOff :: Ptr b -> Int -> IO (RRq k q r) #

pokeByteOff :: Ptr b -> Int -> RRq k q r -> IO () #

peek :: Ptr (RRq k q r) -> IO (RRq k q r) #

poke :: Ptr (RRq k q r) -> RRq k q r -> IO () #

NFData r => NFData (RRq k q r) Source # 

Methods

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

C r => C (RRq k q r) Source # 

Methods

isZero :: RRq k q r -> Bool #

(Reflects k q r, RealField r, Ord r) => C (RRq k q r) Source # 

Methods

zero :: RRq k q r #

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

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

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

Elt r => Elt (RRq k q r) Source # 

Methods

touch :: RRq k q r -> IO () #

zero :: RRq k q r #

one :: RRq k q r #

Unbox r => Unbox (RRq k q r) Source # 
(Reflects k q r, Reduce r (RRq k q r), Ord r, Ring r) => Lift' (RRq k q r) Source # 

Methods

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

(ToInteger i, RealField r, Reflects k q i, Reflects k q r) => Subgroup (ZqBasic k q i) (RRq k q r) Source # 

Methods

fromSubgroup :: ZqBasic k q i -> RRq k q r Source #

data MVector s (RRq k q r) Source # 
data MVector s (RRq k q r) = MV_RRq (MVector s r)
type ProtoType (CT m (RRq k q Double)) Source # 
type ProtoType (CT m (RRq k q Double)) = Kq
type ProtoType (RT m (RRq k q Double)) Source # 
type ProtoType (RT m (RRq k q Double)) = Kq
data Vector (RRq k q r) Source # 
data Vector (RRq k q r) = V_RRq (Vector r)
type LiftOf (RRq k q r) Source # 
type LiftOf (RRq k q r) = r