二、Torus代码实现思路
前面已介绍了Torus结构,下面介绍的是TFHE库中的数据处理结构
初始化Torus变量
Torus32 mu = dtot32(0.4);
cout<<"mu is "<<t32tod(mu)<<"---"<<dtot32(0.4)<<endl;
output:mu is 0.4---1717986918
0.4 ∗ 2 32 = 171798691.4 0.4*2^{32}=171798691.4 0.4∗232=171798691.4,所以dtot32(0.4) = i n t ( 0.4 ∗ 2 32 ) =int(0.4*2^{32}) =int(0.4∗232)
下面看一下dtot32函数验证一下:
EXPORT Torus32 dtot32(double d) {
return int32_t(int64_t((d - int64_t(d))*_two32));
//保留小数位并保留32位精度
}
// _two32 =2^32
static const int64_t _two32 = INT64_C(1) << 32; // 2^32
输出值
cout<<"mu is"<<t32tod(mu)<<endl; //-0.5
EXPORT double t32tod(Torus32 x) {
return double(x)/_two32_double; // x/2^32
}