Core Math Documentation
Page Contents
Math Backends
OpenFHE supports a number of mathematical backends for various usecases. For more information refer to Math Backends
Inheritance Diagram
Let Gen. = Generator
File Listings
Binary Uniform Generator (binaryuniformgenerator.h)
Generate
Uniform
distribution of binary values (mod 2)Relies on built-in C++ generator for 32-bit unsigned integers defined in
<random>
Discrete Fourier Transform (FFT) code
Discrete Gaussian Generator (discretegaussiangenerator.h)
Generate
Gaussian
distribution of discrete values.Relies on built-in C++ generator for 32-bit unsigned integers defined in
<random>
Discrete Gaussian Generator Generic (discretegaussiangeneratorgeneric.h)
Implements the generic sampler by UCSD discussed in Gaussian Sampling over the Integers: Efficient, Generic, Constant-Time
based heavily on Michael Walter’s original code.
2 different “Base Samplers”
Peikert’s inversion method
Knuth-Yao
Generic Sampler works independent from standard deviation of the distribution
combines an array of aforementioned base samplers centered around 0 to through convolution
Discrete Uniform Generator (discreteuniformgenerator.h)
Generate
Uniform
distribution of discrete values.Relies on built-in C++ generator for 32-bit unsigned integers defined in
<random>
Basic noise generation functionality
Distribution Generator (distributiongenerator.h)
Base class for distribution generators
Hardware Abstraction Layer (HAL) (hal.h)
Code to switch between math backends
Templated matrix implementation for SIMD-compatible matrix code
Matrix Strassen (matrixstrassen.h)
Matrix Strassen Operations
Number Theory Functions (nbtheory.h)
Number theory utilities
Check if two numbers are coprime
GCD of two numbers
Primality testing
witness function to test if a number is prime
Eulers Totient function phin(n)
Generator Algorithm
Ternary Uniform Generator (ternaryuniformgenerator.h)
Provides generation of uniform distribution of binary values