double tlvl = getctlvl(thetaCipher[0]); double zlvl = getctlvl(zTrainCipher[0]); Cipher* ctemp= new Cipher[LRparams.dim1]; NTL_EXEC_RANGE(LRparams.dim1, first, last); for (long i = first; i < last; i++){ ctemp[i] = scheme.modEmbed(zTrainCipher[i], zlvl - tlvl); scheme.multAndEqual(ctemp[i], thetaCipher[i]); } NTL_EXEC_RANGE_END; Cipher ztheta = ctemp[0]; for (long i = 1; i < LRparams.dim1; i++){ scheme.addAndEqual(ztheta, ctemp[i]); } scheme.modSwitchAndEqual(ztheta, LRparams.logp); // ztheta.lvl : tlvl - logp
时间: 2024-04-21 07:23:59 浏览: 151
基于TMS320VC5410和TLVl571的数据采集系统
这段代码的功能是计算两个密文 `thetaCipher` 和 `zTrainCipher` 的乘积,并将结果存储在 `ztheta` 中。代码中使用了 `getctlvl` 函数来获取密文的级别,然后使用 `modEmbed` 函数将 `zTrainCipher` 的级别调整到与 `thetaCipher` 相同,并使用 `multAndEqual` 函数进行乘法操作。最后,使用 `addAndEqual` 函数将所有乘积的结果相加,并使用 `modSwitchAndEqual` 函数将结果的级别调整到 `LRparams.logp`。
阅读全文