12 #ifndef HELIB_CMODULUS_H
13 #define HELIB_CMODULUS_H
20 #include <helib/NumbTh.h>
21 #include <helib/PAlgebra.h>
22 #include <helib/bluestein.h>
23 #include <helib/ClonedPtr.h>
50 NTL::zz_pContext context;
65 NTL::Vec<NTL::mulmod_precon_t> powers_aux;
70 NTL::Vec<NTL::mulmod_precon_t> ipowers_aux;
77 void privateInit(
const PAlgebra&,
long rt);
81 SmartPtr<AltFFTPrimeInfo> altFFTInfo;
106 unsigned long getM()
const {
return zMStar->
getM(); }
108 long getQ()
const {
return q; }
109 NTL::mulmod_t
getQInv()
const {
return qinv; }
120 void FFT(NTL::vec_long& y,
const NTL::ZZX& x)
const;
122 void FFT(NTL::vec_long& y,
const zzX& x)
const;
125 void FFT_aux(NTL::vec_long& y, NTL::zz_pX& tmp)
const;
129 void iFFT(NTL::zz_pX& x,
const NTL::vec_long& y)
const;
A smart pointer that clones the object it holds when it is copied.
Definition: ClonedPtr.h:101
Provides FFT and iFFT routines modulo a single-precision prime.
Definition: CModulus.h:43
static NTL::fftRep & getScratch_fftRep(long k)
Definition: CModulus.cpp:540
unsigned long getPhiM() const
Definition: CModulus.h:107
const zz_pXModulus1 & getPhimX() const
Definition: CModulus.h:111
Cmodulus(const Cmodulus &other)
Definition: CModulus.h:91
long getQ() const
Definition: CModulus.h:108
void iFFT(NTL::zz_pX &x, const NTL::vec_long &y) const
Definition: CModulus.cpp:450
void FFT_aux(NTL::vec_long &y, NTL::zz_pX &tmp) const
Definition: CModulus.cpp:345
Cmodulus & operator=(const Cmodulus &other)
Copy assignment operator.
Definition: CModulus.cpp:168
void FFT(NTL::vec_long &y, const NTL::ZZX &x) const
Definition: CModulus.cpp:418
void restoreModulus() const
Restore NTL's current modulus.
Definition: CModulus.h:114
long getRoot() const
Definition: CModulus.h:110
static NTL::zz_pX & getScratch_zz_pX()
Definition: CModulus.cpp:528
unsigned long getM() const
Definition: CModulus.h:106
static NTL::Vec< long > & getScratch_vec_long()
Definition: CModulus.cpp:534
NTL::mulmod_t getQInv() const
Definition: CModulus.h:109
const PAlgebra & getZMStar() const
Definition: CModulus.h:105
Cmodulus()
Default constructor.
Definition: CModulus.h:89
The structure of (Z/mZ)* /(p)
Definition: PAlgebra.h:77
long getPhiM() const
Returns phi(m)
Definition: PAlgebra.h:170
long getM() const
Returns m.
Definition: PAlgebra.h:164
Auxiliary classes to facilitate faster reduction mod Phi_m(X) when the input has degree less than m.
Definition: NumbTh.h:798
Definition: apiAttributes.h:21
NTL::Vec< long > zzX
Definition: zzX.h:24