PALISADE Lattice Crypto Library  1.11.9
A lattice crypto library for software engineers by software engineers.
Public Member Functions | Static Public Member Functions | List of all members
lbcrypto::DiscreteGaussianGeneratorImpl< VecType > Class Template Reference

The class for Discrete Gaussion Distribution generator. More...

#include <discretegaussiangenerator.h>

Inheritance diagram for lbcrypto::DiscreteGaussianGeneratorImpl< VecType >:
Inheritance graph
[legend]
Collaboration diagram for lbcrypto::DiscreteGaussianGeneratorImpl< VecType >:
Collaboration graph
[legend]

Public Member Functions

 DiscreteGaussianGeneratorImpl (double std=1)
 Basic constructor for specifying distribution parameter and modulus. More...
 
 ~DiscreteGaussianGeneratorImpl ()
 Destructor.
 
void Initialize ()
 Initializes the generator.
 
double GetStd () const
 Returns the standard deviation of the generator. More...
 
void SetStd (double std)
 Sets the standard deviation of the generator. More...
 
int32_t GenerateInt () const
 Returns a generated signed integer. Uses Peikert's Inversion Method. More...
 
std::shared_ptr< int64_t > GenerateIntVector (usint size) const
 Returns a generated integer vector. Uses Peikert's inversion method. More...
 
VecType::Integer GenerateInteger (const typename VecType::Integer &modulus) const
 Returns a generated integer. Uses Peikert's inversion method. More...
 
VecType GenerateVector (usint size, const typename VecType::Integer &modulus) const
 Generates a vector of random values within this Discrete Gaussian Distribution. Uses Peikert's inversion method. More...
 
VecType::Integer GenerateInteger (double mean, double stddev, size_t n, const typename VecType::Integer &modulus) const
 Returns a generated integer. Uses rejection method. More...
 
int32_t GenerateInteger (double mean, double stddev, size_t n) const
 Returns a generated integer. Uses rejection method. More...
 

Static Public Member Functions

static int64_t GenerateIntegerKarney (double mean, double stddev)
 Returns a generated integer (int32_t). Uses rejection method. More...
 

Detailed Description

template<typename VecType>
class lbcrypto::DiscreteGaussianGeneratorImpl< VecType >

The class for Discrete Gaussion Distribution generator.

Constructor & Destructor Documentation

◆ DiscreteGaussianGeneratorImpl()

template<typename VecType >
lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::DiscreteGaussianGeneratorImpl ( double  std = 1)
explicit

Basic constructor for specifying distribution parameter and modulus.

Parameters
modulusThe modulus to use to generate discrete values.
stdThe standard deviation for this Gaussian Distribution.

Member Function Documentation

◆ GenerateInt()

template<typename VecType >
int32_t lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateInt ( ) const

Returns a generated signed integer. Uses Peikert's Inversion Method.

Returns
a value generated with the distribution.

◆ GenerateInteger() [1/3]

template<typename VecType>
VecType::Integer lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateInteger ( const typename VecType::Integer &  modulus) const

Returns a generated integer. Uses Peikert's inversion method.

Returns
A random value within this Discrete Gaussian Distribution.

◆ GenerateInteger() [2/3]

template<typename VecType>
VecType::Integer lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateInteger ( double  mean,
double  stddev,
size_t  n,
const typename VecType::Integer &  modulus 
) const

Returns a generated integer. Uses rejection method.

Parameters
meancenter of discrete Gaussian distribution.
stddevstandard deviatin of discrete Gaussian distribution.
nis ring dimension param modulus modulus
Returns
A random value within this Discrete Gaussian Distribution.

◆ GenerateInteger() [3/3]

template<typename VecType>
int32_t lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateInteger ( double  mean,
double  stddev,
size_t  n 
) const

Returns a generated integer. Uses rejection method.

Parameters
meancenter of discrete Gaussian distribution.
stddevstandard deviatin of discrete Gaussian distribution.
nis ring dimension
Returns
A random value within this Discrete Gaussian Distribution.

◆ GenerateIntegerKarney()

template<typename VecType >
int64_t lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateIntegerKarney ( double  mean,
double  stddev 
)
static

Returns a generated integer (int32_t). Uses rejection method.

Parameters
meancenter of discrecte Gaussian distribution.
stddevstandard deviatin of discrete Gaussian distribution.
Returns
A random value within this Discrete Gaussian Distribution. Returns a generated integer. Uses Karney's method defined as Algorithm D in https://arxiv.org/pdf/1303.6257.pdf
Parameters
meancenter of discrecte Gaussian distribution.
stddevstandard deviation of discrete Gaussian distribution.
Returns
A random value within this Discrete Gaussian Distribution.

◆ GenerateIntVector()

template<typename VecType >
std::shared_ptr< int64_t > lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateIntVector ( usint  size) const

Returns a generated integer vector. Uses Peikert's inversion method.

Parameters
sizeThe number of values to return.
Returns
A pointer to an array of integer values generated with the distribution.

◆ GenerateVector()

template<typename VecType>
VecType lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GenerateVector ( usint  size,
const typename VecType::Integer &  modulus 
) const

Generates a vector of random values within this Discrete Gaussian Distribution. Uses Peikert's inversion method.

Parameters
sizeThe number of values to return.
modulusmodulus of the polynomial ring.
Returns
The vector of values within this Discrete Gaussian Distribution.

◆ GetStd()

template<typename VecType >
double lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::GetStd ( ) const

Returns the standard deviation of the generator.

Returns
The analytically obtained standard deviation of the generator.

◆ SetStd()

template<typename VecType >
void lbcrypto::DiscreteGaussianGeneratorImpl< VecType >::SetStd ( double  std)

Sets the standard deviation of the generator.

Parameters
stdThe analytic standard deviation of the generator.

The documentation for this class was generated from the following files: