mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 05:06:44 +01:00
rename raw dft ops
This commit is contained in:
@@ -2,9 +2,9 @@ use itertools::izip;
|
|||||||
use poulpy_backend::cpu_spqlios::FFT64;
|
use poulpy_backend::cpu_spqlios::FFT64;
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPrepare, VecZnxAddNormal,
|
DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPrepare,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace,
|
VecZnxAddNormal, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAlloc, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalizeInplace,
|
VecZnxBigSubSmallBInplace, VecZnxDftAlloc, VecZnxFillUniform, VecZnxNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Module, ScalarZnx, ScratchOwned, SvpPPol, VecZnx, VecZnxBig, VecZnxDft, ZnxInfos},
|
layouts::{Module, ScalarZnx, ScratchOwned, SvpPPol, VecZnx, VecZnxBig, VecZnxDft, ZnxInfos},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -45,7 +45,7 @@ fn main() {
|
|||||||
|
|
||||||
let mut buf_dft: VecZnxDft<Vec<u8>, FFT64> = module.vec_znx_dft_alloc(1, ct_size);
|
let mut buf_dft: VecZnxDft<Vec<u8>, FFT64> = module.vec_znx_dft_alloc(1, ct_size);
|
||||||
|
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut buf_dft, 0, &ct, 1);
|
module.dft(1, 0, &mut buf_dft, 0, &ct, 1);
|
||||||
|
|
||||||
// Applies DFT(ct[1]) * DFT(s)
|
// Applies DFT(ct[1]) * DFT(s)
|
||||||
module.svp_apply_inplace(
|
module.svp_apply_inplace(
|
||||||
@@ -59,7 +59,7 @@ fn main() {
|
|||||||
|
|
||||||
// BIG(ct[1] * s) <- IDFT(DFT(ct[1] * s)) (not normalized)
|
// BIG(ct[1] * s) <- IDFT(DFT(ct[1] * s)) (not normalized)
|
||||||
let mut buf_big: VecZnxBig<Vec<u8>, FFT64> = module.vec_znx_big_alloc(1, ct_size);
|
let mut buf_big: VecZnxBig<Vec<u8>, FFT64> = module.vec_znx_big_alloc(1, ct_size);
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut buf_big, 0, &mut buf_dft, 0);
|
module.idft_tmp_a(&mut buf_big, 0, &mut buf_dft, 0);
|
||||||
|
|
||||||
// Creates a plaintext: VecZnx with 1 column
|
// Creates a plaintext: VecZnx with 1 column
|
||||||
let mut m = VecZnx::alloc(
|
let mut m = VecZnx::alloc(
|
||||||
@@ -109,7 +109,7 @@ fn main() {
|
|||||||
// Decryption
|
// Decryption
|
||||||
|
|
||||||
// DFT(ct[1] * s)
|
// DFT(ct[1] * s)
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut buf_dft, 0, &ct, 1);
|
module.dft(1, 0, &mut buf_dft, 0, &ct, 1);
|
||||||
module.svp_apply_inplace(
|
module.svp_apply_inplace(
|
||||||
&mut buf_dft,
|
&mut buf_dft,
|
||||||
0, // Selects the first column of res.
|
0, // Selects the first column of res.
|
||||||
@@ -118,7 +118,7 @@ fn main() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// BIG(c1 * s) = IDFT(DFT(c1 * s))
|
// BIG(c1 * s) = IDFT(DFT(c1 * s))
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut buf_big, 0, &mut buf_dft, 0);
|
module.idft_tmp_a(&mut buf_big, 0, &mut buf_dft, 0);
|
||||||
|
|
||||||
// BIG(c1 * s) + ct[0]
|
// BIG(c1 * s) + ct[0]
|
||||||
module.vec_znx_big_add_small_inplace(&mut buf_big, 0, &ct, 0);
|
module.vec_znx_big_add_small_inplace(&mut buf_big, 0, &ct, 0);
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{TakeSlice, VecZnxDftToVecZnxBigTmpBytes},
|
api::{TakeSlice, VecZnxIDFTTmpBytes},
|
||||||
layouts::{
|
layouts::{
|
||||||
Backend, Data, Module, Scratch, VecZnx, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut,
|
Backend, Data, Module, Scratch, VecZnx, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut,
|
||||||
VecZnxDftToRef, VecZnxToRef, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero,
|
VecZnxDftToRef, VecZnxToRef, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero,
|
||||||
},
|
},
|
||||||
oep::{
|
oep::{
|
||||||
VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl, VecZnxDftAllocImpl, VecZnxDftCopyImpl,
|
DFTImpl, IDFTConsumeImpl, IDFTImpl, IDFTTmpAImpl, VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl,
|
||||||
VecZnxDftFromBytesImpl, VecZnxDftFromVecZnxImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl, VecZnxDftSubImpl,
|
VecZnxDftAllocImpl, VecZnxDftCopyImpl, VecZnxDftFromBytesImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl,
|
||||||
VecZnxDftToVecZnxBigConsumeImpl, VecZnxDftToVecZnxBigImpl, VecZnxDftToVecZnxBigTmpAImpl,
|
VecZnxDftSubImpl, VecZnxDftZeroImpl, VecZnxIDFTTmpBytesImpl,
|
||||||
VecZnxDftToVecZnxBigTmpBytesImpl, VecZnxDftZeroImpl,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -35,21 +34,15 @@ unsafe impl VecZnxDftAllocImpl<Self> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VecZnxDftToVecZnxBigTmpBytesImpl<Self> for FFT64 {
|
unsafe impl VecZnxIDFTTmpBytesImpl<Self> for FFT64 {
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(module: &Module<Self>) -> usize {
|
fn vec_znx_idft_tmp_bytes_impl(module: &Module<Self>) -> usize {
|
||||||
unsafe { vec_znx_dft::vec_znx_idft_tmp_bytes(module.ptr()) as usize }
|
unsafe { vec_znx_dft::vec_znx_idft_tmp_bytes(module.ptr()) as usize }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VecZnxDftToVecZnxBigImpl<Self> for FFT64 {
|
unsafe impl IDFTImpl<Self> for FFT64 {
|
||||||
fn vec_znx_dft_to_vec_znx_big_impl<R, A>(
|
fn idft_impl<R, A>(module: &Module<Self>, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<Self>)
|
||||||
module: &Module<Self>,
|
where
|
||||||
res: &mut R,
|
|
||||||
res_col: usize,
|
|
||||||
a: &A,
|
|
||||||
a_col: usize,
|
|
||||||
scratch: &mut Scratch<Self>,
|
|
||||||
) where
|
|
||||||
R: VecZnxBigToMut<Self>,
|
R: VecZnxBigToMut<Self>,
|
||||||
A: VecZnxDftToRef<Self>,
|
A: VecZnxDftToRef<Self>,
|
||||||
{
|
{
|
||||||
@@ -61,7 +54,7 @@ unsafe impl VecZnxDftToVecZnxBigImpl<Self> for FFT64 {
|
|||||||
assert_eq!(res.n(), a.n())
|
assert_eq!(res.n(), a.n())
|
||||||
}
|
}
|
||||||
|
|
||||||
let (tmp_bytes, _) = scratch.take_slice(module.vec_znx_dft_to_vec_znx_big_tmp_bytes());
|
let (tmp_bytes, _) = scratch.take_slice(module.vec_znx_idft_tmp_bytes());
|
||||||
|
|
||||||
let min_size: usize = res.size().min(a.size());
|
let min_size: usize = res.size().min(a.size());
|
||||||
|
|
||||||
@@ -83,8 +76,8 @@ unsafe impl VecZnxDftToVecZnxBigImpl<Self> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VecZnxDftToVecZnxBigTmpAImpl<Self> for FFT64 {
|
unsafe impl IDFTTmpAImpl<Self> for FFT64 {
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_a_impl<R, A>(module: &Module<Self>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
fn idft_tmp_a_impl<R, A>(module: &Module<Self>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
||||||
where
|
where
|
||||||
R: VecZnxBigToMut<Self>,
|
R: VecZnxBigToMut<Self>,
|
||||||
A: VecZnxDftToMut<Self>,
|
A: VecZnxDftToMut<Self>,
|
||||||
@@ -111,8 +104,8 @@ unsafe impl VecZnxDftToVecZnxBigTmpAImpl<Self> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VecZnxDftToVecZnxBigConsumeImpl<Self> for FFT64 {
|
unsafe impl IDFTConsumeImpl<Self> for FFT64 {
|
||||||
fn vec_znx_dft_to_vec_znx_big_consume_impl<D: Data>(module: &Module<Self>, mut a: VecZnxDft<D, FFT64>) -> VecZnxBig<D, FFT64>
|
fn idft_consume_impl<D: Data>(module: &Module<Self>, mut a: VecZnxDft<D, FFT64>) -> VecZnxBig<D, FFT64>
|
||||||
where
|
where
|
||||||
VecZnxDft<D, FFT64>: VecZnxDftToMut<Self>,
|
VecZnxDft<D, FFT64>: VecZnxDftToMut<Self>,
|
||||||
{
|
{
|
||||||
@@ -137,16 +130,9 @@ unsafe impl VecZnxDftToVecZnxBigConsumeImpl<Self> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VecZnxDftFromVecZnxImpl<Self> for FFT64 {
|
unsafe impl DFTImpl<Self> for FFT64 {
|
||||||
fn vec_znx_dft_from_vec_znx_impl<R, A>(
|
fn dft_impl<R, A>(module: &Module<Self>, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
|
||||||
module: &Module<Self>,
|
where
|
||||||
step: usize,
|
|
||||||
offset: usize,
|
|
||||||
res: &mut R,
|
|
||||||
res_col: usize,
|
|
||||||
a: &A,
|
|
||||||
a_col: usize,
|
|
||||||
) where
|
|
||||||
R: VecZnxDftToMut<Self>,
|
R: VecZnxDftToMut<Self>,
|
||||||
A: VecZnxToRef,
|
A: VecZnxToRef,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -54,8 +54,8 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
@@ -138,8 +138,8 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxNormalizeTmpBytes, VmpApply,
|
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VmpApplyAdd, VmpApplyTmpBytes,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -73,8 +72,8 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -82,7 +81,7 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnxBig<B>,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnxBig<B>,
|
||||||
{
|
{
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
@@ -143,8 +142,8 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -152,7 +151,7 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnxBig<B>,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnxBig<B>,
|
||||||
{
|
{
|
||||||
unsafe {
|
unsafe {
|
||||||
@@ -173,8 +172,8 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace,
|
+ VecZnxAutomorphismInplace,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace, VecZnxBigSubSmallBInplace,
|
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigSubSmallBInplace, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig},
|
||||||
};
|
};
|
||||||
@@ -54,8 +54,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace,
|
+ VecZnxAutomorphismInplace,
|
||||||
@@ -78,8 +78,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace,
|
+ VecZnxAutomorphismInplace,
|
||||||
@@ -103,8 +103,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>,
|
+ VecZnxBigAutomorphismInplace<B>,
|
||||||
@@ -134,8 +134,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>,
|
+ VecZnxBigAutomorphismInplace<B>,
|
||||||
@@ -159,8 +159,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
@@ -191,8 +191,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
@@ -217,8 +217,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
@@ -249,8 +249,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -60,8 +60,8 @@ impl<DLwe: DataMut> LWECiphertext<DLwe> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeGLWECt,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeGLWECt,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -43,8 +43,8 @@ impl<D: DataMut> GLWECiphertext<D> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeGLWECt,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeGLWECt,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
SvpApplyInplace, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, SvpApplyInplace, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes,
|
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -26,9 +26,9 @@ impl<DataSelf: DataRef> GLWECiphertext<DataSelf> {
|
|||||||
sk: &GLWESecretPrepared<DataSk, B>,
|
sk: &GLWESecretPrepared<DataSk, B>,
|
||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftFromVecZnx<B>
|
Module<B>: DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
@@ -50,9 +50,9 @@ impl<DataSelf: DataRef> GLWECiphertext<DataSelf> {
|
|||||||
(1..cols).for_each(|i| {
|
(1..cols).for_each(|i| {
|
||||||
// ci_dft = DFT(a[i]) * DFT(s[i])
|
// ci_dft = DFT(a[i]) * DFT(s[i])
|
||||||
let (mut ci_dft, _) = scratch_1.take_vec_znx_dft(self.n(), 1, self.size()); // TODO optimize size when pt << ct
|
let (mut ci_dft, _) = scratch_1.take_vec_znx_dft(self.n(), 1, self.size()); // TODO optimize size when pt << ct
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut ci_dft, 0, &self.data, i);
|
module.dft(1, 0, &mut ci_dft, 0, &self.data, i);
|
||||||
module.svp_apply_inplace(&mut ci_dft, 0, &sk.data, i - 1);
|
module.svp_apply_inplace(&mut ci_dft, 0, &sk.data, i - 1);
|
||||||
let ci_big = module.vec_znx_dft_to_vec_znx_big_consume(ci_dft);
|
let ci_big = module.vec_znx_idft_consume(ci_dft);
|
||||||
|
|
||||||
// c0_big += a[i] * s[i]
|
// c0_big += a[i] * s[i]
|
||||||
module.vec_znx_big_add_inplace(&mut c0_big, 0, &ci_big, 0);
|
module.vec_znx_big_add_inplace(&mut c0_big, 0, &ci_big, 0);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, VecZnxDftAllocBytes,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -44,9 +44,9 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKeyCompressed<DataSelf> {
|
|||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -37,9 +37,9 @@ impl<D: DataMut> GGLWECiphertextCompressed<D> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -47,9 +47,9 @@ impl<DataSelf: DataMut> GGLWESwitchingKeyCompressed<DataSelf> {
|
|||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAllocBytes,
|
TakeScalarZnx, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
VecZnxSwithcDegree,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -35,12 +34,12 @@ impl<DataSelf: DataMut> GGLWETensorKeyCompressed<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: SvpApply<B>
|
Module<B>: SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -77,7 +76,7 @@ impl<DataSelf: DataMut> GGLWETensorKeyCompressed<DataSelf> {
|
|||||||
let (mut sk_dft, scratch2) = scratch1.take_vec_znx_dft(n, rank, 1);
|
let (mut sk_dft, scratch2) = scratch1.take_vec_znx_dft(n, rank, 1);
|
||||||
|
|
||||||
(0..rank).for_each(|i| {
|
(0..rank).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
module.dft(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
||||||
});
|
});
|
||||||
|
|
||||||
let (mut sk_ij_big, scratch3) = scratch2.take_vec_znx_big(n, 1, 1);
|
let (mut sk_ij_big, scratch3) = scratch2.take_vec_znx_big(n, 1, 1);
|
||||||
@@ -90,7 +89,7 @@ impl<DataSelf: DataMut> GGLWETensorKeyCompressed<DataSelf> {
|
|||||||
(i..rank).for_each(|j| {
|
(i..rank).for_each(|j| {
|
||||||
module.svp_apply(&mut sk_ij_dft, 0, &sk_dft_prep.data, j, &sk_dft, i);
|
module.svp_apply(&mut sk_ij_dft, 0, &sk_dft_prep.data, j, &sk_dft, i);
|
||||||
|
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
module.idft_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
||||||
module.vec_znx_big_normalize(
|
module.vec_znx_big_normalize(
|
||||||
self.basek(),
|
self.basek(),
|
||||||
&mut sk_ij.data.as_vec_znx_mut(),
|
&mut sk_ij.data.as_vec_znx_mut(),
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -37,9 +37,9 @@ impl<DataSelf: DataMut> GGSWCiphertextCompressed<DataSelf> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -35,9 +35,9 @@ impl<D: DataMut> GLWECiphertextCompressed<D> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -63,9 +63,9 @@ impl<D: DataMut> GLWECiphertextCompressed<D> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, VecZnxDftAllocBytes,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -41,9 +41,9 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -41,9 +41,9 @@ impl<DataSelf: DataMut> GGLWECiphertext<DataSelf> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -55,9 +55,9 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxBig,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx,
|
||||||
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAllocBytes,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform,
|
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -42,13 +42,13 @@ impl<DataSelf: DataMut> GGLWETensorKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: SvpApply<B>
|
Module<B>: SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -79,7 +79,7 @@ impl<DataSelf: DataMut> GGLWETensorKey<DataSelf> {
|
|||||||
let (mut sk_dft, scratch2) = scratch1.take_vec_znx_dft(n, rank, 1);
|
let (mut sk_dft, scratch2) = scratch1.take_vec_znx_dft(n, rank, 1);
|
||||||
|
|
||||||
(0..rank).for_each(|i| {
|
(0..rank).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
module.dft(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
||||||
});
|
});
|
||||||
|
|
||||||
let (mut sk_ij_big, scratch3) = scratch2.take_vec_znx_big(n, 1, 1);
|
let (mut sk_ij_big, scratch3) = scratch2.take_vec_znx_big(n, 1, 1);
|
||||||
@@ -90,7 +90,7 @@ impl<DataSelf: DataMut> GGLWETensorKey<DataSelf> {
|
|||||||
(i..rank).for_each(|j| {
|
(i..rank).for_each(|j| {
|
||||||
module.svp_apply(&mut sk_ij_dft, 0, &sk_dft_prep.data, j, &sk_dft, i);
|
module.svp_apply(&mut sk_ij_dft, 0, &sk_dft_prep.data, j, &sk_dft, i);
|
||||||
|
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
module.idft_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
||||||
module.vec_znx_big_normalize(
|
module.vec_znx_big_normalize(
|
||||||
self.basek(),
|
self.basek(),
|
||||||
&mut sk_ij.data.as_vec_znx_mut(),
|
&mut sk_ij.data.as_vec_znx_mut(),
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, ZnxZero},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -40,9 +40,9 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeSvpPPol, TakeVecZnx,
|
DFT, IDFTConsume, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeSvpPPol,
|
||||||
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddNormal, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddNormal, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, VecZnxBig, ZnxInfos, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, VecZnxBig, ZnxInfos, ZnxZero},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -53,9 +53,9 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -92,9 +92,9 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -138,9 +138,9 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -180,7 +180,7 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: SvpPrepare<B>
|
Module<B>: SvpPrepare<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddNormal<B>
|
+ VecZnxBigAddNormal<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
@@ -199,7 +199,7 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: SvpPrepare<B>
|
Module<B>: SvpPrepare<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddNormal<B>
|
+ VecZnxBigAddNormal<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
@@ -227,7 +227,7 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
Module<B>: SvpPrepare<B>
|
Module<B>: SvpPrepare<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddNormal<B>
|
+ VecZnxBigAddNormal<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
@@ -276,7 +276,7 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
module.svp_apply(&mut ci_dft, 0, &u_dft, 0, &pk.data, i);
|
module.svp_apply(&mut ci_dft, 0, &u_dft, 0, &pk.data, i);
|
||||||
|
|
||||||
// ci_big = u * p[i]
|
// ci_big = u * p[i]
|
||||||
let mut ci_big = module.vec_znx_dft_to_vec_znx_big_consume(ci_dft);
|
let mut ci_big = module.vec_znx_idft_consume(ci_dft);
|
||||||
|
|
||||||
// ci_big = u * pk[i] + e
|
// ci_big = u * pk[i] + e
|
||||||
module.vec_znx_big_add_normal(basek, &mut ci_big, 0, pk.k(), source_xe, SIGMA, SIGMA_BOUND);
|
module.vec_znx_big_add_normal(basek, &mut ci_big, 0, pk.k(), source_xe, SIGMA, SIGMA_BOUND);
|
||||||
@@ -311,9 +311,9 @@ pub(crate) fn glwe_encrypt_sk_internal<DataCt: DataMut, DataPt: DataRef, DataSk:
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -361,16 +361,16 @@ pub(crate) fn glwe_encrypt_sk_internal<DataCt: DataMut, DataPt: DataRef, DataSk:
|
|||||||
if i == col {
|
if i == col {
|
||||||
module.vec_znx_sub(&mut ci, 0, ct, col_ct, &pt.data, 0);
|
module.vec_znx_sub(&mut ci, 0, ct, col_ct, &pt.data, 0);
|
||||||
module.vec_znx_normalize_inplace(basek, &mut ci, 0, scratch_3);
|
module.vec_znx_normalize_inplace(basek, &mut ci, 0, scratch_3);
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut ci_dft, 0, &ci, 0);
|
module.dft(1, 0, &mut ci_dft, 0, &ci, 0);
|
||||||
} else {
|
} else {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut ci_dft, 0, ct, col_ct);
|
module.dft(1, 0, &mut ci_dft, 0, ct, col_ct);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut ci_dft, 0, ct, col_ct);
|
module.dft(1, 0, &mut ci_dft, 0, ct, col_ct);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.svp_apply_inplace(&mut ci_dft, 0, &sk.data, i - 1);
|
module.svp_apply_inplace(&mut ci_dft, 0, &sk.data, i - 1);
|
||||||
let ci_big: VecZnxBig<&mut [u8], B> = module.vec_znx_dft_to_vec_znx_big_consume(ci_dft);
|
let ci_big: VecZnxBig<&mut [u8], B> = module.vec_znx_idft_consume(ci_dft);
|
||||||
|
|
||||||
// use c[0] as buffer, which is overwritten later by the normalization step
|
// use c[0] as buffer, which is overwritten later by the normalization step
|
||||||
module.vec_znx_big_normalize(basek, &mut ci, 0, &ci_big, 0, scratch_3);
|
module.vec_znx_big_normalize(basek, &mut ci, 0, &ci_big, 0, scratch_3);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScratchOwned},
|
layouts::{Backend, DataMut, DataRef, Module, ScratchOwned},
|
||||||
oep::{ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxDftImpl, TakeVecZnxImpl},
|
oep::{ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxDftImpl, TakeVecZnxImpl},
|
||||||
@@ -22,9 +22,9 @@ impl<D: DataMut> GLWEPublicKey<D> {
|
|||||||
Module<B>:,
|
Module<B>:,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -42,9 +42,9 @@ impl<D: DataMut> GLWEToLWESwitchingKey<D> {
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -42,9 +42,9 @@ impl<D: DataMut> LWESwitchingKey<D> {
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize,
|
TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -40,9 +40,9 @@ impl<D: DataMut> LWEToGLWESwitchingKey<D> {
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -51,10 +51,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
@@ -70,10 +70,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -51,10 +51,10 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
@@ -106,10 +106,10 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -51,10 +51,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
@@ -116,10 +116,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig},
|
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig},
|
||||||
};
|
};
|
||||||
@@ -65,10 +65,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
@@ -121,7 +121,7 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
res_dft.set_size(rhs.size() - ((digits - di) as isize - 2).max(0) as usize);
|
res_dft.set_size(rhs.size() - ((digits - di) as isize - 2).max(0) as usize);
|
||||||
|
|
||||||
(0..cols).for_each(|col_i| {
|
(0..cols).for_each(|col_i| {
|
||||||
module.vec_znx_dft_from_vec_znx(digits, digits - 1 - di, &mut a_dft, col_i, &lhs.data, col_i);
|
module.dft(digits, digits - 1 - di, &mut a_dft, col_i, &lhs.data, col_i);
|
||||||
});
|
});
|
||||||
|
|
||||||
if di == 0 {
|
if di == 0 {
|
||||||
@@ -132,7 +132,7 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let res_big: VecZnxBig<&mut [u8], B> = module.vec_znx_dft_to_vec_znx_big_consume(res_dft);
|
let res_big: VecZnxBig<&mut [u8], B> = module.vec_znx_idft_consume(res_dft);
|
||||||
|
|
||||||
(0..cols).for_each(|i| {
|
(0..cols).for_each(|i| {
|
||||||
module.vec_znx_big_normalize(basek, &mut self.data, i, &res_big, i, scratch1);
|
module.vec_znx_big_normalize(basek, &mut self.data, i, &res_big, i, scratch1);
|
||||||
@@ -148,10 +148,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,11 +2,10 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxNegateInplace, VecZnxNormalizeInplace,
|
VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxRotate,
|
||||||
VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd,
|
VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VmpApplyTmpBytes,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -126,8 +125,8 @@ impl GLWEPacker {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
@@ -204,8 +203,8 @@ fn pack_core<D: DataRef, DataAK: DataRef, B: Backend>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
@@ -301,8 +300,8 @@ fn combine<D: DataRef, DataAK: DataRef, B: Backend>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxRshInplace, VmpApply, VmpApplyAdd,
|
||||||
VecZnxRshInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -73,8 +73,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
@@ -99,8 +99,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -56,8 +56,8 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
@@ -76,8 +76,8 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
@@ -132,8 +132,8 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
||||||
@@ -188,8 +188,8 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos},
|
||||||
};
|
};
|
||||||
@@ -107,13 +107,13 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
||||||
{
|
{
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
@@ -143,8 +143,8 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
@@ -152,7 +152,7 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
||||||
{
|
{
|
||||||
self.keyswitch_internal(module, lhs, ksk, scratch);
|
self.keyswitch_internal(module, lhs, ksk, scratch);
|
||||||
@@ -171,8 +171,8 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
@@ -180,7 +180,7 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
||||||
{
|
{
|
||||||
unsafe {
|
unsafe {
|
||||||
@@ -199,13 +199,13 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>,
|
||||||
{
|
{
|
||||||
assert!(
|
assert!(
|
||||||
@@ -229,7 +229,7 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
// Pre-compute DFT of (a0, a1, a2)
|
// Pre-compute DFT of (a0, a1, a2)
|
||||||
let (mut ci_dft, scratch1) = scratch.take_vec_znx_dft(n, cols, self.size());
|
let (mut ci_dft, scratch1) = scratch.take_vec_znx_dft(n, cols, self.size());
|
||||||
(0..cols).for_each(|i| {
|
(0..cols).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut ci_dft, i, &self.at(row_i, 0).data, i);
|
module.dft(1, 0, &mut ci_dft, i, &self.at(row_i, 0).data, i);
|
||||||
});
|
});
|
||||||
|
|
||||||
(1..cols).for_each(|col_j| {
|
(1..cols).for_each(|col_j| {
|
||||||
@@ -308,7 +308,7 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
module.vec_znx_dft_add_inplace(&mut tmp_dft_i, col_j, &ci_dft, 0);
|
module.vec_znx_dft_add_inplace(&mut tmp_dft_i, col_j, &ci_dft, 0);
|
||||||
let (mut tmp_idft, scratch3) = scratch2.take_vec_znx_big(n, 1, tsk.size());
|
let (mut tmp_idft, scratch3) = scratch2.take_vec_znx_big(n, 1, tsk.size());
|
||||||
(0..cols).for_each(|i| {
|
(0..cols).for_each(|i| {
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut tmp_idft, 0, &mut tmp_dft_i, i);
|
module.idft_tmp_a(&mut tmp_idft, 0, &mut tmp_dft_i, i);
|
||||||
module.vec_znx_big_normalize(
|
module.vec_znx_big_normalize(
|
||||||
self.basek(),
|
self.basek(),
|
||||||
&mut self.at_mut(row_i, col_j).data,
|
&mut self.at_mut(row_i, col_j).data,
|
||||||
@@ -334,8 +334,8 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos},
|
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos},
|
||||||
};
|
};
|
||||||
@@ -133,8 +133,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
||||||
@@ -162,8 +162,8 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
|
||||||
@@ -192,8 +192,8 @@ impl<D: DataRef> GLWECiphertext<D> {
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B>,
|
Scratch<B>: TakeVecZnxDft<B>,
|
||||||
@@ -224,17 +224,16 @@ where
|
|||||||
DataRes: DataMut,
|
DataRes: DataMut,
|
||||||
DataIn: DataRef,
|
DataIn: DataRef,
|
||||||
DataVmp: DataRef,
|
DataVmp: DataRef,
|
||||||
Module<B>:
|
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApply<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>,
|
||||||
VecZnxDftAllocBytes + VecZnxDftFromVecZnx<B> + VmpApply<B> + VecZnxDftToVecZnxBigConsume<B> + VecZnxBigAddSmallInplace<B>,
|
|
||||||
Scratch<B>: TakeVecZnxDft<B>,
|
Scratch<B>: TakeVecZnxDft<B>,
|
||||||
{
|
{
|
||||||
let cols: usize = a.cols();
|
let cols: usize = a.cols();
|
||||||
let (mut ai_dft, scratch1) = scratch.take_vec_znx_dft(a.n(), cols - 1, a.size());
|
let (mut ai_dft, scratch1) = scratch.take_vec_znx_dft(a.n(), cols - 1, a.size());
|
||||||
(0..cols - 1).for_each(|col_i| {
|
(0..cols - 1).for_each(|col_i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut ai_dft, col_i, a, col_i + 1);
|
module.dft(1, 0, &mut ai_dft, col_i, a, col_i + 1);
|
||||||
});
|
});
|
||||||
module.vmp_apply(&mut res_dft, &ai_dft, mat, scratch1);
|
module.vmp_apply(&mut res_dft, &ai_dft, mat, scratch1);
|
||||||
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_dft_to_vec_znx_big_consume(res_dft);
|
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_idft_consume(res_dft);
|
||||||
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
|
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
|
||||||
res_big
|
res_big
|
||||||
}
|
}
|
||||||
@@ -251,12 +250,7 @@ where
|
|||||||
DataRes: DataMut,
|
DataRes: DataMut,
|
||||||
DataIn: DataRef,
|
DataIn: DataRef,
|
||||||
DataVmp: DataRef,
|
DataVmp: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApply<B> + VmpApplyAdd<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>,
|
||||||
+ VecZnxDftFromVecZnx<B>
|
|
||||||
+ VmpApply<B>
|
|
||||||
+ VmpApplyAdd<B>
|
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
|
||||||
+ VecZnxBigAddSmallInplace<B>,
|
|
||||||
Scratch<B>: TakeVecZnxDft<B>,
|
Scratch<B>: TakeVecZnxDft<B>,
|
||||||
{
|
{
|
||||||
let cols: usize = a.cols();
|
let cols: usize = a.cols();
|
||||||
@@ -278,7 +272,7 @@ where
|
|||||||
res_dft.set_size(mat.size() - ((digits - di) as isize - 2).max(0) as usize);
|
res_dft.set_size(mat.size() - ((digits - di) as isize - 2).max(0) as usize);
|
||||||
|
|
||||||
(0..cols - 1).for_each(|col_i| {
|
(0..cols - 1).for_each(|col_i| {
|
||||||
module.vec_znx_dft_from_vec_znx(digits, digits - di - 1, &mut ai_dft, col_i, a, col_i + 1);
|
module.dft(digits, digits - di - 1, &mut ai_dft, col_i, a, col_i + 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
if di == 0 {
|
if di == 0 {
|
||||||
@@ -289,7 +283,7 @@ where
|
|||||||
});
|
});
|
||||||
|
|
||||||
res_dft.set_size(res_dft.max_size());
|
res_dft.set_size(res_dft.max_size());
|
||||||
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_dft_to_vec_znx_big_consume(res_dft);
|
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_idft_consume(res_dft);
|
||||||
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
|
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
|
||||||
res_big
|
res_big
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -26,8 +26,8 @@ impl LWECiphertext<Vec<u8>> {
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
{
|
{
|
||||||
@@ -51,8 +51,8 @@ impl<DLwe: DataMut> LWECiphertext<DLwe> {
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ use std::fmt;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize,
|
DFT, IDFTConsume, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo},
|
layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -96,9 +96,9 @@ impl GLWEToLWESwitchingKeyCompressed<Vec<u8>> {
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize,
|
DFT, IDFTConsume, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo},
|
layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -98,9 +98,9 @@ impl LWESwitchingKeyCompressed<Vec<u8>> {
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize,
|
DFT, IDFTConsume, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo},
|
layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -98,9 +98,9 @@ impl LWEToGLWESwitchingKeyCompressed<Vec<u8>> {
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx},
|
api::{DFT, VecZnxDftAlloc, VecZnxDftAllocBytes},
|
||||||
layouts::{Backend, Data, DataMut, DataRef, Module, Scratch, VecZnxDft},
|
layouts::{Backend, Data, DataMut, DataRef, Module, Scratch, VecZnxDft},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ impl<B: Backend> GLWEPublicKeyPrepared<Vec<u8>, B> {
|
|||||||
|
|
||||||
impl<D: DataRef, B: Backend> PrepareAlloc<B, GLWEPublicKeyPrepared<Vec<u8>, B>> for GLWEPublicKey<D>
|
impl<D: DataRef, B: Backend> PrepareAlloc<B, GLWEPublicKeyPrepared<Vec<u8>, B>> for GLWEPublicKey<D>
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAlloc<B> + VecZnxDftFromVecZnx<B>,
|
Module<B>: VecZnxDftAlloc<B> + DFT<B>,
|
||||||
{
|
{
|
||||||
fn prepare_alloc(&self, module: &Module<B>, scratch: &mut Scratch<B>) -> GLWEPublicKeyPrepared<Vec<u8>, B> {
|
fn prepare_alloc(&self, module: &Module<B>, scratch: &mut Scratch<B>) -> GLWEPublicKeyPrepared<Vec<u8>, B> {
|
||||||
let mut pk_prepared: GLWEPublicKeyPrepared<Vec<u8>, B> =
|
let mut pk_prepared: GLWEPublicKeyPrepared<Vec<u8>, B> =
|
||||||
@@ -76,7 +76,7 @@ where
|
|||||||
|
|
||||||
impl<DM: DataMut, DR: DataRef, B: Backend> Prepare<B, GLWEPublicKey<DR>> for GLWEPublicKeyPrepared<DM, B>
|
impl<DM: DataMut, DR: DataRef, B: Backend> Prepare<B, GLWEPublicKey<DR>> for GLWEPublicKeyPrepared<DM, B>
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftFromVecZnx<B>,
|
Module<B>: DFT<B>,
|
||||||
{
|
{
|
||||||
fn prepare(&mut self, module: &Module<B>, other: &GLWEPublicKey<DR>, _scratch: &mut Scratch<B>) {
|
fn prepare(&mut self, module: &Module<B>, other: &GLWEPublicKey<DR>, _scratch: &mut Scratch<B>) {
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
@@ -86,7 +86,7 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
(0..self.cols()).for_each(|i| {
|
(0..self.cols()).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut self.data, i, &other.data, i);
|
module.dft(1, 0, &mut self.data, i, &other.data, i);
|
||||||
});
|
});
|
||||||
self.k = other.k;
|
self.k = other.k;
|
||||||
self.basek = other.basek;
|
self.basek = other.basek;
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, VecZnxSubScalarInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxSubScalarInplace,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, ZnxZero},
|
layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, ZnxZero},
|
||||||
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},
|
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},
|
||||||
@@ -22,9 +21,9 @@ impl<D: DataRef> GGLWECiphertext<D> {
|
|||||||
DataWant: DataRef,
|
DataWant: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddScalarInplace, VecZnxBigAddInplace,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddScalarInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
||||||
VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, VecZnxSubABInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxSubABInplace,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, VecZnxBig, VecZnxDft, ZnxZero},
|
layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, VecZnxBig, VecZnxDft, ZnxZero},
|
||||||
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},
|
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},
|
||||||
@@ -23,9 +22,9 @@ impl<D: DataRef> GGSWCiphertext<D> {
|
|||||||
DataScalar: DataRef,
|
DataScalar: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -33,7 +32,7 @@ impl<D: DataRef> GGSWCiphertext<D> {
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxSubABInplace,
|
+ VecZnxSubABInplace,
|
||||||
B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B>,
|
B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B>,
|
||||||
@@ -57,9 +56,9 @@ impl<D: DataRef> GGSWCiphertext<D> {
|
|||||||
|
|
||||||
// mul with sk[col_j-1]
|
// mul with sk[col_j-1]
|
||||||
if col_j > 0 {
|
if col_j > 0 {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut pt_dft, 0, &pt.data, 0);
|
module.dft(1, 0, &mut pt_dft, 0, &pt.data, 0);
|
||||||
module.svp_apply_inplace(&mut pt_dft, 0, &sk_prepared.data, col_j - 1);
|
module.svp_apply_inplace(&mut pt_dft, 0, &sk_prepared.data, col_j - 1);
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut pt_big, 0, &mut pt_dft, 0);
|
module.idft_tmp_a(&mut pt_big, 0, &mut pt_dft, 0);
|
||||||
module.vec_znx_big_normalize(basek, &mut pt.data, 0, &pt_big, 0, scratch.borrow());
|
module.vec_znx_big_normalize(basek, &mut pt.data, 0, &pt_big, 0, scratch.borrow());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,9 +89,9 @@ impl<D: DataRef> GGSWCiphertext<D> {
|
|||||||
DataScalar: DataRef,
|
DataScalar: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -100,7 +99,7 @@ impl<D: DataRef> GGSWCiphertext<D> {
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxSubABInplace,
|
+ VecZnxSubABInplace,
|
||||||
B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B>,
|
B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B>,
|
||||||
@@ -123,9 +122,9 @@ impl<D: DataRef> GGSWCiphertext<D> {
|
|||||||
|
|
||||||
// mul with sk[col_j-1]
|
// mul with sk[col_j-1]
|
||||||
if col_j > 0 {
|
if col_j > 0 {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut pt_dft, 0, &pt.data, 0);
|
module.dft(1, 0, &mut pt_dft, 0, &pt.data, 0);
|
||||||
module.svp_apply_inplace(&mut pt_dft, 0, &sk_prepared.data, col_j - 1);
|
module.svp_apply_inplace(&mut pt_dft, 0, &sk_prepared.data, col_j - 1);
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut pt_big, 0, &mut pt_dft, 0);
|
module.idft_tmp_a(&mut pt_big, 0, &mut pt_dft, 0);
|
||||||
module.vec_znx_big_normalize(basek, &mut pt.data, 0, &pt_big, 0, scratch.borrow());
|
module.vec_znx_big_normalize(basek, &mut pt.data, 0, &pt_big, 0, scratch.borrow());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSubABInplace,
|
VecZnxSubABInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataRef, Module, ScratchOwned},
|
layouts::{Backend, DataRef, Module, ScratchOwned},
|
||||||
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},
|
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},
|
||||||
@@ -26,9 +26,9 @@ impl<D: DataRef> GLWECiphertext<D> {
|
|||||||
DataPt: DataRef,
|
DataPt: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -41,8 +41,8 @@ pub fn test_gglwe_automorphism_key_automorphism<B>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
@@ -199,9 +199,9 @@ pub fn test_gglwe_automorphism_key_automorphism_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -219,8 +219,8 @@ pub fn test_gglwe_automorphism_key_automorphism_inplace<B>(
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
@@ -230,9 +230,9 @@ pub fn test_gglwe_automorphism_key_automorphism_inplace<B>(
|
|||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism,
|
||||||
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy,
|
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply,
|
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -39,9 +38,9 @@ pub fn test_ggsw_automorphism<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -49,7 +48,7 @@ pub fn test_ggsw_automorphism<B>(
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
@@ -193,9 +192,9 @@ pub fn test_ggsw_automorphism_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -203,7 +202,7 @@ pub fn test_ggsw_automorphism_inplace<B>(
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
VmpPMatAlloc, VmpPrepare,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -37,9 +36,9 @@ pub fn test_glwe_automorphism<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -161,9 +160,9 @@ pub fn test_glwe_automorphism_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform,
|
||||||
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
ZnNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -25,9 +25,9 @@ pub fn test_lwe_to_glwe<B>(module: &Module<B>)
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -130,9 +130,9 @@ pub fn test_glwe_to_lwe<B>(module: &Module<B>)
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -28,9 +28,9 @@ pub fn test_gglwe_automorphisk_key_encrypt_sk<B>(module: &Module<B>, basek: usiz
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -120,9 +120,9 @@ pub fn test_gglwe_automorphisk_key_compressed_encrypt_sk<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
||||||
VecZnxSwithcDegree, VmpPMatAlloc, VmpPrepare,
|
VecZnxSwithcDegree, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
@@ -33,9 +33,9 @@ pub fn test_gglwe_switching_key_encrypt_sk<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -111,9 +111,9 @@ pub fn test_gglwe_switching_key_compressed_encrypt_sk<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc,
|
SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes,
|
VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VmpPMatAlloc, VmpPrepare,
|
VecZnxSubABInplace, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -27,9 +27,9 @@ pub fn test_ggsw_encrypt_sk<B>(module: &Module<B>, basek: usize, k: usize, digit
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -51,7 +51,7 @@ where
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
+ TakeVecZnxBigImpl<B>
|
+ TakeVecZnxBigImpl<B>
|
||||||
@@ -104,9 +104,9 @@ pub fn test_ggsw_compressed_encrypt_sk<B>(module: &Module<B>, basek: usize, k: u
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -128,7 +128,7 @@ where
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
+ TakeVecZnxBigImpl<B>
|
+ TakeVecZnxBigImpl<B>
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddInplace, VecZnxBigAddNormal, VecZnxBigAddSmallInplace,
|
SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddInplace, VecZnxBigAddNormal, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSub, VecZnxSubABInplace,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -28,9 +27,9 @@ pub fn test_glwe_encrypt_sk<B>(module: &Module<B>, basek: usize, k_ct: usize, k_
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -43,16 +42,16 @@ where
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddNormal<B>
|
+ VecZnxBigAddNormal<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -114,9 +113,9 @@ pub fn test_glwe_compressed_encrypt_sk<B>(module: &Module<B>, basek: usize, k_ct
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -129,16 +128,16 @@ where
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddNormal<B>
|
+ VecZnxBigAddNormal<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -212,9 +211,9 @@ pub fn test_glwe_encrypt_zero_sk<B>(module: &Module<B>, basek: usize, k_ct: usiz
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
@@ -227,16 +226,16 @@ where
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddNormal<B>
|
+ VecZnxBigAddNormal<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -289,9 +288,9 @@ pub fn test_glwe_encrypt_pk<B>(module: &Module<B>, basek: usize, k_ct: usize, k_
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc,
|
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree,
|
VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, VecZnxDft},
|
layouts::{Backend, Module, ScratchOwned, VecZnxDft},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -27,9 +27,9 @@ pub fn test_glwe_tensor_key_encrypt_sk<B>(module: &Module<B>, basek: usize, k: u
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -48,7 +48,7 @@ where
|
|||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxSubScalarInplace,
|
+ VecZnxSubScalarInplace,
|
||||||
@@ -100,13 +100,13 @@ where
|
|||||||
let mut sk_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(rank, 1);
|
let mut sk_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(rank, 1);
|
||||||
|
|
||||||
(0..rank).for_each(|i| {
|
(0..rank).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
module.dft(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
||||||
});
|
});
|
||||||
|
|
||||||
(0..rank).for_each(|i| {
|
(0..rank).for_each(|i| {
|
||||||
(0..rank).for_each(|j| {
|
(0..rank).for_each(|j| {
|
||||||
module.svp_apply(&mut sk_ij_dft, 0, &sk_prepared.data, j, &sk_dft, i);
|
module.svp_apply(&mut sk_ij_dft, 0, &sk_prepared.data, j, &sk_dft, i);
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
module.idft_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
||||||
module.vec_znx_big_normalize(
|
module.vec_znx_big_normalize(
|
||||||
basek,
|
basek,
|
||||||
&mut sk_ij.data.as_vec_znx_mut(),
|
&mut sk_ij.data.as_vec_znx_mut(),
|
||||||
@@ -136,9 +136,9 @@ pub fn test_glwe_tensor_key_compressed_encrypt_sk<B>(module: &Module<B>, basek:
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -157,7 +157,7 @@ where
|
|||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxSubScalarInplace,
|
+ VecZnxSubScalarInplace,
|
||||||
@@ -208,13 +208,13 @@ where
|
|||||||
let mut sk_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(rank, 1);
|
let mut sk_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(rank, 1);
|
||||||
|
|
||||||
(0..rank).for_each(|i| {
|
(0..rank).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
module.dft(1, 0, &mut sk_dft, i, &sk.data.as_vec_znx(), i);
|
||||||
});
|
});
|
||||||
|
|
||||||
(0..rank).for_each(|i| {
|
(0..rank).for_each(|i| {
|
||||||
(0..rank).for_each(|j| {
|
(0..rank).for_each(|j| {
|
||||||
module.svp_apply(&mut sk_ij_dft, 0, &sk_prepared.data, j, &sk_dft, i);
|
module.svp_apply(&mut sk_ij_dft, 0, &sk_prepared.data, j, &sk_dft, i);
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
module.idft_tmp_a(&mut sk_ij_big, 0, &mut sk_ij_dft, 0);
|
||||||
module.vec_znx_big_normalize(
|
module.vec_znx_big_normalize(
|
||||||
basek,
|
basek,
|
||||||
&mut sk_ij.data.as_vec_znx_mut(),
|
&mut sk_ij.data.as_vec_znx_mut(),
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
||||||
@@ -36,9 +36,9 @@ pub fn test_gglwe_switching_key_external_product<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -176,9 +176,9 @@ pub fn test_gglwe_switching_key_external_product_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc,
|
SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes,
|
VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply,
|
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -36,9 +35,9 @@ pub fn test_ggsw_external_product<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -64,7 +63,7 @@ pub fn test_ggsw_external_product<B>(
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
+ TakeVecZnxBigImpl<B>
|
+ TakeVecZnxBigImpl<B>
|
||||||
@@ -168,9 +167,9 @@ pub fn test_ggsw_external_product_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -196,7 +195,7 @@ pub fn test_ggsw_external_product_inplace<B>(
|
|||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
+ TakeVecZnxBigImpl<B>
|
+ TakeVecZnxBigImpl<B>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -35,9 +35,9 @@ pub fn test_glwe_external_product<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -168,9 +168,9 @@ pub fn test_glwe_external_product_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
||||||
VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -37,9 +37,9 @@ pub fn test_gglwe_switching_key_keyswitch<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -184,9 +184,9 @@ pub fn test_gglwe_switching_key_keyswitch_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc,
|
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace, VecZnxDftAlloc,
|
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA,
|
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -37,9 +37,9 @@ pub fn test_ggsw_keyswitch<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -63,7 +63,7 @@ pub fn test_ggsw_keyswitch<B>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
@@ -181,9 +181,9 @@ pub fn test_ggsw_keyswitch_inplace<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -207,7 +207,7 @@ pub fn test_ggsw_keyswitch_inplace<B>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -36,9 +36,9 @@ pub fn test_glwe_keyswitch<B>(
|
|||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -150,9 +150,9 @@ pub fn test_glwe_keyswitch_inplace<B>(module: &Module<B>, basek: usize, k_ct: us
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform,
|
||||||
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
ZnNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -24,9 +24,9 @@ pub fn test_lwe_keyswitch<B>(module: &Module<B>)
|
|||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -36,10 +36,10 @@ where
|
|||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxRotate
|
+ VecZnxRotate
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -2,13 +2,12 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigAddInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub,
|
||||||
VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
VmpPMatAlloc, VmpPrepare,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut},
|
layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -36,9 +35,9 @@ where
|
|||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
|
|||||||
@@ -14,26 +14,33 @@ pub trait VecZnxDftAllocBytes {
|
|||||||
fn vec_znx_dft_alloc_bytes(&self, cols: usize, size: usize) -> usize;
|
fn vec_znx_dft_alloc_bytes(&self, cols: usize, size: usize) -> usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VecZnxDftToVecZnxBigTmpBytes {
|
pub trait DFT<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_bytes(&self) -> usize;
|
fn dft<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
|
||||||
|
where
|
||||||
|
R: VecZnxDftToMut<B>,
|
||||||
|
A: VecZnxToRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VecZnxDftToVecZnxBig<B: Backend> {
|
pub trait VecZnxIDFTTmpBytes {
|
||||||
fn vec_znx_dft_to_vec_znx_big<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
|
fn vec_znx_idft_tmp_bytes(&self) -> usize;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait IDFT<B: Backend> {
|
||||||
|
fn idft<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
|
||||||
where
|
where
|
||||||
R: VecZnxBigToMut<B>,
|
R: VecZnxBigToMut<B>,
|
||||||
A: VecZnxDftToRef<B>;
|
A: VecZnxDftToRef<B>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VecZnxDftToVecZnxBigTmpA<B: Backend> {
|
pub trait IDFTTmpA<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_a<R, A>(&self, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
fn idft_tmp_a<R, A>(&self, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
||||||
where
|
where
|
||||||
R: VecZnxBigToMut<B>,
|
R: VecZnxBigToMut<B>,
|
||||||
A: VecZnxDftToMut<B>;
|
A: VecZnxDftToMut<B>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VecZnxDftToVecZnxBigConsume<B: Backend> {
|
pub trait IDFTConsume<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
|
fn vec_znx_idft_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
|
||||||
where
|
where
|
||||||
VecZnxDft<D, B>: VecZnxDftToMut<B>;
|
VecZnxDft<D, B>: VecZnxDftToMut<B>;
|
||||||
}
|
}
|
||||||
@@ -82,13 +89,6 @@ pub trait VecZnxDftCopy<B: Backend> {
|
|||||||
A: VecZnxDftToRef<B>;
|
A: VecZnxDftToRef<B>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VecZnxDftFromVecZnx<B: Backend> {
|
|
||||||
fn vec_znx_dft_from_vec_znx<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
|
|
||||||
where
|
|
||||||
R: VecZnxDftToMut<B>,
|
|
||||||
A: VecZnxToRef;
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait VecZnxDftZero<B: Backend> {
|
pub trait VecZnxDftZero<B: Backend> {
|
||||||
fn vec_znx_dft_zero<R>(&self, res: &mut R)
|
fn vec_znx_dft_zero<R>(&self, res: &mut R)
|
||||||
where
|
where
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
api::{
|
api::{
|
||||||
VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromBytes,
|
DFT, IDFT, IDFTConsume, IDFTTmpA, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy,
|
||||||
VecZnxDftFromVecZnx, VecZnxDftSub, VecZnxDftSubABInplace, VecZnxDftSubBAInplace, VecZnxDftToVecZnxBig,
|
VecZnxDftFromBytes, VecZnxDftSub, VecZnxDftSubABInplace, VecZnxDftSubBAInplace, VecZnxDftZero, VecZnxIDFTTmpBytes,
|
||||||
VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxDftToVecZnxBigTmpBytes, VecZnxDftZero,
|
|
||||||
},
|
},
|
||||||
layouts::{
|
layouts::{
|
||||||
Backend, Data, Module, Scratch, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, VecZnxDftToRef,
|
Backend, Data, Module, Scratch, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, VecZnxDftToRef,
|
||||||
VecZnxToRef,
|
VecZnxToRef,
|
||||||
},
|
},
|
||||||
oep::{
|
oep::{
|
||||||
VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl, VecZnxDftAllocImpl, VecZnxDftCopyImpl,
|
DFTImpl, IDFTConsumeImpl, IDFTImpl, IDFTTmpAImpl, VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl,
|
||||||
VecZnxDftFromBytesImpl, VecZnxDftFromVecZnxImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl, VecZnxDftSubImpl,
|
VecZnxDftAllocImpl, VecZnxDftCopyImpl, VecZnxDftFromBytesImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl,
|
||||||
VecZnxDftToVecZnxBigConsumeImpl, VecZnxDftToVecZnxBigImpl, VecZnxDftToVecZnxBigTmpAImpl,
|
VecZnxDftSubImpl, VecZnxDftZeroImpl, VecZnxIDFTTmpBytesImpl,
|
||||||
VecZnxDftToVecZnxBigTmpBytesImpl, VecZnxDftZeroImpl,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -43,63 +41,63 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<B> VecZnxDftToVecZnxBigTmpBytes for Module<B>
|
impl<B> VecZnxIDFTTmpBytes for Module<B>
|
||||||
where
|
where
|
||||||
B: Backend + VecZnxDftToVecZnxBigTmpBytesImpl<B>,
|
B: Backend + VecZnxIDFTTmpBytesImpl<B>,
|
||||||
{
|
{
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_bytes(&self) -> usize {
|
fn vec_znx_idft_tmp_bytes(&self) -> usize {
|
||||||
B::vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(self)
|
B::vec_znx_idft_tmp_bytes_impl(self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<B> VecZnxDftToVecZnxBig<B> for Module<B>
|
impl<B> IDFT<B> for Module<B>
|
||||||
where
|
where
|
||||||
B: Backend + VecZnxDftToVecZnxBigImpl<B>,
|
B: Backend + IDFTImpl<B>,
|
||||||
{
|
{
|
||||||
fn vec_znx_dft_to_vec_znx_big<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
|
fn idft<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
|
||||||
where
|
where
|
||||||
R: VecZnxBigToMut<B>,
|
R: VecZnxBigToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
{
|
{
|
||||||
B::vec_znx_dft_to_vec_znx_big_impl(self, res, res_col, a, a_col, scratch);
|
B::idft_impl(self, res, res_col, a, a_col, scratch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<B> VecZnxDftToVecZnxBigTmpA<B> for Module<B>
|
impl<B> IDFTTmpA<B> for Module<B>
|
||||||
where
|
where
|
||||||
B: Backend + VecZnxDftToVecZnxBigTmpAImpl<B>,
|
B: Backend + IDFTTmpAImpl<B>,
|
||||||
{
|
{
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_a<R, A>(&self, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
fn idft_tmp_a<R, A>(&self, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
||||||
where
|
where
|
||||||
R: VecZnxBigToMut<B>,
|
R: VecZnxBigToMut<B>,
|
||||||
A: VecZnxDftToMut<B>,
|
A: VecZnxDftToMut<B>,
|
||||||
{
|
{
|
||||||
B::vec_znx_dft_to_vec_znx_big_tmp_a_impl(self, res, res_col, a, a_col);
|
B::idft_tmp_a_impl(self, res, res_col, a, a_col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<B> VecZnxDftToVecZnxBigConsume<B> for Module<B>
|
impl<B> IDFTConsume<B> for Module<B>
|
||||||
where
|
where
|
||||||
B: Backend + VecZnxDftToVecZnxBigConsumeImpl<B>,
|
B: Backend + IDFTConsumeImpl<B>,
|
||||||
{
|
{
|
||||||
fn vec_znx_dft_to_vec_znx_big_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
|
fn vec_znx_idft_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
|
||||||
where
|
where
|
||||||
VecZnxDft<D, B>: VecZnxDftToMut<B>,
|
VecZnxDft<D, B>: VecZnxDftToMut<B>,
|
||||||
{
|
{
|
||||||
B::vec_znx_dft_to_vec_znx_big_consume_impl(self, a)
|
B::idft_consume_impl(self, a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<B> VecZnxDftFromVecZnx<B> for Module<B>
|
impl<B> DFT<B> for Module<B>
|
||||||
where
|
where
|
||||||
B: Backend + VecZnxDftFromVecZnxImpl<B>,
|
B: Backend + DFTImpl<B>,
|
||||||
{
|
{
|
||||||
fn vec_znx_dft_from_vec_znx<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
|
fn dft<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
|
||||||
where
|
where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxToRef,
|
A: VecZnxToRef,
|
||||||
{
|
{
|
||||||
B::vec_znx_dft_from_vec_znx_impl(self, step, offset, res, res_col, a, a_col);
|
B::dft_impl(self, step, offset, res, res_col, a, a_col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,17 @@ pub unsafe trait VecZnxDftFromBytesImpl<B: Backend> {
|
|||||||
fn vec_znx_dft_from_bytes_impl(n: usize, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxDftOwned<B>;
|
fn vec_znx_dft_from_bytes_impl(n: usize, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxDftOwned<B>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
||||||
|
/// * See TODO for reference code.
|
||||||
|
/// * See TODO for corresponding public API.
|
||||||
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
|
pub unsafe trait DFTImpl<B: Backend> {
|
||||||
|
fn dft_impl<R, A>(module: &Module<B>, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
|
||||||
|
where
|
||||||
|
R: VecZnxDftToMut<B>,
|
||||||
|
A: VecZnxToRef;
|
||||||
|
}
|
||||||
|
|
||||||
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
@@ -31,23 +42,17 @@ pub unsafe trait VecZnxDftAllocBytesImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VecZnxDftToVecZnxBigTmpBytesImpl<B: Backend> {
|
pub unsafe trait VecZnxIDFTTmpBytesImpl<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(module: &Module<B>) -> usize;
|
fn vec_znx_idft_tmp_bytes_impl(module: &Module<B>) -> usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VecZnxDftToVecZnxBigImpl<B: Backend> {
|
pub unsafe trait IDFTImpl<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_impl<R, A>(
|
fn idft_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
|
||||||
module: &Module<B>,
|
where
|
||||||
res: &mut R,
|
|
||||||
res_col: usize,
|
|
||||||
a: &A,
|
|
||||||
a_col: usize,
|
|
||||||
scratch: &mut Scratch<B>,
|
|
||||||
) where
|
|
||||||
R: VecZnxBigToMut<B>,
|
R: VecZnxBigToMut<B>,
|
||||||
A: VecZnxDftToRef<B>;
|
A: VecZnxDftToRef<B>;
|
||||||
}
|
}
|
||||||
@@ -56,8 +61,8 @@ pub unsafe trait VecZnxDftToVecZnxBigImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See for corresponding public API.
|
/// * See for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VecZnxDftToVecZnxBigTmpAImpl<B: Backend> {
|
pub unsafe trait IDFTTmpAImpl<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_tmp_a_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
fn idft_tmp_a_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
|
||||||
where
|
where
|
||||||
R: VecZnxBigToMut<B>,
|
R: VecZnxBigToMut<B>,
|
||||||
A: VecZnxDftToMut<B>;
|
A: VecZnxDftToMut<B>;
|
||||||
@@ -67,8 +72,8 @@ pub unsafe trait VecZnxDftToVecZnxBigTmpAImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VecZnxDftToVecZnxBigConsumeImpl<B: Backend> {
|
pub unsafe trait IDFTConsumeImpl<B: Backend> {
|
||||||
fn vec_znx_dft_to_vec_znx_big_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
|
fn idft_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
|
||||||
where
|
where
|
||||||
VecZnxDft<D, B>: VecZnxDftToMut<B>;
|
VecZnxDft<D, B>: VecZnxDftToMut<B>;
|
||||||
}
|
}
|
||||||
@@ -148,24 +153,6 @@ pub unsafe trait VecZnxDftCopyImpl<B: Backend> {
|
|||||||
A: VecZnxDftToRef<B>;
|
A: VecZnxDftToRef<B>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
|
||||||
/// * See TODO for reference code.
|
|
||||||
/// * See TODO for corresponding public API.
|
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
|
||||||
pub unsafe trait VecZnxDftFromVecZnxImpl<B: Backend> {
|
|
||||||
fn vec_znx_dft_from_vec_znx_impl<R, A>(
|
|
||||||
module: &Module<B>,
|
|
||||||
step: usize,
|
|
||||||
offset: usize,
|
|
||||||
res: &mut R,
|
|
||||||
res_col: usize,
|
|
||||||
a: &A,
|
|
||||||
a_col: usize,
|
|
||||||
) where
|
|
||||||
R: VecZnxDftToMut<B>,
|
|
||||||
A: VecZnxToRef;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
|
||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
api::{
|
api::{
|
||||||
ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize,
|
||||||
VecZnxDftAlloc, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigTmpA, VmpApply, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VmpApply, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut},
|
layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl, VecZnxBigNormalizeImpl,
|
DFTImpl, IDFTTmpAImpl, ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl,
|
||||||
VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VecZnxDftFromVecZnxImpl, VecZnxDftToVecZnxBigTmpAImpl, VmpApplyImpl,
|
VecZnxBigNormalizeImpl, VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VmpApplyImpl, VmpApplyTmpBytesImpl,
|
||||||
VmpApplyTmpBytesImpl, VmpPMatAllocImpl, VmpPMatPrepareImpl,
|
VmpPMatAllocImpl, VmpPMatPrepareImpl,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -23,9 +23,9 @@ where
|
|||||||
+ VecZnxDftAllocImpl<B>
|
+ VecZnxDftAllocImpl<B>
|
||||||
+ VecZnxBigAllocImpl<B>
|
+ VecZnxBigAllocImpl<B>
|
||||||
+ VmpPMatPrepareImpl<B>
|
+ VmpPMatPrepareImpl<B>
|
||||||
+ VecZnxDftFromVecZnxImpl<B>
|
+ DFTImpl<B>
|
||||||
+ VmpApplyImpl<B>
|
+ VmpApplyImpl<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpAImpl<B>
|
+ IDFTTmpAImpl<B>
|
||||||
+ ScratchOwnedAllocImpl<B>
|
+ ScratchOwnedAllocImpl<B>
|
||||||
+ ScratchOwnedBorrowImpl<B>
|
+ ScratchOwnedBorrowImpl<B>
|
||||||
+ VecZnxBigNormalizeImpl<B>,
|
+ VecZnxBigNormalizeImpl<B>,
|
||||||
@@ -86,7 +86,7 @@ where
|
|||||||
|
|
||||||
let mut a_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(a_cols, a_size);
|
let mut a_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(a_cols, a_size);
|
||||||
(0..a_cols).for_each(|i| {
|
(0..a_cols).for_each(|i| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut a_dft, i, &a, i);
|
module.dft(1, 0, &mut a_dft, i, &a, i);
|
||||||
});
|
});
|
||||||
|
|
||||||
module.vmp_apply(&mut c_dft, &a_dft, &vmp, scratch.borrow());
|
module.vmp_apply(&mut c_dft, &a_dft, &vmp, scratch.borrow());
|
||||||
@@ -95,7 +95,7 @@ where
|
|||||||
|
|
||||||
let mut res_have: VecZnx<Vec<u8>> = VecZnx::alloc(n, res_cols, res_size);
|
let mut res_have: VecZnx<Vec<u8>> = VecZnx::alloc(n, res_cols, res_size);
|
||||||
(0..mat_cols_out).for_each(|i| {
|
(0..mat_cols_out).for_each(|i| {
|
||||||
module.vec_znx_dft_to_vec_znx_big_tmp_a(&mut c_big, i, &mut c_dft, i);
|
module.idft_tmp_a(&mut c_big, i, &mut c_dft, i);
|
||||||
module.vec_znx_big_normalize(basek, &mut res_have, i, &c_big, i, scratch.borrow());
|
module.vec_znx_big_normalize(basek, &mut res_have, i, &c_big, i, scratch.borrow());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
use itertools::izip;
|
use itertools::izip;
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApply, SvpPPolAllocBytes, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, TakeVecZnxDftSlice,
|
DFT, IDFT, IDFTConsume, ScratchAvailable, SvpApply, SvpPPolAllocBytes, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft,
|
||||||
TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
TakeVecZnxDftSlice, TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftFromVecZnx,
|
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace,
|
||||||
VecZnxDftSubABInplace, VecZnxDftToVecZnxBig, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpBytes, VecZnxDftZero,
|
VecZnxDftZero, VecZnxIDFTTmpBytes, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate,
|
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -36,7 +35,7 @@ where
|
|||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes,
|
+ VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
let brk_size: usize = k_brk.div_ceil(basek);
|
let brk_size: usize = k_brk.div_ceil(basek);
|
||||||
@@ -59,7 +58,7 @@ where
|
|||||||
+ acc_dft_add
|
+ acc_dft_add
|
||||||
+ vmp_res
|
+ vmp_res
|
||||||
+ vmp_xai
|
+ vmp_xai
|
||||||
+ (vmp | (acc_big + (module.vec_znx_big_normalize_tmp_bytes() | module.vec_znx_dft_to_vec_znx_big_tmp_bytes())))
|
+ (vmp | (acc_big + (module.vec_znx_big_normalize_tmp_bytes() | module.vec_znx_idft_tmp_bytes())))
|
||||||
} else {
|
} else {
|
||||||
GLWECiphertext::bytes_of(module.n(), basek, k_res, rank)
|
GLWECiphertext::bytes_of(module.n(), basek, k_res, rank)
|
||||||
+ GLWECiphertext::external_product_scratch_space(module, basek, k_res, k_res, k_brk, 1, rank)
|
+ GLWECiphertext::external_product_scratch_space(module, basek, k_res, k_res, k_brk, 1, rank)
|
||||||
@@ -73,11 +72,11 @@ where
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ VecZnxDftToVecZnxBig<B>
|
+ IDFT<B>
|
||||||
+ VecZnxDftAdd<B>
|
+ VecZnxDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftZero<B>
|
+ VecZnxDftZero<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftSubABInplace<B>
|
+ VecZnxDftSubABInplace<B>
|
||||||
@@ -91,7 +90,7 @@ where
|
|||||||
+ VecZnxMulXpMinusOneInplace
|
+ VecZnxMulXpMinusOneInplace
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes,
|
+ VecZnxNormalizeTmpBytes,
|
||||||
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + TakeVecZnx + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + TakeVecZnx + ScratchAvailable,
|
||||||
@@ -135,11 +134,11 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ VecZnxDftToVecZnxBig<B>
|
+ IDFT<B>
|
||||||
+ VecZnxDftAdd<B>
|
+ VecZnxDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftZero<B>
|
+ VecZnxDftZero<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftSubABInplace<B>
|
+ VecZnxDftSubABInplace<B>
|
||||||
@@ -208,7 +207,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
.for_each(|(ai, ski)| {
|
.for_each(|(ai, ski)| {
|
||||||
(0..extension_factor).for_each(|i| {
|
(0..extension_factor).for_each(|i| {
|
||||||
(0..cols).for_each(|j| {
|
(0..cols).for_each(|j| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut acc_dft[i], j, &acc[i], j);
|
module.dft(1, 0, &mut acc_dft[i], j, &acc[i], j);
|
||||||
});
|
});
|
||||||
module.vec_znx_dft_zero(&mut acc_add_dft[i])
|
module.vec_znx_dft_zero(&mut acc_add_dft[i])
|
||||||
});
|
});
|
||||||
@@ -273,7 +272,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
|
|
||||||
(0..extension_factor).for_each(|j| {
|
(0..extension_factor).for_each(|j| {
|
||||||
(0..cols).for_each(|i| {
|
(0..cols).for_each(|i| {
|
||||||
module.vec_znx_dft_to_vec_znx_big(&mut acc_add_big, 0, &acc_add_dft[j], i, scratch7);
|
module.idft(&mut acc_add_big, 0, &acc_add_dft[j], i, scratch7);
|
||||||
module.vec_znx_big_add_small_inplace(&mut acc_add_big, 0, &acc[j], i);
|
module.vec_znx_big_add_small_inplace(&mut acc_add_big, 0, &acc[j], i);
|
||||||
module.vec_znx_big_normalize(basek, &mut acc[j], i, &acc_add_big, 0, scratch7);
|
module.vec_znx_big_normalize(basek, &mut acc[j], i, &acc_add_big, 0, scratch7);
|
||||||
});
|
});
|
||||||
@@ -302,11 +301,11 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ VecZnxDftToVecZnxBig<B>
|
+ IDFT<B>
|
||||||
+ VecZnxDftAdd<B>
|
+ VecZnxDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftZero<B>
|
+ VecZnxDftZero<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftSubABInplace<B>
|
+ VecZnxDftSubABInplace<B>
|
||||||
@@ -369,7 +368,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
)
|
)
|
||||||
.for_each(|(ai, ski)| {
|
.for_each(|(ai, ski)| {
|
||||||
(0..cols).for_each(|j| {
|
(0..cols).for_each(|j| {
|
||||||
module.vec_znx_dft_from_vec_znx(1, 0, &mut acc_dft, j, &out_mut.data, j);
|
module.dft(1, 0, &mut acc_dft, j, &out_mut.data, j);
|
||||||
});
|
});
|
||||||
|
|
||||||
module.vec_znx_dft_zero(&mut acc_add_dft);
|
module.vec_znx_dft_zero(&mut acc_add_dft);
|
||||||
@@ -392,7 +391,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
let (mut acc_add_big, scratch5) = scratch4.take_vec_znx_big(n_glwe, 1, brk.size());
|
let (mut acc_add_big, scratch5) = scratch4.take_vec_znx_big(n_glwe, 1, brk.size());
|
||||||
|
|
||||||
(0..cols).for_each(|i| {
|
(0..cols).for_each(|i| {
|
||||||
module.vec_znx_dft_to_vec_znx_big(&mut acc_add_big, 0, &acc_add_dft, i, scratch5);
|
module.idft(&mut acc_add_big, 0, &acc_add_dft, i, scratch5);
|
||||||
module.vec_znx_big_add_small_inplace(&mut acc_add_big, 0, &out_mut.data, i);
|
module.vec_znx_big_add_small_inplace(&mut acc_add_big, 0, &out_mut.data, i);
|
||||||
module.vec_znx_big_normalize(basek, &mut out_mut.data, i, &acc_add_big, 0, scratch5);
|
module.vec_znx_big_normalize(basek, &mut out_mut.data, i, &acc_add_big, 0, scratch5);
|
||||||
});
|
});
|
||||||
@@ -416,11 +415,11 @@ fn execute_standard<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ VecZnxDftToVecZnxBig<B>
|
+ IDFT<B>
|
||||||
+ VecZnxDftAdd<B>
|
+ VecZnxDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftZero<B>
|
+ VecZnxDftZero<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftSubABInplace<B>
|
+ VecZnxDftSubABInplace<B>
|
||||||
@@ -434,7 +433,7 @@ fn execute_standard<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ VecZnxMulXpMinusOneInplace
|
+ VecZnxMulXpMinusOneInplace
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes,
|
+ VecZnxNormalizeTmpBytes,
|
||||||
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
|
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace,
|
DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform,
|
VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VmpPMatAlloc,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VmpPMatAlloc, VmpPrepare,
|
||||||
VmpPrepare,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, ScalarZnxToRef, Scratch, ZnxView, ZnxViewMut},
|
layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, ScalarZnxToRef, Scratch, ZnxView, ZnxViewMut},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -51,9 +50,9 @@ where
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
@@ -163,9 +162,9 @@ impl<D: DataMut> BlindRotationKeyCompressed<D, CGGI> {
|
|||||||
Module<B>: VecZnxAddScalarInplace
|
Module<B>: VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd,
|
||||||
VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftSubABInplace, VecZnxDftToVecZnxBig, VecZnxDftToVecZnxBigConsume,
|
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxDftZero, VecZnxFillUniform, VecZnxIDFTTmpBytes,
|
||||||
VecZnxDftToVecZnxBigTmpBytes, VecZnxDftZero, VecZnxFillUniform, VecZnxMulXpMinusOneInplace, VecZnxNormalize,
|
VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform,
|
VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
||||||
ZnNormalizeInplace,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -34,11 +33,11 @@ where
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ VecZnxDftToVecZnxBig<B>
|
+ IDFT<B>
|
||||||
+ VecZnxDftAdd<B>
|
+ VecZnxDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftZero<B>
|
+ VecZnxDftZero<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxDftSubABInplace<B>
|
+ VecZnxDftSubABInplace<B>
|
||||||
@@ -53,7 +52,7 @@ where
|
|||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, TakeMatZnx, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, TakeVecZnxDftSlice, TakeVecZnxSlice,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeMatZnx, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, TakeVecZnxDftSlice,
|
||||||
VecZnxAddInplace, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace,
|
TakeVecZnxSlice, VecZnxAddInplace, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAddInplace,
|
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
||||||
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA,
|
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNegateInplace, VecZnxNormalizeInplace,
|
||||||
VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace,
|
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep},
|
||||||
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl},
|
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl},
|
||||||
@@ -33,7 +33,7 @@ where
|
|||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxSub
|
+ VecZnxSub
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
+ VecZnxNegateInplace
|
+ VecZnxNegateInplace
|
||||||
@@ -44,8 +44,8 @@ where
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -131,7 +131,7 @@ pub fn circuit_bootstrap_core<DRes, DLwe, DBrk, BRA: BlindRotationAlgo, B>(
|
|||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxSub
|
+ VecZnxSub
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
+ VecZnxNegateInplace
|
+ VecZnxNegateInplace
|
||||||
@@ -142,8 +142,8 @@ pub fn circuit_bootstrap_core<DRes, DLwe, DBrk, BRA: BlindRotationAlgo, B>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -256,7 +256,7 @@ fn post_process<DataRes, DataA, B: Backend>(
|
|||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxSub
|
+ VecZnxSub
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
+ VecZnxNegateInplace
|
+ VecZnxNegateInplace
|
||||||
@@ -267,8 +267,8 @@ fn post_process<DataRes, DataA, B: Backend>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -328,7 +328,7 @@ pub fn pack<D: DataMut, B: Backend>(
|
|||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxSub
|
+ VecZnxSub
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
+ VecZnxNegateInplace
|
+ VecZnxNegateInplace
|
||||||
@@ -339,8 +339,8 @@ pub fn pack<D: DataMut, B: Backend>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -407,7 +407,7 @@ fn combine<A: DataMut, D: DataMut, DataAK: DataRef, B: Backend>(
|
|||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
+ VecZnxRshInplace
|
+ VecZnxRshInplace
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxSub
|
+ VecZnxSub
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
+ VecZnxNegateInplace
|
+ VecZnxNegateInplace
|
||||||
@@ -418,8 +418,8 @@ fn combine<A: DataMut, D: DataMut, DataAK: DataRef, B: Backend>(
|
|||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApply<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyAdd<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeSvpPPol,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism,
|
TakeScalarZnx, TakeSvpPPol, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal,
|
||||||
VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA,
|
VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpPMatAlloc,
|
||||||
VecZnxSwithcDegree, VmpPMatAlloc, VmpPrepare,
|
VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Data, DataRef, Module, Scratch},
|
layouts::{Backend, Data, DataRef, Module, Scratch},
|
||||||
source::Source,
|
source::Source,
|
||||||
@@ -52,13 +52,13 @@ impl<BRA: BlindRotationAlgo, B: Backend> CircuitBootstrappingKeyEncryptSk<B> for
|
|||||||
where
|
where
|
||||||
BlindRotationKey<Vec<u8>, BRA>: BlindRotationKeyAlloc + BlindRotationKeyEncryptSk<B>,
|
BlindRotationKey<Vec<u8>, BRA>: BlindRotationKeyAlloc + BlindRotationKeyEncryptSk<B>,
|
||||||
Module<B>: SvpApply<B>
|
Module<B>: SvpApply<B>
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
|
|||||||
@@ -2,15 +2,14 @@ use std::time::Instant;
|
|||||||
|
|
||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism,
|
||||||
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace,
|
VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAddInplace,
|
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
||||||
VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume,
|
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNegateInplace,
|
||||||
VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform,
|
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
||||||
ZnNormalizeInplace,
|
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -44,9 +43,9 @@ where
|
|||||||
+ VecZnxNormalizeInplace<B>
|
+ VecZnxNormalizeInplace<B>
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -56,7 +55,7 @@ where
|
|||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -225,9 +224,9 @@ where
|
|||||||
+ VecZnxNormalizeInplace<B>
|
+ VecZnxNormalizeInplace<B>
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxDftFromVecZnx<B>
|
+ DFT<B>
|
||||||
+ SvpApplyInplace<B>
|
+ SvpApplyInplace<B>
|
||||||
+ VecZnxDftToVecZnxBigConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxAddInplace
|
+ VecZnxAddInplace
|
||||||
@@ -237,7 +236,7 @@ where
|
|||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxDftToVecZnxBigTmpA<B>
|
+ IDFTTmpA<B>
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
Reference in New Issue
Block a user