Intel HEXL for FPGA
Intel Homomorphic Encryption FPGA Acceleration Library, accelerating the modular arithmetic operations used in homomorphic encryption.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Attributes | List of all members
hetest::utils::NTT::NTTImpl Class Reference

#include <ntt.hpp>

Public Member Functions

 NTTImpl (uint64_t degree, uint64_t q, uint64_t root_of_unity, std::shared_ptr< AllocatorBase > alloc_ptr={})
 
 NTTImpl (uint64_t degree, uint64_t q, std::shared_ptr< AllocatorBase > alloc_ptr={})
 
 ~NTTImpl ()
 
uint64_t GetMinimalRootOfUnity () const
 
uint64_t GetDegree () const
 
uint64_t GetModulus () const
 
AlignedVector64< uint64_t > & GetPrecon64RootOfUnityPowers ()
 
uint64_t * GetPrecon64RootOfUnityPowersPtr ()
 
AlignedVector64< uint64_t > & GetPrecon52RootOfUnityPowers ()
 
uint64_t * GetPrecon52RootOfUnityPowersPtr ()
 
uint64_t * GetRootOfUnityPowersPtr ()
 
AlignedVector64< uint64_t > & GetRootOfUnityPowers ()
 
uint64_t GetRootOfUnityPower (size_t i)
 
AlignedVector64< uint64_t > & GetPrecon64InvRootOfUnityPowers ()
 
uint64_t * GetPrecon64InvRootOfUnityPowersPtr ()
 
AlignedVector64< uint64_t > & GetPrecon52InvRootOfUnityPowers ()
 
uint64_t * GetPrecon52InvRootOfUnityPowersPtr ()
 
AlignedVector64< uint64_t > & GetInvRootOfUnityPowers ()
 
uint64_t * GetInvRootOfUnityPowersPtr ()
 
uint64_t GetInvRootOfUnityPower (size_t i)
 
void ComputeForward (uint64_t *result, const uint64_t *operand, uint64_t input_mod_factor, uint64_t output_mod_factor)
 
void ComputeInverse (uint64_t *result, const uint64_t *operand, uint64_t input_mod_factor, uint64_t output_mod_factor)
 

Static Public Attributes

static const size_t s_max_degree_bits {20}
 
static const size_t s_max_modulus_bits {62}
 
static const size_t s_default_shift_bits {64}
 
static const size_t s_ifma_shift_bits {52}
 
static const size_t s_max_fwd_ifma_modulus {1ULL << (s_ifma_shift_bits - 2)}
 
static const size_t s_max_inv_ifma_modulus {1ULL << (s_ifma_shift_bits - 1)}
 

Constructor & Destructor Documentation

hetest::utils::NTT::NTTImpl::NTTImpl ( uint64_t  degree,
uint64_t  q,
uint64_t  root_of_unity,
std::shared_ptr< AllocatorBase alloc_ptr = {} 
)
hetest::utils::NTT::NTTImpl::NTTImpl ( uint64_t  degree,
uint64_t  q,
std::shared_ptr< AllocatorBase alloc_ptr = {} 
)
hetest::utils::NTT::NTTImpl::~NTTImpl ( )
default

Member Function Documentation

void hetest::utils::NTT::NTTImpl::ComputeForward ( uint64_t *  result,
const uint64_t *  operand,
uint64_t  input_mod_factor,
uint64_t  output_mod_factor 
)
void hetest::utils::NTT::NTTImpl::ComputeInverse ( uint64_t *  result,
const uint64_t *  operand,
uint64_t  input_mod_factor,
uint64_t  output_mod_factor 
)
uint64_t hetest::utils::NTT::NTTImpl::GetDegree ( ) const
inline
uint64_t hetest::utils::NTT::NTTImpl::GetInvRootOfUnityPower ( size_t  i)
inline
AlignedVector64<uint64_t>& hetest::utils::NTT::NTTImpl::GetInvRootOfUnityPowers ( )
inline
uint64_t* hetest::utils::NTT::NTTImpl::GetInvRootOfUnityPowersPtr ( )
inline
uint64_t hetest::utils::NTT::NTTImpl::GetMinimalRootOfUnity ( ) const
inline
uint64_t hetest::utils::NTT::NTTImpl::GetModulus ( ) const
inline
AlignedVector64<uint64_t>& hetest::utils::NTT::NTTImpl::GetPrecon52InvRootOfUnityPowers ( )
inline
uint64_t* hetest::utils::NTT::NTTImpl::GetPrecon52InvRootOfUnityPowersPtr ( )
inline
AlignedVector64<uint64_t>& hetest::utils::NTT::NTTImpl::GetPrecon52RootOfUnityPowers ( )
inline
uint64_t* hetest::utils::NTT::NTTImpl::GetPrecon52RootOfUnityPowersPtr ( )
inline
AlignedVector64<uint64_t>& hetest::utils::NTT::NTTImpl::GetPrecon64InvRootOfUnityPowers ( )
inline
uint64_t* hetest::utils::NTT::NTTImpl::GetPrecon64InvRootOfUnityPowersPtr ( )
inline
AlignedVector64<uint64_t>& hetest::utils::NTT::NTTImpl::GetPrecon64RootOfUnityPowers ( )
inline
uint64_t* hetest::utils::NTT::NTTImpl::GetPrecon64RootOfUnityPowersPtr ( )
inline
uint64_t hetest::utils::NTT::NTTImpl::GetRootOfUnityPower ( size_t  i)
inline
AlignedVector64<uint64_t>& hetest::utils::NTT::NTTImpl::GetRootOfUnityPowers ( )
inline
uint64_t* hetest::utils::NTT::NTTImpl::GetRootOfUnityPowersPtr ( )
inline

Member Data Documentation

const size_t hetest::utils::NTT::NTTImpl::s_default_shift_bits {64}
static
const size_t hetest::utils::NTT::NTTImpl::s_ifma_shift_bits {52}
static
const size_t hetest::utils::NTT::NTTImpl::s_max_degree_bits {20}
static
const size_t hetest::utils::NTT::NTTImpl::s_max_fwd_ifma_modulus {1ULL << (s_ifma_shift_bits - 2)}
static
const size_t hetest::utils::NTT::NTTImpl::s_max_inv_ifma_modulus {1ULL << (s_ifma_shift_bits - 1)}
static
const size_t hetest::utils::NTT::NTTImpl::s_max_modulus_bits {62}
static

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