Merge branch 'dev_cleanup'
jump to
@@ -2,11 +2,11 @@ use itertools::izip;
use poulpy_backend::cpu_spqlios::FFT64; use poulpy_hal::{ api::{ - ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPrepare, VecZnxAddNormal, - VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, - VecZnxDftAlloc, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalizeInplace, ZnxInfos, + DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPrepare, + VecZnxAddNormal, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, + VecZnxBigSubSmallBInplace, VecZnxDftAlloc, VecZnxFillUniform, VecZnxNormalizeInplace, }, - layouts::{Module, ScalarZnx, ScratchOwned, SvpPPol, VecZnx, VecZnxBig, VecZnxDft}, + layouts::{Module, ScalarZnx, ScratchOwned, SvpPPol, VecZnx, VecZnxBig, VecZnxDft, ZnxInfos}, source::Source, };@@ -45,7 +45,7 @@ module.vec_znx_fill_uniform(basek, &mut ct, 1, ct_size * basek, &mut source);
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) module.svp_apply_inplace(@@ -59,7 +59,7 @@ // Alias scratch space (VecZnxDft<B> is always at least as big as VecZnxBig<B>)
// 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); - 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 let mut m = VecZnx::alloc(@@ -109,7 +109,7 @@
// Decryption // 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( &mut buf_dft, 0, // Selects the first column of res.@@ -118,7 +118,7 @@ 0,
); // 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] module.vec_znx_big_add_small_inplace(&mut buf_big, 0, &ct, 0);
@@ -1,8 +1,7 @@
use poulpy_hal::{ - api::{ZnxInfos, ZnxView, ZnxViewMut}, layouts::{ Backend, Module, ScalarZnxToRef, SvpPPol, SvpPPolOwned, SvpPPolToMut, SvpPPolToRef, VecZnxDft, VecZnxDftToMut, - VecZnxDftToRef, + VecZnxDftToRef, ZnxInfos, ZnxView, ZnxViewMut, }, oep::{SvpApplyImpl, SvpApplyInplaceImpl, SvpPPolAllocBytesImpl, SvpPPolAllocImpl, SvpPPolFromBytesImpl, SvpPrepareImpl}, };
@@ -4,9 +4,12 @@
use poulpy_hal::{ api::{ TakeSlice, TakeVecZnx, VecZnxAddDistF64, VecZnxCopy, VecZnxFillDistF64, VecZnxNormalizeTmpBytes, VecZnxRotate, - VecZnxRotateInplace, VecZnxSwithcDegree, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, + VecZnxRotateInplace, VecZnxSwithcDegree, + }, + layouts::{ + Backend, Module, ScalarZnx, ScalarZnxToRef, Scratch, VecZnx, VecZnxToMut, VecZnxToRef, ZnxInfos, ZnxSliceSize, ZnxView, + ZnxViewMut, ZnxZero, }, - layouts::{Backend, Module, ScalarZnx, ScalarZnxToRef, Scratch, VecZnx, VecZnxToMut, VecZnxToRef}, oep::{ TakeSliceImpl, TakeVecZnxImpl, VecZnxAddDistF64Impl, VecZnxAddImpl, VecZnxAddInplaceImpl, VecZnxAddNormalImpl, VecZnxAddScalarInplaceImpl, VecZnxAutomorphismImpl, VecZnxAutomorphismInplaceImpl, VecZnxCopyImpl, VecZnxFillDistF64Impl,
@@ -2,12 +2,10 @@ use rand_distr::{Distribution, Normal};
use crate::cpu_spqlios::{FFT64, ffi::vec_znx}; use poulpy_hal::{ - api::{ - TakeSlice, VecZnxBigAddDistF64, VecZnxBigFillDistF64, VecZnxBigNormalizeTmpBytes, ZnxInfos, ZnxSliceSize, ZnxView, - ZnxViewMut, - }, + api::{TakeSlice, VecZnxBigAddDistF64, VecZnxBigFillDistF64, VecZnxBigNormalizeTmpBytes}, layouts::{ Backend, Module, Scratch, VecZnx, VecZnxBig, VecZnxBigOwned, VecZnxBigToMut, VecZnxBigToRef, VecZnxToMut, VecZnxToRef, + ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, }, oep::{ TakeSliceImpl, VecZnxBigAddDistF64Impl, VecZnxBigAddImpl, VecZnxBigAddInplaceImpl, VecZnxBigAddNormalImpl,
@@ -1,14 +1,13 @@
use poulpy_hal::{ - api::{TakeSlice, VecZnxDftToVecZnxBigTmpBytes, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, + api::{TakeSlice, VecZnxIDFTTmpBytes}, layouts::{ Backend, Data, Module, Scratch, VecZnx, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, - VecZnxDftToRef, VecZnxToRef, + VecZnxDftToRef, VecZnxToRef, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, }, oep::{ - VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl, VecZnxDftAllocImpl, VecZnxDftCopyImpl, - VecZnxDftFromBytesImpl, VecZnxDftFromVecZnxImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl, VecZnxDftSubImpl, - VecZnxDftToVecZnxBigConsumeImpl, VecZnxDftToVecZnxBigImpl, VecZnxDftToVecZnxBigTmpAImpl, - VecZnxDftToVecZnxBigTmpBytesImpl, VecZnxDftZeroImpl, + DFTImpl, IDFTConsumeImpl, IDFTImpl, IDFTTmpAImpl, VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl, + VecZnxDftAllocImpl, VecZnxDftCopyImpl, VecZnxDftFromBytesImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl, + VecZnxDftSubImpl, VecZnxDftZeroImpl, VecZnxIDFTTmpBytesImpl, }, };@@ -35,21 +34,15 @@ VecZnxDftOwned::alloc(n, cols, size)
} } -unsafe impl VecZnxDftToVecZnxBigTmpBytesImpl<Self> for FFT64 { - fn vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(module: &Module<Self>) -> usize { +unsafe impl VecZnxIDFTTmpBytesImpl<Self> for FFT64 { + 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 impl VecZnxDftToVecZnxBigImpl<Self> for FFT64 { - fn vec_znx_dft_to_vec_znx_big_impl<R, A>( - module: &Module<Self>, - res: &mut R, - res_col: usize, - a: &A, - a_col: usize, - scratch: &mut Scratch<Self>, - ) where +unsafe impl IDFTImpl<Self> for FFT64 { + fn idft_impl<R, A>(module: &Module<Self>, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<Self>) + where R: VecZnxBigToMut<Self>, A: VecZnxDftToRef<Self>, {@@ -61,7 +54,7 @@ {
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());@@ -83,8 +76,8 @@ }
} } -unsafe impl VecZnxDftToVecZnxBigTmpAImpl<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) +unsafe impl IDFTTmpAImpl<Self> for FFT64 { + fn idft_tmp_a_impl<R, A>(module: &Module<Self>, res: &mut R, res_col: usize, a: &mut A, a_col: usize) where R: VecZnxBigToMut<Self>, A: VecZnxDftToMut<Self>,@@ -111,8 +104,8 @@ }
} } -unsafe impl VecZnxDftToVecZnxBigConsumeImpl<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> +unsafe impl IDFTConsumeImpl<Self> for FFT64 { + fn idft_consume_impl<D: Data>(module: &Module<Self>, mut a: VecZnxDft<D, FFT64>) -> VecZnxBig<D, FFT64> where VecZnxDft<D, FFT64>: VecZnxDftToMut<Self>, {@@ -137,16 +130,9 @@ a.into_big()
} } -unsafe impl VecZnxDftFromVecZnxImpl<Self> for FFT64 { - fn vec_znx_dft_from_vec_znx_impl<R, A>( - module: &Module<Self>, - step: usize, - offset: usize, - res: &mut R, - res_col: usize, - a: &A, - a_col: usize, - ) where +unsafe impl DFTImpl<Self> for FFT64 { + fn dft_impl<R, A>(module: &Module<Self>, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize) + where R: VecZnxDftToMut<Self>, A: VecZnxToRef, {
@@ -1,12 +1,12 @@
use poulpy_hal::{ - api::{TakeSlice, VmpApplyTmpBytes, VmpPrepareTmpBytes, ZnxInfos, ZnxView, ZnxViewMut}, + api::{TakeSlice, VmpApplyDftToDftTmpBytes, VmpPrepareTmpBytes}, layouts::{ Backend, MatZnx, MatZnxToRef, Module, Scratch, VecZnxDft, VecZnxDftToMut, VecZnxDftToRef, VmpPMat, VmpPMatOwned, - VmpPMatToMut, VmpPMatToRef, + VmpPMatToMut, VmpPMatToRef, ZnxInfos, ZnxView, ZnxViewMut, }, oep::{ - VmpApplyAddImpl, VmpApplyAddTmpBytesImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, - VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl, + VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl, VmpApplyDftToDftTmpBytesImpl, + VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl, }, };@@ -109,8 +109,8 @@ }
} } -unsafe impl VmpApplyTmpBytesImpl<FFT64> for FFT64 { - fn vmp_apply_tmp_bytes_impl( +unsafe impl VmpApplyDftToDftTmpBytesImpl<FFT64> for FFT64 { + fn vmp_apply_dft_to_dft_tmp_bytes_impl( module: &Module<FFT64>, res_size: usize, a_size: usize,@@ -131,8 +131,8 @@ }
} } -unsafe impl VmpApplyImpl<FFT64> for FFT64 { - fn vmp_apply_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<FFT64>) +unsafe impl VmpApplyDftToDftImpl<FFT64> for FFT64 { + fn vmp_apply_dft_to_dft_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<FFT64>) where R: VecZnxDftToMut<FFT64>, A: VecZnxDftToRef<FFT64>,@@ -162,7 +162,7 @@ b.cols_in()
); } - let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_tmp_bytes( + let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_dft_to_dft_tmp_bytes( res.size(), a.size(), b.rows(),@@ -186,8 +186,8 @@ }
} } -unsafe impl VmpApplyAddTmpBytesImpl<FFT64> for FFT64 { - fn vmp_apply_add_tmp_bytes_impl( +unsafe impl VmpApplyDftToDftAddTmpBytesImpl<FFT64> for FFT64 { + fn vmp_apply_dft_to_dft_add_tmp_bytes_impl( module: &Module<FFT64>, res_size: usize, a_size: usize,@@ -208,9 +208,15 @@ }
} } -unsafe impl VmpApplyAddImpl<FFT64> for FFT64 { - fn vmp_apply_add_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<FFT64>) - where +unsafe impl VmpApplyDftToDftAddImpl<FFT64> for FFT64 { + fn vmp_apply_dft_to_dft_add_impl<R, A, C>( + module: &Module<FFT64>, + res: &mut R, + a: &A, + b: &C, + scale: usize, + scratch: &mut Scratch<FFT64>, + ) where R: VecZnxDftToMut<FFT64>, A: VecZnxDftToRef<FFT64>, C: VmpPMatToRef<FFT64>,@@ -239,7 +245,7 @@ b.cols_in()
); } - let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_tmp_bytes( + let (tmp_bytes, _) = scratch.take_slice(module.vmp_apply_dft_to_dft_tmp_bytes( res.size(), a.size(), b.rows(),
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{TakeSlice, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut}, - layouts::{Scratch, Zn, ZnToMut}, + api::TakeSlice, + layouts::{Scratch, Zn, ZnToMut, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut}, oep::{ TakeSliceImpl, ZnAddDistF64Impl, ZnAddNormalImpl, ZnFillDistF64Impl, ZnFillNormalImpl, ZnFillUniformImpl, ZnNormalizeInplaceImpl,
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace, + VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, + VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, }; use crate::layouts::{GGLWEAutomorphismKey, GLWECiphertext, Infos, prepared::GGLWEAutomorphismKeyPrepared};@@ -21,7 +21,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank) }@@ -35,7 +35,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GGLWEAutomorphismKey::automorphism_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank) }@@ -50,12 +50,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphism@@ -134,12 +134,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphism
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxNormalizeTmpBytes, VmpApply, - VmpApplyAdd, VmpApplyTmpBytes, + DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace, + VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace, + VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, };@@ -27,8 +27,11 @@ digits_tsk: usize,
rank: usize, ) -> usize where - Module<B>: - VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + + VmpApplyDftToDftTmpBytes + + VecZnxBigAllocBytes + + VecZnxNormalizeTmpBytes + + VecZnxBigNormalizeTmpBytes, { let out_size: usize = k_out.div_ceil(basek); let ci_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, out_size);@@ -50,8 +53,11 @@ digits_tsk: usize,
rank: usize, ) -> usize where - Module<B>: - VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + + VmpApplyDftToDftTmpBytes + + VecZnxBigAllocBytes + + VecZnxNormalizeTmpBytes + + VecZnxBigNormalizeTmpBytes, { GGSWCiphertext::automorphism_scratch_space( module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,@@ -69,12 +75,12 @@ tensor_key: &GGLWETensorKeyPrepared<DataTsk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace@@ -82,7 +88,7 @@ + VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnxBig<B>, { #[cfg(debug_assertions)]@@ -139,12 +145,12 @@ tensor_key: &GGLWETensorKeyPrepared<DataTsk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace@@ -152,7 +158,7 @@ + VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnxBig<B>, { unsafe {@@ -169,12 +175,12 @@ auto_key: &GGLWEAutomorphismKeyPrepared<DataAk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace,
@@ -1,8 +1,8 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace, VecZnxBigSubSmallBInplace, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, + VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace, + VecZnxBigSubSmallBInplace, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig}, };@@ -21,7 +21,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { Self::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank) }@@ -35,7 +35,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { Self::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank) }@@ -50,12 +50,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace,@@ -74,12 +74,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace,@@ -99,12 +99,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>,@@ -130,12 +130,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>,@@ -155,12 +155,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>@@ -187,12 +187,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>@@ -213,12 +213,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>@@ -245,12 +245,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>
@@ -1,10 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxView, - ZnxViewMut, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, }; use crate::{@@ -22,7 +21,7 @@ k_ksk: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1) + GLWECiphertext::keyswitch_scratch_space(module, basek, k_lwe, k_glwe, k_ksk, 1, rank, 1)@@ -57,12 +56,12 @@ ) where
DGlwe: DataRef, DKs: DataRef, Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeGLWECt,
@@ -1,10 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxView, - ZnxViewMut, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, }; use crate::{@@ -22,7 +21,7 @@ k_ksk: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GLWECiphertext::keyswitch_scratch_space(module, basek, k_glwe, k_lwe, k_ksk, 1, 1, rank) + GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)@@ -40,12 +39,12 @@ ) where
DLwe: DataRef, DKsk: DataRef, Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeGLWECt,
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - DataViewMut, SvpApplyInplace, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, + DFT, IDFTConsume, SvpApplyInplace, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch}, }; use crate::layouts::{GLWECiphertext, GLWEPlaintext, Infos, prepared::GLWESecretPrepared};@@ -26,9 +26,9 @@ pt: &mut GLWEPlaintext<DataPt>,
sk: &GLWESecretPrepared<DataSk, B>, scratch: &mut Scratch<B>, ) where - Module<B>: VecZnxDftFromVecZnx<B> + Module<B>: DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>,@@ -50,9 +50,9 @@ {
(1..cols).for_each(|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 - 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); - 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] module.vec_znx_big_add_inplace(&mut c0_big, 0, &ci_big, 0);
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{ScratchOwnedAlloc, ScratchOwnedBorrow, ZnNormalizeInplace, ZnxView, ZnxViewMut}, - layouts::{Backend, DataMut, DataRef, Module, ScratchOwned}, + api::{ScratchOwnedAlloc, ScratchOwnedBorrow, ZnNormalizeInplace}, + layouts::{Backend, DataMut, DataRef, Module, ScratchOwned, ZnxView, ZnxViewMut}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl}, };
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, VecZnxDftAllocBytes, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, - VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, source::Source,@@ -44,9 +44,9 @@ + SvpPPolAllocBytes
+ VecZnxSwithcDegree + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero}, source::Source, };@@ -37,9 +37,9 @@ ) where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -52,7 +52,7 @@ Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
{ #[cfg(debug_assertions)] { - use poulpy_hal::api::ZnxInfos; + use poulpy_hal::layouts::ZnxInfos; assert_eq!( self.rank_in(),
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, - VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, + VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + VecZnxSwithcDegree, }, layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch}, source::Source,@@ -47,9 +47,9 @@ + SvpPPolAllocBytes
+ VecZnxSwithcDegree + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,10 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, - TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, - VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, + DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + TakeScalarZnx, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, source::Source,@@ -35,12 +34,12 @@ source_xe: &mut Source,
scratch: &mut Scratch<B>, ) where Module<B>: SvpApply<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -77,7 +76,7 @@
let (mut sk_dft, scratch2) = scratch1.take_vec_znx_dft(n, rank, 1); (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);@@ -90,7 +89,7 @@ (0..rank).for_each(|i| {
(i..rank).for_each(|j| { 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( self.basek(), &mut sk_ij.data.as_vec_znx_mut(),
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero}, source::Source, };@@ -37,9 +37,9 @@ ) where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -52,7 +52,7 @@ Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
{ #[cfg(debug_assertions)] { - use poulpy_hal::api::ZnxInfos; + use poulpy_hal::layouts::ZnxInfos; assert_eq!(self.rank(), sk.rank()); assert_eq!(self.n(), sk.n());
@@ -1,8 +1,8 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, source::Source,@@ -35,9 +35,9 @@ scratch: &mut Scratch<B>,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -63,9 +63,9 @@ scratch: &mut Scratch<B>,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, VecZnxDftAllocBytes, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, - VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, source::Source,@@ -41,9 +41,9 @@ ) where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, ZnxZero}, source::Source, };@@ -41,9 +41,9 @@ ) where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -56,7 +56,7 @@ Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
{ #[cfg(debug_assertions)] { - use poulpy_hal::api::ZnxInfos; + use poulpy_hal::layouts::ZnxInfos; assert_eq!( self.rank_in(),
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, - VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, + VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + VecZnxSwithcDegree, }, layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch}, source::Source,@@ -55,9 +55,9 @@ ) where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxBig, - TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, + DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, + TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAllocBytes, + VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, source::Source,@@ -42,13 +42,13 @@ source_xe: &mut Source,
scratch: &mut Scratch<B>, ) where Module<B>: SvpApply<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -79,7 +79,7 @@
let (mut sk_dft, scratch2) = scratch1.take_vec_znx_dft(n, rank, 1); (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);@@ -90,7 +90,7 @@ (0..rank).for_each(|i| {
(i..rank).for_each(|j| { 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( self.basek(), &mut sk_ij.data.as_vec_znx_mut(),
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx}, + layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, ZnxZero}, source::Source, };@@ -40,9 +40,9 @@ ) where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -55,7 +55,7 @@ Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
{ #[cfg(debug_assertions)] { - use poulpy_hal::api::ZnxInfos; + use poulpy_hal::layouts::ZnxInfos; assert_eq!(self.rank(), sk.rank()); assert_eq!(self.n(), sk.n());
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeSvpPPol, TakeVecZnx, - TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddNormal, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, ZnxInfos, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeSvpPPol, + TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddNormal, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, VecZnxBig}, + layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, Scratch, VecZnx, VecZnxBig, ZnxInfos, ZnxZero}, source::Source, };@@ -53,9 +53,9 @@ scratch: &mut Scratch<B>,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -92,9 +92,9 @@ scratch: &mut Scratch<B>,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -138,9 +138,9 @@ scratch: &mut Scratch<B>,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -180,7 +180,7 @@ scratch: &mut Scratch<B>,
) where Module<B>: SvpPrepare<B> + SvpApply<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddNormal<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>,@@ -199,7 +199,7 @@ scratch: &mut Scratch<B>,
) where Module<B>: SvpPrepare<B> + SvpApply<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddNormal<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>,@@ -227,7 +227,7 @@ scratch: &mut Scratch<B>,
) where Module<B>: SvpPrepare<B> + SvpApply<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddNormal<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>,@@ -276,7 +276,7 @@ // ci_dft = DFT(u) * DFT(pk[i])
module.svp_apply(&mut ci_dft, 0, &u_dft, 0, &pk.data, 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 module.vec_znx_big_add_normal(basek, &mut ci_big, 0, pk.k(), source_xe, SIGMA, SIGMA_BOUND);@@ -311,9 +311,9 @@ scratch: &mut Scratch<B>,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -327,8 +327,6 @@ {
#[cfg(debug_assertions)] { if compressed { - use poulpy_hal::api::ZnxInfos; - assert_eq!( ct.cols(), 1,@@ -363,16 +361,16 @@ if let Some((pt, col)) = pt {
if i == col { 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_dft_from_vec_znx(1, 0, &mut ci_dft, 0, &ci, 0); + module.dft(1, 0, &mut ci_dft, 0, &ci, 0); } 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 { - 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); - 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 module.vec_znx_big_normalize(basek, &mut ci, 0, &ci_big, 0, scratch_3);
@@ -1,8 +1,8 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddInplace, VecZnxAddNormal, + VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, layouts::{Backend, DataMut, DataRef, Module, ScratchOwned}, oep::{ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxDftImpl, TakeVecZnxImpl},@@ -22,9 +22,9 @@ ) where
Module<B>:, Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,12 +1,11 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, ZnxView, ZnxViewMut, - ZnxZero, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, source::Source, };@@ -43,9 +42,9 @@ Module<B>: VecZnxAutomorphismInplace
+ VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{ScratchOwnedAlloc, ScratchOwnedBorrow, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, ZnxView, ZnxViewMut}, - layouts::{Backend, DataMut, DataRef, Module, ScratchOwned, Zn}, + api::{ScratchOwnedAlloc, ScratchOwnedBorrow, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace}, + layouts::{Backend, DataMut, DataRef, Module, ScratchOwned, Zn, ZnxView, ZnxViewMut}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl}, source::Source, };
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, ZnxView, ZnxViewMut, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut}, source::Source, };@@ -42,9 +42,9 @@ Module<B>: VecZnxAutomorphismInplace
+ VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, TakeVecZnxDft, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, ZnxView, ZnxViewMut, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeVecZnx, + TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigNormalize, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut}, source::Source, };@@ -40,9 +40,9 @@ Module<B>: VecZnxAutomorphismInplace
+ VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,7 +1,7 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, + VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, };@@ -20,7 +20,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { GGLWESwitchingKey::external_product_scratch_space(module, basek, k_out, k_in, ggsw_k, digits, rank) }@@ -34,7 +34,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { GGLWESwitchingKey::external_product_inplace_scratch_space(module, basek, k_out, ggsw_k, digits, rank) }@@ -49,12 +49,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {@@ -68,12 +68,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, + VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, }; use crate::layouts::{GGLWESwitchingKey, GLWECiphertext, Infos, prepared::GGSWCiphertextPrepared};@@ -20,7 +20,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank) }@@ -34,7 +34,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank) }@@ -49,12 +49,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {@@ -104,12 +104,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, + VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, }; use crate::layouts::{GGSWCiphertext, GLWECiphertext, Infos, prepared::GGSWCiphertextPrepared};@@ -20,7 +20,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank) }@@ -34,7 +34,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank) }@@ -49,12 +49,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {@@ -114,12 +114,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - DataViewMut, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, + VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig}, + layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig}, }; use crate::layouts::{GLWECiphertext, Infos, prepared::GGSWCiphertextPrepared};@@ -20,14 +20,14 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { let in_size: usize = k_in.div_ceil(basek).div_ceil(digits); let out_size: usize = k_out.div_ceil(basek); let ggsw_size: usize = k_ggsw.div_ceil(basek); let res_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, ggsw_size); let a_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, in_size); - let vmp: usize = module.vmp_apply_tmp_bytes( + let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes( out_size, in_size, in_size, // rows@@ -48,7 +48,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes, { Self::external_product_scratch_space(module, basek, k_out, k_out, k_ggsw, digits, rank) }@@ -63,12 +63,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {@@ -121,18 +121,18 @@ // noise is kept with respect to the ideal functionality.
res_dft.set_size(rhs.size() - ((digits - di) as isize - 2).max(0) as usize); (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 { - module.vmp_apply(&mut res_dft, &a_dft, &rhs.data, scratch2); + module.vmp_apply_dft_to_dft(&mut res_dft, &a_dft, &rhs.data, scratch2); } else { - module.vmp_apply_add(&mut res_dft, &a_dft, &rhs.data, di, scratch2); + module.vmp_apply_dft_to_dft_add(&mut res_dft, &a_dft, &rhs.data, di, scratch2); } }); } - 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| { module.vec_znx_big_normalize(basek, &mut self.data, i, &res_big, i, scratch1);@@ -146,12 +146,12 @@ rhs: &GGSWCiphertextPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable, {
@@ -2,11 +2,11 @@ use std::collections::HashMap;
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, - VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxNegateInplace, VecZnxNormalizeInplace, - VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, - VmpApplyTmpBytes, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace, + VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, + VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxRotate, + VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, };@@ -96,7 +96,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { pack_core_scratch_space(module, basek, ct_k, k_ksk, digits, rank) }@@ -122,12 +122,12 @@ auto_keys: &HashMap<i64, GGLWEAutomorphismKeyPrepared<DataAK, B>>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxCopy@@ -186,7 +186,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { combine_scratch_space(module, basek, ct_k, k_ksk, digits, rank) }@@ -200,12 +200,12 @@ auto_keys: &HashMap<i64, GGLWEAutomorphismKeyPrepared<DataAK, B>>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxCopy@@ -280,7 +280,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GLWECiphertext::bytes_of(module.n(), basek, ct_k, rank) + (GLWECiphertext::rsh_scratch_space(module.n())@@ -297,12 +297,12 @@ auto_keys: &HashMap<i64, GGLWEAutomorphismKeyPrepared<DataAK, B>>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxCopy
@@ -2,9 +2,9 @@ use std::collections::HashMap;
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, - VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxRshInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, + VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxRshInplace, VmpApplyDftToDft, + VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, layouts::{Backend, DataMut, DataRef, Module, Scratch}, };@@ -38,7 +38,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { Self::automorphism_inplace_scratch_space(module, basek, out_k.min(in_k), ksk_k, digits, rank) }@@ -52,7 +52,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { Self::automorphism_inplace_scratch_space(module, basek, out_k, ksk_k, digits, rank) }@@ -69,12 +69,12 @@ auto_keys: &HashMap<i64, GGLWEAutomorphismKeyPrepared<DataAK, B>>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>@@ -95,12 +95,12 @@ auto_keys: &HashMap<i64, GGLWEAutomorphismKeyPrepared<DataAK, B>>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxBigAutomorphismInplace<B>
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero}, }; use crate::layouts::{@@ -23,7 +23,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GGLWESwitchingKey::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank) }@@ -37,7 +37,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GGLWESwitchingKey::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank) }@@ -52,12 +52,12 @@ rhs: &GGLWESwitchingKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,@@ -72,12 +72,12 @@ rhs: &GGLWEAutomorphismKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,@@ -99,7 +99,7 @@ rank_in: usize,
rank_out: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank_in, rank_out) }@@ -113,7 +113,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { GLWECiphertext::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank) }@@ -128,12 +128,12 @@ rhs: &GGLWESwitchingKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,@@ -184,12 +184,12 @@ rhs: &GGLWESwitchingKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, - VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, - ZnxInfos, + DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, + VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos}, }; use crate::{@@ -26,7 +26,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes, { let tsk_size: usize = k_tsk.div_ceil(basek); let self_size_out: usize = self_k.div_ceil(basek);@@ -34,7 +34,7 @@ let self_size_in: usize = self_size_out.div_ceil(digits);
let tmp_dft_i: usize = module.vec_znx_dft_alloc_bytes(rank + 1, tsk_size); let tmp_a: usize = module.vec_znx_dft_alloc_bytes(1, self_size_in); - let vmp: usize = module.vmp_apply_tmp_bytes( + let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes( self_size_out, self_size_in, self_size_in,@@ -60,8 +60,11 @@ digits_tsk: usize,
rank: usize, ) -> usize where - Module<B>: - VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + + VmpApplyDftToDftTmpBytes + + VecZnxBigAllocBytes + + VecZnxNormalizeTmpBytes + + VecZnxBigNormalizeTmpBytes, { let out_size: usize = k_out.div_ceil(basek); let res_znx: usize = VecZnx::alloc_bytes(module.n(), rank + 1, out_size);@@ -84,8 +87,11 @@ digits_tsk: usize,
rank: usize, ) -> usize where - Module<B>: - VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + + VmpApplyDftToDftTmpBytes + + VecZnxBigAllocBytes + + VecZnxNormalizeTmpBytes + + VecZnxBigNormalizeTmpBytes, { GGSWCiphertext::keyswitch_scratch_space( module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,@@ -105,16 +111,16 @@ DataA: DataRef,
DataTsk: DataRef, Module<B>: VecZnxCopy + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftCopy<B> - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxDftAddInplace<B> + VecZnxBigNormalize<B> - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>, { #[cfg(debug_assertions)]@@ -140,12 +146,12 @@ tsk: &GGLWETensorKeyPrepared<DataTsk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxDftAllocBytes@@ -153,7 +159,7 @@ + VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>, { self.keyswitch_internal(module, lhs, ksk, scratch);@@ -168,12 +174,12 @@ tsk: &GGLWETensorKeyPrepared<DataTsk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxDftAllocBytes@@ -181,7 +187,7 @@ + VecZnxBigAllocBytes
+ VecZnxNormalizeTmpBytes + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>, { unsafe {@@ -197,16 +203,16 @@ tsk: &GGLWETensorKeyPrepared<DataTsk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftCopy<B> - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxDftAddInplace<B> + VecZnxBigNormalize<B> - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B> + TakeVecZnxBig<B>, { assert!(@@ -230,7 +236,7 @@ (0..self.rows()).for_each(|row_i| {
// Pre-compute DFT of (a0, a1, a2) let (mut ci_dft, scratch1) = scratch.take_vec_znx_dft(n, cols, self.size()); (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| {@@ -289,9 +295,9 @@ tmp_dft_i.set_size(tsk.size() - ((digits - di) as isize - 2).max(0) as usize);
module.vec_znx_dft_copy(digits, digits - 1 - di, &mut tmp_a, 0, &ci_dft, col_i); if di == 0 && col_i == 1 { - module.vmp_apply(&mut tmp_dft_i, &tmp_a, pmat, scratch3); + module.vmp_apply_dft_to_dft(&mut tmp_dft_i, &tmp_a, pmat, scratch3); } else { - module.vmp_apply_add(&mut tmp_dft_i, &tmp_a, pmat, di, scratch3); + module.vmp_apply_dft_to_dft_add(&mut tmp_dft_i, &tmp_a, pmat, di, scratch3); } }); });@@ -309,7 +315,7 @@ // (-(x0s0 + x1s1 + x2s2), x0 + M[i], x1, x2)
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()); (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( self.basek(), &mut self.at_mut(row_i, col_j).data,@@ -331,12 +337,12 @@ ksk: &GGLWESwitchingKeyPrepared<DataKsk, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - DataViewMut, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxInfos, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat}, + layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos}, }; use crate::layouts::{GLWECiphertext, Infos, prepared::GGLWESwitchingKeyPrepared};@@ -21,14 +21,14 @@ rank_in: usize,
rank_out: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { let in_size: usize = k_in.div_ceil(basek).div_ceil(digits); let out_size: usize = k_out.div_ceil(basek); let ksk_size: usize = k_ksk.div_ceil(basek); let res_dft: usize = module.vec_znx_dft_alloc_bytes(rank_out + 1, ksk_size); // TODO OPTIMIZE let ai_dft: usize = module.vec_znx_dft_alloc_bytes(rank_in, in_size); - let vmp: usize = module.vmp_apply_tmp_bytes(out_size, in_size, in_size, rank_in, rank_out + 1, ksk_size) + let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes(out_size, in_size, in_size, rank_in, rank_out + 1, ksk_size) + module.vec_znx_dft_alloc_bytes(rank_in, in_size); let normalize: usize = module.vec_znx_big_normalize_tmp_bytes(); res_dft + ((ai_dft + vmp) | normalize)@@ -43,7 +43,7 @@ digits: usize,
rank: usize, ) -> usize where - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, { Self::keyswitch_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank, rank) }@@ -60,7 +60,7 @@ scratch: &Scratch<B>,
) where DataLhs: DataRef, DataRhs: DataRef, - Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes, + Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes, Scratch<B>: ScratchAvailable, { let basek: usize = self.basek();@@ -128,13 +128,13 @@ rhs: &GGLWESwitchingKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,@@ -157,13 +157,13 @@ rhs: &GGLWESwitchingKeyPrepared<DataRhs, B>,
scratch: &mut Scratch<B>, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: ScratchAvailable + TakeVecZnxDft<B>,@@ -187,13 +187,13 @@ where
DataRes: DataMut, DataKey: DataRef, Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B>,@@ -224,17 +224,16 @@ where
DataRes: DataMut, DataIn: DataRef, DataVmp: DataRef, - Module<B>: - VecZnxDftAllocBytes + VecZnxDftFromVecZnx<B> + VmpApply<B> + VecZnxDftToVecZnxBigConsume<B> + VecZnxBigAddSmallInplace<B>, + Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApplyDftToDft<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>, Scratch<B>: TakeVecZnxDft<B>, { let cols: usize = a.cols(); let (mut ai_dft, scratch1) = scratch.take_vec_znx_dft(a.n(), cols - 1, a.size()); (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); - let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_dft_to_vec_znx_big_consume(res_dft); + module.vmp_apply_dft_to_dft(&mut res_dft, &ai_dft, mat, scratch1); + 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); res_big }@@ -252,10 +251,10 @@ DataRes: DataMut,
DataIn: DataRef, DataVmp: DataRef, Module<B>: VecZnxDftAllocBytes - + VecZnxDftFromVecZnx<B> - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + DFT<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>, Scratch<B>: TakeVecZnxDft<B>, {@@ -278,18 +277,18 @@ // noise is kept with respect to the ideal functionality.
res_dft.set_size(mat.size() - ((digits - di) as isize - 2).max(0) as usize); (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 { - module.vmp_apply(&mut res_dft, &ai_dft, mat, scratch1); + module.vmp_apply_dft_to_dft(&mut res_dft, &ai_dft, mat, scratch1); } else { - module.vmp_apply_add(&mut res_dft, &ai_dft, mat, di, scratch1); + module.vmp_apply_dft_to_dft_add(&mut res_dft, &ai_dft, mat, di, scratch1); } }); 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); res_big }
@@ -1,10 +1,9 @@
use poulpy_hal::{ api::{ - ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxView, - ZnxViewMut, ZnxZero, + DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero}, }; use crate::{@@ -22,13 +21,13 @@ k_ksk: usize,
) -> usize where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, {@@ -48,12 +47,12 @@ ) where
A: DataRef, DKs: DataRef, Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable + TakeVecZnx,
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{FillUniform, Reset, VecZnxCopy, VecZnxFillUniform}, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + api::{VecZnxCopy, VecZnxFillUniform}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{FillUniform, Reset, VecZnxCopy, VecZnxFillUniform}, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + api::{VecZnxCopy, VecZnxFillUniform}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };@@ -201,7 +201,7 @@ {
fn decompress(&mut self, module: &Module<B>, other: &GGLWECiphertextCompressed<DR>) { #[cfg(debug_assertions)] { - use poulpy_hal::api::ZnxInfos; + use poulpy_hal::layouts::ZnxInfos; assert_eq!( self.n(),
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{FillUniform, Reset, VecZnxCopy, VecZnxFillUniform}, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + api::{VecZnxCopy, VecZnxFillUniform}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{FillUniform, Reset, VecZnxCopy, VecZnxFillUniform}, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + api::{VecZnxCopy, VecZnxFillUniform}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{FillUniform, Reset, VecZnxCopy, VecZnxFillUniform}, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + api::{VecZnxCopy, VecZnxFillUniform}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{FillUniform, Reset, VecZnxCopy, VecZnxFillUniform}, - layouts::{Backend, Data, DataMut, DataRef, Module, ReaderFrom, VecZnx, WriterTo}, + api::{VecZnxCopy, VecZnxFillUniform}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, Module, ReaderFrom, Reset, VecZnx, WriterTo}, source::Source, };@@ -118,7 +118,7 @@ {
fn decompress(&mut self, module: &Module<B>, other: &GLWECiphertextCompressed<DR>) { #[cfg(debug_assertions)] { - use poulpy_hal::api::ZnxInfos; + use poulpy_hal::layouts::ZnxInfos; assert_eq!( self.n(),
@@ -1,13 +1,12 @@
use std::fmt; use poulpy_hal::{ - api::{FillUniform, Reset}, api::{ - SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + DFT, IDFTConsume, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, + VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };@@ -97,9 +96,9 @@ pub fn encrypt_sk_scratch_space<B: Backend>(module: &Module<B>, basek: usize, k: usize, rank_in: usize) -> usize
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,8 +1,10 @@
use std::fmt; use poulpy_hal::{ - api::{FillUniform, Reset, ZnFillUniform, ZnxInfos, ZnxView, ZnxViewMut}, - layouts::{Backend, Data, DataMut, DataRef, Module, ReaderFrom, VecZnx, WriterTo}, + api::ZnFillUniform, + layouts::{ + Backend, Data, DataMut, DataRef, FillUniform, Module, ReaderFrom, Reset, VecZnx, WriterTo, ZnxInfos, ZnxView, ZnxViewMut, + }, source::Source, };
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - FillUniform, Reset, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, - VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + DFT, IDFTConsume, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, + VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };@@ -98,9 +98,9 @@ pub fn encrypt_sk_scratch_space<B: Backend>(module: &Module<B>, basek: usize, k: usize) -> usize
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,11 +1,10 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, api::{ - SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigNormalize, - VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + DFT, IDFTConsume, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, + VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, - layouts::{Backend, Data, DataMut, DataRef, MatZnx, Module, ReaderFrom, WriterTo}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, MatZnx, Module, ReaderFrom, Reset, WriterTo}, source::Source, };@@ -99,9 +98,9 @@ pub fn encrypt_sk_scratch_space<B: Backend>(module: &Module<B>, basek: usize, k: usize, rank_out: usize) -> usize
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, }; use std::fmt;
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, ReaderFrom, ToOwnedDeep, VecZnx, VecZnxToMut, VecZnxToRef, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, ReaderFrom, Reset, ToOwnedDeep, VecZnx, VecZnxToMut, VecZnxToRef, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{ZnxInfos, ZnxZero}, - layouts::{Data, DataMut, DataRef, ReaderFrom, ScalarZnx, WriterTo}, + layouts::{Data, DataMut, DataRef, ReaderFrom, ScalarZnx, WriterTo, ZnxInfos, ZnxZero}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,4 +1,4 @@
-use poulpy_hal::api::ZnxInfos; +use poulpy_hal::layouts::ZnxInfos; pub trait Infos { type Inner: ZnxInfos;
@@ -1,8 +1,7 @@
use std::fmt; use poulpy_hal::{ - api::{FillUniform, Reset, ZnxInfos}, - layouts::{Data, DataMut, DataRef, ReaderFrom, WriterTo, Zn, ZnToMut, ZnToRef}, + layouts::{Data, DataMut, DataRef, FillUniform, ReaderFrom, Reset, WriterTo, Zn, ZnToMut, ZnToRef, ZnxInfos}, source::Source, };
@@ -1,8 +1,7 @@
use std::fmt; use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{ZnxInfos, ZnxView, ZnxZero}, - layouts::{Data, DataMut, DataRef, ScalarZnx}, + layouts::{Data, DataMut, DataRef, ScalarZnx, ZnxInfos, ZnxView, ZnxZero}, source::Source, };
@@ -1,8 +1,7 @@
use std::fmt; use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, MatZnx, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, MatZnx, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,5 +1,5 @@
use poulpy_hal::{ - api::{VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx}, + api::{DFT, VecZnxDftAlloc, VecZnxDftAllocBytes}, layouts::{Backend, Data, DataMut, DataRef, Module, Scratch, VecZnxDft}, };@@ -64,7 +64,7 @@ }
impl<D: DataRef, B: Backend> PrepareAlloc<B, GLWEPublicKeyPrepared<Vec<u8>, B>> for GLWEPublicKey<D> 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> { let mut pk_prepared: GLWEPublicKeyPrepared<Vec<u8>, B> =@@ -76,7 +76,7 @@ }
impl<DM: DataMut, DR: DataRef, B: Backend> Prepare<B, GLWEPublicKey<DR>> for GLWEPublicKeyPrepared<DM, B> where - Module<B>: VecZnxDftFromVecZnx<B>, + Module<B>: DFT<B>, { fn prepare(&mut self, module: &Module<B>, other: &GLWEPublicKey<DR>, _scratch: &mut Scratch<B>) { #[cfg(debug_assertions)]@@ -86,7 +86,7 @@ assert_eq!(self.size(), other.size());
} (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.basek = other.basek;
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, ZnxInfos}, - layouts::{Backend, Data, DataMut, DataRef, Module, SvpPPol}, + api::{SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare}, + layouts::{Backend, Data, DataMut, DataRef, Module, SvpPPol, ZnxInfos}, }; use crate::{
@@ -1,10 +1,9 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxNormalizeTmpBytes, VecZnxSubScalarInplace, ZnxZero, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, VecZnxSubScalarInplace, }, - layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned}, + layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, ZnxZero}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl}, };@@ -22,9 +21,9 @@ DataSk: DataRef,
DataWant: DataRef, Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>
@@ -1,11 +1,10 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddScalarInplace, VecZnxBigAddInplace, - VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, - VecZnxNormalizeTmpBytes, VecZnxSubABInplace, ZnxZero, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxAddScalarInplace, + VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes, VecZnxSubABInplace, }, - layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, VecZnxBig, VecZnxDft}, + layouts::{Backend, DataRef, Module, ScalarZnx, ScratchOwned, VecZnxBig, VecZnxDft, ZnxZero}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl}, };@@ -23,9 +22,9 @@ DataSk: DataRef,
DataScalar: DataRef, Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -33,7 +32,7 @@ + VecZnxNormalizeTmpBytes
+ VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxAddScalarInplace + VecZnxSubABInplace, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B>,@@ -57,9 +56,9 @@ module.vec_znx_add_scalar_inplace(&mut pt.data, 0, (digits - 1) + row_i * digits, pt_want, 0);
// mul with sk[col_j-1] 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.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()); }@@ -90,9 +89,9 @@ DataSk: DataRef,
DataScalar: DataRef, Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -100,7 +99,7 @@ + VecZnxNormalizeTmpBytes
+ VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxAddScalarInplace + VecZnxSubABInplace, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B>,@@ -123,9 +122,9 @@ module.vec_znx_add_scalar_inplace(&mut pt.data, 0, (digits - 1) + row_i * digits, pt_want, 0);
// mul with sk[col_j-1] 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.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()); }
@@ -1,8 +1,8 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSubABInplace, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, + VecZnxSubABInplace, }, layouts::{Backend, DataRef, Module, ScratchOwned}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl},@@ -26,9 +26,9 @@ DataSk: DataRef,
DataPt: DataRef, Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>
@@ -2,9 +2,9 @@ use poulpy_hal::{
api::{ VecZnxAdd, VecZnxAddInplace, VecZnxCopy, VecZnxMulXpMinusOne, VecZnxMulXpMinusOneInplace, VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, - VecZnxSubABInplace, VecZnxSubBAInplace, ZnxZero, + VecZnxSubABInplace, VecZnxSubBAInplace, }, - layouts::{Backend, DataMut, Module, Scratch, VecZnx}, + layouts::{Backend, DataMut, Module, Scratch, VecZnx, ZnxZero}, }; use crate::layouts::{GLWECiphertext, GLWECiphertextToMut, GLWECiphertextToRef, GLWEPlaintext, Infos, SetMetaData};
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace, - VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, + VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, + VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, + VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -37,12 +37,12 @@ k_apply: usize,
rank: usize, ) where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphism@@ -199,9 +199,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -214,13 +214,13 @@ + SvpPrepare<B>
+ SvpPPolAllocBytes + SvpPPolAlloc<B> + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphism@@ -230,9 +230,9 @@ + VecZnxAutomorphism
+ VecZnxAutomorphismInplace + VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>
@@ -1,12 +1,12 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, - VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, - VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, - VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, + SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, + VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, + VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, + VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, + VmpPrepare, }, layouts::{Backend, Module, ScalarZnx, ScratchOwned}, oep::{@@ -39,9 +39,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -49,7 +49,7 @@ + VecZnxNormalizeTmpBytes
+ VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + SvpPrepare<B> + SvpPPolAllocBytes + SvpPPolAlloc<B>@@ -58,9 +58,9 @@ + VecZnxCopy
+ VecZnxSubABInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> + VecZnxFillUniform@@ -193,9 +193,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -203,7 +203,7 @@ + VecZnxNormalizeTmpBytes
+ VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + SvpPrepare<B> + SvpPPolAllocBytes + SvpPPolAlloc<B>@@ -212,9 +212,9 @@ + VecZnxCopy
+ VecZnxSubABInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigAddSmallInplace<B> + VecZnxDftCopy<B> + VecZnxDftAddInplace<B>
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace, - VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, - VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, - VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, + VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, + VmpPrepare, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -37,9 +37,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -54,10 +54,10 @@ + SvpPPolAlloc<B>
+ VecZnxBigAllocBytes + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxAutomorphism + VecZnxSwithcDegree + VecZnxAddScalarInplace@@ -161,9 +161,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -178,10 +178,10 @@ + SvpPPolAlloc<B>
+ VecZnxBigAllocBytes + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxAutomorphism + VecZnxSwithcDegree + VecZnxAddScalarInplace
@@ -1,13 +1,13 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, - VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, - ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, ZnxView, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, + VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, + VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, + ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, }, - layouts::{Backend, Module, ScratchOwned}, + layouts::{Backend, Module, ScratchOwned, ZnxView}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxImpl,@@ -25,9 +25,9 @@ pub fn test_lwe_to_glwe<B>(module: &Module<B>)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -45,9 +45,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxAutomorphismInplace@@ -130,9 +130,9 @@ pub fn test_glwe_to_lwe<B>(module: &Module<B>)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -150,9 +150,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxAutomorphismInplace
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace, - VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, + VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, + VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, + VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -28,9 +28,9 @@ pub fn test_gglwe_automorphisk_key_encrypt_sk<B>(module: &Module<B>, basek: usize, k_ksk: usize, digits: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -42,10 +42,10 @@ + VecZnxSub
+ SvpPrepare<B> + SvpPPolAllocBytes + SvpPPolAlloc<B> - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigAddSmallInplace<B> + VecZnxAutomorphism + VecZnxSwithcDegree@@ -120,9 +120,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -134,10 +134,10 @@ + VecZnxSub
+ SvpPrepare<B> + SvpPPolAllocBytes + SvpPPolAlloc<B> - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigAddSmallInplace<B> + VecZnxAutomorphism + VecZnxSwithcDegree
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScratchOwned},@@ -33,9 +33,9 @@ rank_out: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -111,9 +111,9 @@ rank_out: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, + SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScalarZnx, ScratchOwned}, oep::{@@ -27,9 +27,9 @@ pub fn test_ggsw_encrypt_sk<B>(module: &Module<B>, basek: usize, k: usize, digits: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -51,7 +51,7 @@ + VmpPrepare<B>
+ VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B>@@ -104,9 +104,9 @@ pub fn test_ggsw_compressed_encrypt_sk<B>(module: &Module<B>, basek: usize, k: usize, digits: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -128,7 +128,7 @@ + VmpPrepare<B>
+ VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B>
@@ -1,10 +1,9 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, - VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddInplace, VecZnxBigAddNormal, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, - VecZnxSub, VecZnxSubABInplace, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, + SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxBigAddInplace, VecZnxBigAddNormal, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxFillUniform, + VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -28,9 +27,9 @@ pub fn test_glwe_encrypt_sk<B>(module: &Module<B>, basek: usize, k_ct: usize, k_pt: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -43,16 +42,16 @@ + VecZnxBigAllocBytes
+ SvpPPolAllocBytes + SvpPrepare<B> + SvpApply<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddNormal<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxNormalizeTmpBytes + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -114,9 +113,9 @@ pub fn test_glwe_compressed_encrypt_sk<B>(module: &Module<B>, basek: usize, k_ct: usize, k_pt: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -129,16 +128,16 @@ + VecZnxBigAllocBytes
+ SvpPPolAllocBytes + SvpPrepare<B> + SvpApply<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddNormal<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxNormalizeTmpBytes + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -212,9 +211,9 @@ pub fn test_glwe_encrypt_zero_sk<B>(module: &Module<B>, basek: usize, k_ct: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigAllocBytes - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B>@@ -227,16 +226,16 @@ + VecZnxBigAllocBytes
+ SvpPPolAllocBytes + SvpPrepare<B> + SvpApply<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddNormal<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxNormalizeTmpBytes + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -289,9 +288,9 @@ pub fn test_glwe_encrypt_pk<B>(module: &Module<B>, basek: usize, k_ct: usize, k_pk: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, - VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, + SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, + VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAlloc, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, + VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, }, layouts::{Backend, Module, ScratchOwned, VecZnxDft}, oep::{@@ -27,9 +27,9 @@ pub fn test_glwe_tensor_key_encrypt_sk<B>(module: &Module<B>, basek: usize, k: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -48,7 +48,7 @@ + VecZnxCopy
+ VecZnxDftAlloc<B> + SvpApply<B> + VecZnxBigAlloc<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxAddScalarInplace + VecZnxSwithcDegree + VecZnxSubScalarInplace,@@ -100,13 +100,13 @@ let mut sk_ij: GLWESecret<Vec<u8>> = GLWESecret::alloc(n, 1);
let mut sk_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(rank, 1); (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(|j| { 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( basek, &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: usize, k: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -157,7 +157,7 @@ + VecZnxCopy
+ VecZnxDftAlloc<B> + SvpApply<B> + VecZnxBigAlloc<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxAddScalarInplace + VecZnxSwithcDegree + VecZnxSubScalarInplace,@@ -208,13 +208,13 @@ let mut sk_ij: GLWESecret<Vec<u8>> = GLWESecret::alloc(n, 1);
let mut sk_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(rank, 1); (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(|j| { 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( basek, &mut sk_ij.data.as_vec_znx_mut(),
@@ -1,13 +1,13 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, - VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, - ZnxViewMut, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, + VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, + VmpPMatAlloc, VmpPrepare, }, - layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned}, + layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxImpl, VecZnxBigAllocBytesImpl, VecZnxDftAllocBytesImpl,@@ -37,9 +37,9 @@ rank_out: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -60,9 +60,9 @@ + VecZnxSubScalarInplace
+ VecZnxCopy + VmpPMatAlloc<B> + VecZnxRotateInplace - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VmpPrepare<B>, B: Backend + TakeVecZnxDftImpl<B>@@ -177,9 +177,9 @@ rank_out: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -200,9 +200,9 @@ + VecZnxSubScalarInplace
+ VecZnxCopy + VmpPMatAlloc<B> + VecZnxRotateInplace - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VmpPrepare<B>, B: Backend + TakeVecZnxDftImpl<B>
@@ -1,13 +1,13 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, VecZnxDftAllocBytes, - VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, - VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnxViewMut, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, + SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc, + VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, + VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, + VmpPMatAlloc, VmpPrepare, }, - layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned}, + layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxImpl, VecZnxBigAllocBytesImpl, VecZnxDftAllocBytesImpl,@@ -36,9 +36,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -57,14 +57,14 @@ + VecZnxAddScalarInplace
+ VecZnxCopy + VmpPMatAlloc<B> + VecZnxRotateInplace - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VmpPrepare<B> + VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B>@@ -168,9 +168,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -189,14 +189,14 @@ + VecZnxAddScalarInplace
+ VecZnxCopy + VmpPMatAlloc<B> + VecZnxRotateInplace - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VmpPrepare<B> + VecZnxBigAlloc<B> + VecZnxDftAlloc<B> + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpA<B>, + + IDFTTmpA<B>, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B>
@@ -1,12 +1,12 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, - VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnxViewMut, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, - layouts::{Backend, Module, ScalarZnx, ScratchOwned}, + layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxImpl,@@ -35,9 +35,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -56,9 +56,9 @@ + VecZnxAddScalarInplace
+ VecZnxRotateInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B>, + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B>, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B>@@ -168,9 +168,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -189,9 +189,9 @@ + VecZnxAddScalarInplace
+ VecZnxRotateInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B>, + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B>, B: Backend + TakeVecZnxDftImpl<B> + TakeVecZnxBigImpl<B>
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, - VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform, + VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, + VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -37,9 +37,9 @@ rank_out_s1s2: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -57,9 +57,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxSubScalarInplace,@@ -184,9 +184,9 @@ rank_out: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -204,9 +204,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxSubScalarInplace,
@@ -1,11 +1,11 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace, VecZnxDftAlloc, - VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, - VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, + SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, + VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, + VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, + VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScalarZnx, ScratchOwned}, oep::{@@ -37,9 +37,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -57,13 +57,13 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + SvpApply<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> + VecZnxBigAlloc<B>@@ -181,9 +181,9 @@ rank: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -201,13 +201,13 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + SvpApply<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxDftCopy<B> + VecZnxDftAddInplace<B> + VecZnxBigAlloc<B>
@@ -1,10 +1,10 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, + VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform, + VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, + VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -36,9 +36,9 @@ rank_out: usize,
) where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -56,9 +56,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree, B: Backend@@ -150,9 +150,9 @@ pub fn test_glwe_keyswitch_inplace<B>(module: &Module<B>, basek: usize, k_ct: usize, k_ksk: usize, digits: usize, rank: usize)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -170,9 +170,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree, B: Backend
@@ -1,13 +1,13 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, - VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, - ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, ZnxView, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace, + VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, + VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, + VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, + ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, }, - layouts::{Backend, Module, ScratchOwned}, + layouts::{Backend, Module, ScratchOwned, ZnxView}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxImpl,@@ -24,9 +24,9 @@ pub fn test_lwe_keyswitch<B>(module: &Module<B>)
where Module<B>: VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -44,9 +44,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxAutomorphismInplace
@@ -2,13 +2,13 @@ use std::collections::HashMap;
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, VecZnxBigAddInplace, - VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, - VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, - VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, + VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, + VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, + VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, layouts::{Backend, Module, ScratchOwned}, oep::{@@ -36,10 +36,10 @@ + VecZnxNegateInplace
+ VecZnxRshInplace + VecZnxRotateInplace + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxRotate + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -57,9 +57,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxAutomorphismInplace
@@ -2,15 +2,15 @@ use std::collections::HashMap;
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, - VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, - VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, - VmpPMatAlloc, VmpPrepare, ZnxView, ZnxViewMut, + DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigAddInplace, + VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, + VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, + VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, + VmpPrepare, }, - layouts::{Backend, Module, ScratchOwned}, + layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxImpl,@@ -36,9 +36,9 @@ + VecZnxBigSubSmallBInplace<B>
+ VecZnxRshInplace + VecZnxRotateInplace + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxFillUniform + VecZnxSubABInplace + VecZnxAddInplace@@ -56,9 +56,9 @@ + VecZnxNormalizeTmpBytes
+ VecZnxAddScalarInplace + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + VecZnxBigNormalizeTmpBytes + VecZnxSwithcDegree + VecZnxCopy,
@@ -6,7 +6,6 @@ mod vec_znx_big;
mod vec_znx_dft; mod vmp_pmat; mod zn; -mod znx_base; pub use module::*; pub use scratch::*;@@ -16,4 +15,3 @@ pub use vec_znx_big::*;
pub use vec_znx_dft::*; pub use vmp_pmat::*; pub use zn::*; -pub use znx_base::*;
@@ -14,26 +14,33 @@ pub trait VecZnxDftAllocBytes {
fn vec_znx_dft_alloc_bytes(&self, cols: usize, size: usize) -> usize; } -pub trait VecZnxDftToVecZnxBigTmpBytes { - fn vec_znx_dft_to_vec_znx_big_tmp_bytes(&self) -> usize; +pub trait DFT<B: Backend> { + 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> { - 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>) +pub trait VecZnxIDFTTmpBytes { + 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 R: VecZnxBigToMut<B>, A: VecZnxDftToRef<B>; } -pub trait VecZnxDftToVecZnxBigTmpA<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) +pub trait IDFTTmpA<B: Backend> { + fn idft_tmp_a<R, A>(&self, res: &mut R, res_col: usize, a: &mut A, a_col: usize) where R: VecZnxBigToMut<B>, A: VecZnxDftToMut<B>; } -pub trait VecZnxDftToVecZnxBigConsume<B: Backend> { - fn vec_znx_dft_to_vec_znx_big_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B> +pub trait IDFTConsume<B: Backend> { + fn vec_znx_idft_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B> where VecZnxDft<D, B>: VecZnxDftToMut<B>; }@@ -80,13 +87,6 @@ fn vec_znx_dft_copy<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
where R: VecZnxDftToMut<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> {
@@ -24,8 +24,8 @@ A: MatZnxToRef;
} #[allow(clippy::too_many_arguments)] -pub trait VmpApplyTmpBytes { - fn vmp_apply_tmp_bytes( +pub trait VmpApplyDftToDftTmpBytes { + fn vmp_apply_dft_to_dft_tmp_bytes( &self, res_size: usize, a_size: usize,@@ -36,7 +36,7 @@ b_size: usize,
) -> usize; } -pub trait VmpApply<B: Backend> { +pub trait VmpApplyDftToDft<B: Backend> { /// Applies the vector matrix product [crate::layouts::VecZnxDft] x [crate::layouts::VmpPMat]. /// /// A vector matrix product numerically equivalent to a sum of [crate::api::SvpApply],@@ -61,7 +61,7 @@ /// * `c`: the output of the vector matrix product, as a [crate::layouts::VecZnxDft].
/// * `a`: the left operand [crate::layouts::VecZnxDft] of the vector matrix product. /// * `b`: the right operand [crate::layouts::VmpPMat] of the vector matrix product. /// * `buf`: scratch space, the size can be obtained with [VmpApplyTmpBytes::vmp_apply_tmp_bytes]. - fn vmp_apply<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) + fn vmp_apply_dft_to_dft<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) where R: VecZnxDftToMut<B>, A: VecZnxDftToRef<B>,@@ -69,8 +69,8 @@ C: VmpPMatToRef<B>;
} #[allow(clippy::too_many_arguments)] -pub trait VmpApplyAddTmpBytes { - fn vmp_apply_add_tmp_bytes( +pub trait VmpApplyDftToDftAddTmpBytes { + fn vmp_apply_dft_to_dft_add_tmp_bytes( &self, res_size: usize, a_size: usize,@@ -81,8 +81,8 @@ b_size: usize,
) -> usize; } -pub trait VmpApplyAdd<B: Backend> { - fn vmp_apply_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) +pub trait VmpApplyDftToDftAdd<B: Backend> { + fn vmp_apply_dft_to_dft_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) where R: VecZnxDftToMut<B>, A: VecZnxDftToRef<B>,
@@ -1,18 +1,16 @@
use crate::{ api::{ - VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromBytes, - VecZnxDftFromVecZnx, VecZnxDftSub, VecZnxDftSubABInplace, VecZnxDftSubBAInplace, VecZnxDftToVecZnxBig, - VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, VecZnxDftToVecZnxBigTmpBytes, VecZnxDftZero, + DFT, IDFT, IDFTConsume, IDFTTmpA, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, + VecZnxDftFromBytes, VecZnxDftSub, VecZnxDftSubABInplace, VecZnxDftSubBAInplace, VecZnxDftZero, VecZnxIDFTTmpBytes, }, layouts::{ Backend, Data, Module, Scratch, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, VecZnxDftToRef, VecZnxToRef, }, oep::{ - VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl, VecZnxDftAllocImpl, VecZnxDftCopyImpl, - VecZnxDftFromBytesImpl, VecZnxDftFromVecZnxImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl, VecZnxDftSubImpl, - VecZnxDftToVecZnxBigConsumeImpl, VecZnxDftToVecZnxBigImpl, VecZnxDftToVecZnxBigTmpAImpl, - VecZnxDftToVecZnxBigTmpBytesImpl, VecZnxDftZeroImpl, + DFTImpl, IDFTConsumeImpl, IDFTImpl, IDFTTmpAImpl, VecZnxDftAddImpl, VecZnxDftAddInplaceImpl, VecZnxDftAllocBytesImpl, + VecZnxDftAllocImpl, VecZnxDftCopyImpl, VecZnxDftFromBytesImpl, VecZnxDftSubABInplaceImpl, VecZnxDftSubBAInplaceImpl, + VecZnxDftSubImpl, VecZnxDftZeroImpl, VecZnxIDFTTmpBytesImpl, }, };@@ -43,63 +41,63 @@ B::vec_znx_dft_alloc_impl(self.n(), cols, size)
} } -impl<B> VecZnxDftToVecZnxBigTmpBytes for Module<B> +impl<B> VecZnxIDFTTmpBytes for Module<B> where - B: Backend + VecZnxDftToVecZnxBigTmpBytesImpl<B>, + B: Backend + VecZnxIDFTTmpBytesImpl<B>, { - fn vec_znx_dft_to_vec_znx_big_tmp_bytes(&self) -> usize { - B::vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(self) + fn vec_znx_idft_tmp_bytes(&self) -> usize { + B::vec_znx_idft_tmp_bytes_impl(self) } } -impl<B> VecZnxDftToVecZnxBig<B> for Module<B> +impl<B> IDFT<B> for Module<B> 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 R: VecZnxBigToMut<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 - 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 R: VecZnxBigToMut<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 - 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 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 - 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 R: VecZnxDftToMut<B>, 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); } }
@@ -1,12 +1,12 @@
use crate::{ api::{ - VmpApply, VmpApplyAdd, VmpApplyAddTmpBytes, VmpApplyTmpBytes, VmpPMatAlloc, VmpPMatAllocBytes, VmpPMatFromBytes, - VmpPrepare, VmpPrepareTmpBytes, + VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftAddTmpBytes, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, + VmpPMatAllocBytes, VmpPMatFromBytes, VmpPrepare, VmpPrepareTmpBytes, }, layouts::{Backend, MatZnxToRef, Module, Scratch, VecZnxDftToMut, VecZnxDftToRef, VmpPMatOwned, VmpPMatToMut, VmpPMatToRef}, oep::{ - VmpApplyAddImpl, VmpApplyAddTmpBytesImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl, - VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl, + VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl, VmpApplyDftToDftTmpBytesImpl, + VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl, }, };@@ -59,11 +59,11 @@ B::vmp_prepare_impl(self, res, a, scratch)
} } -impl<B> VmpApplyTmpBytes for Module<B> +impl<B> VmpApplyDftToDftTmpBytes for Module<B> where - B: Backend + VmpApplyTmpBytesImpl<B>, + B: Backend + VmpApplyDftToDftTmpBytesImpl<B>, { - fn vmp_apply_tmp_bytes( + fn vmp_apply_dft_to_dft_tmp_bytes( &self, res_size: usize, a_size: usize,@@ -72,31 +72,31 @@ b_cols_in: usize,
b_cols_out: usize, b_size: usize, ) -> usize { - B::vmp_apply_tmp_bytes_impl( + B::vmp_apply_dft_to_dft_tmp_bytes_impl( self, res_size, a_size, b_rows, b_cols_in, b_cols_out, b_size, ) } } -impl<B> VmpApply<B> for Module<B> +impl<B> VmpApplyDftToDft<B> for Module<B> where - B: Backend + VmpApplyImpl<B>, + B: Backend + VmpApplyDftToDftImpl<B>, { - fn vmp_apply<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) + fn vmp_apply_dft_to_dft<R, A, C>(&self, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) where R: VecZnxDftToMut<B>, A: VecZnxDftToRef<B>, C: VmpPMatToRef<B>, { - B::vmp_apply_impl(self, res, a, b, scratch); + B::vmp_apply_dft_to_dft_impl(self, res, a, b, scratch); } } -impl<B> VmpApplyAddTmpBytes for Module<B> +impl<B> VmpApplyDftToDftAddTmpBytes for Module<B> where - B: Backend + VmpApplyAddTmpBytesImpl<B>, + B: Backend + VmpApplyDftToDftAddTmpBytesImpl<B>, { - fn vmp_apply_add_tmp_bytes( + fn vmp_apply_dft_to_dft_add_tmp_bytes( &self, res_size: usize, a_size: usize,@@ -105,22 +105,22 @@ b_cols_in: usize,
b_cols_out: usize, b_size: usize, ) -> usize { - B::vmp_apply_add_tmp_bytes_impl( + B::vmp_apply_dft_to_dft_add_tmp_bytes_impl( self, res_size, a_size, b_rows, b_cols_in, b_cols_out, b_size, ) } } -impl<B> VmpApplyAdd<B> for Module<B> +impl<B> VmpApplyDftToDftAdd<B> for Module<B> where - B: Backend + VmpApplyAddImpl<B>, + B: Backend + VmpApplyDftToDftAddImpl<B>, { - fn vmp_apply_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) + fn vmp_apply_dft_to_dft_add<R, A, C>(&self, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) where R: VecZnxDftToMut<B>, A: VecZnxDftToRef<B>, C: VmpPMatToRef<B>, { - B::vmp_apply_add_impl(self, res, a, b, scale, scratch); + B::vmp_apply_dft_to_dft_add_impl(self, res, a, b, scale, scratch); } }
@@ -1,9 +1,8 @@
use itertools::izip; use rug::{Assign, Float}; -use crate::{ - api::{ZnxInfos, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{DataMut, DataRef, VecZnx, VecZnxToMut, VecZnxToRef, Zn, ZnToMut, ZnToRef}, +use crate::layouts::{ + DataMut, DataRef, VecZnx, VecZnxToMut, VecZnxToRef, Zn, ZnToMut, ZnToRef, ZnxInfos, ZnxView, ZnxViewMut, ZnxZero, }; impl<D: DataMut> VecZnx<D> {
@@ -1,7 +1,9 @@
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, FillUniform, Reset, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{Data, DataMut, DataRef, ReaderFrom, ToOwnedDeep, VecZnx, WriterTo}, + layouts::{ + Data, DataMut, DataRef, DataView, DataViewMut, FillUniform, ReaderFrom, Reset, ToOwnedDeep, VecZnx, WriterTo, ZnxInfos, + ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, + }, source::Source, }; use std::fmt;
@@ -11,6 +11,7 @@ mod vec_znx_big;
mod vec_znx_dft; mod vmp_pmat; mod zn; +mod znx_base; pub use mat_znx::*; pub use module::*;@@ -23,6 +24,7 @@ pub use vec_znx_big::*;
pub use vec_znx_dft::*; pub use vmp_pmat::*; pub use zn::*; +pub use znx_base::*; pub trait Data = PartialEq + Eq + Sized; pub trait DataRef = Data + AsRef<[u8]>;
@@ -4,8 +4,10 @@ use rand_distr::{Distribution, weighted::WeightedIndex};
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, FillUniform, Reset, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{Data, DataMut, DataRef, ReaderFrom, ToOwnedDeep, VecZnx, WriterTo}, + layouts::{ + Data, DataMut, DataRef, DataView, DataViewMut, FillUniform, ReaderFrom, Reset, ToOwnedDeep, VecZnx, WriterTo, ZnxInfos, + ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, + }, source::Source, };
@@ -4,10 +4,7 @@ float::Round,
ops::{AddAssignRound, DivAssignRound, SubAssignRound}, }; -use crate::{ - api::ZnxInfos, - layouts::{DataRef, VecZnx}, -}; +use crate::layouts::{DataRef, VecZnx, ZnxInfos}; impl<D: DataRef> VecZnx<D> { pub fn std(&self, basek: usize, col: usize) -> f64 {
@@ -2,8 +2,7 @@ use std::marker::PhantomData;
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, ZnxInfos, ZnxSliceSize, ZnxView}, - layouts::{Backend, Data, DataMut, DataRef, ReaderFrom, WriterTo}, + layouts::{Backend, Data, DataMut, DataRef, DataView, DataViewMut, ReaderFrom, WriterTo, ZnxInfos, ZnxSliceSize, ZnxView}, oep::SvpPPolAllocBytesImpl, };
@@ -2,8 +2,10 @@ use std::fmt;
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, FillUniform, Reset, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{Data, DataMut, DataRef, ReaderFrom, ToOwnedDeep, WriterTo}, + layouts::{ + Data, DataMut, DataRef, DataView, DataViewMut, FillUniform, ReaderFrom, Reset, ToOwnedDeep, WriterTo, ZnxInfos, + ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, + }, source::Source, };
@@ -5,8 +5,7 @@ use std::fmt;
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{Backend, Data, DataMut, DataRef}, + layouts::{Backend, Data, DataMut, DataRef, DataView, DataViewMut, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, oep::VecZnxBigAllocBytesImpl, };
@@ -4,8 +4,9 @@ use rand_distr::num_traits::Zero;
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{Backend, Data, DataMut, DataRef, VecZnxBig}, + layouts::{ + Backend, Data, DataMut, DataRef, DataView, DataViewMut, VecZnxBig, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, + }, oep::VecZnxBigAllocBytesImpl, }; #[derive(PartialEq, Eq)]
@@ -2,8 +2,7 @@ use std::marker::PhantomData;
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, ZnxInfos, ZnxView}, - layouts::{Backend, Data, DataMut, DataRef}, + layouts::{Backend, Data, DataMut, DataRef, DataView, DataViewMut, ZnxInfos, ZnxView}, oep::VmpPMatAllocBytesImpl, };
@@ -2,8 +2,10 @@ use std::fmt;
use crate::{ alloc_aligned, - api::{DataView, DataViewMut, FillUniform, Reset, ZnxInfos, ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero}, - layouts::{Data, DataMut, DataRef, ReaderFrom, ToOwnedDeep, WriterTo}, + layouts::{ + Data, DataMut, DataRef, DataView, DataViewMut, FillUniform, ReaderFrom, Reset, ToOwnedDeep, WriterTo, ZnxInfos, + ZnxSliceSize, ZnxView, ZnxViewMut, ZnxZero, + }, source::Source, };
@@ -1,6 +1,5 @@
-use crate::{ - api::ZnxInfos, - layouts::{Backend, DataRef, MatZnx, ScalarZnx, Scratch, ScratchOwned, SvpPPol, VecZnx, VecZnxBig, VecZnxDft, VmpPMat}, +use crate::layouts::{ + Backend, DataRef, MatZnx, ScalarZnx, Scratch, ScratchOwned, SvpPPol, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, }; /// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
@@ -23,6 +23,17 @@ /// # 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) +/// * See TODO for reference code. +/// * See TODO for corresponding public API. +/// # Safety [crate::doc::backend_safety] for safety contract. pub unsafe trait VecZnxDftAllocBytesImpl<B: Backend> { fn vec_znx_dft_alloc_bytes_impl(n: usize, cols: usize, size: usize) -> usize; }@@ -31,23 +42,17 @@ /// # 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 VecZnxDftToVecZnxBigTmpBytesImpl<B: Backend> { - fn vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(module: &Module<B>) -> usize; +pub unsafe trait VecZnxIDFTTmpBytesImpl<B: Backend> { + fn vec_znx_idft_tmp_bytes_impl(module: &Module<B>) -> usize; } /// # 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 VecZnxDftToVecZnxBigImpl<B: Backend> { - fn vec_znx_dft_to_vec_znx_big_impl<R, A>( - module: &Module<B>, - res: &mut R, - res_col: usize, - a: &A, - a_col: usize, - scratch: &mut Scratch<B>, - ) where +pub unsafe trait IDFTImpl<B: Backend> { + fn idft_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>) + where R: VecZnxBigToMut<B>, A: VecZnxDftToRef<B>; }@@ -56,8 +61,8 @@ /// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
/// * See TODO for reference code. /// * See for corresponding public API. /// # Safety [crate::doc::backend_safety] for safety contract. -pub unsafe trait VecZnxDftToVecZnxBigTmpAImpl<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) +pub unsafe trait IDFTTmpAImpl<B: Backend> { + fn idft_tmp_a_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &mut A, a_col: usize) where R: VecZnxBigToMut<B>, A: VecZnxDftToMut<B>;@@ -67,8 +72,8 @@ /// # 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 VecZnxDftToVecZnxBigConsumeImpl<B: Backend> { - fn vec_znx_dft_to_vec_znx_big_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B> +pub unsafe trait IDFTConsumeImpl<B: Backend> { + fn idft_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B> where VecZnxDft<D, B>: VecZnxDftToMut<B>; }@@ -146,24 +151,6 @@ a_col: usize,
) where R: VecZnxDftToMut<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)
@@ -57,8 +57,8 @@ /// # 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 VmpApplyTmpBytesImpl<B: Backend> { - fn vmp_apply_tmp_bytes_impl( +pub unsafe trait VmpApplyDftToDftTmpBytesImpl<B: Backend> { + fn vmp_apply_dft_to_dft_tmp_bytes_impl( module: &Module<B>, res_size: usize, a_size: usize,@@ -73,8 +73,8 @@ /// # 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 VmpApplyImpl<B: Backend> { - fn vmp_apply_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) +pub unsafe trait VmpApplyDftToDftImpl<B: Backend> { + fn vmp_apply_dft_to_dft_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>) where R: VecZnxDftToMut<B>, A: VecZnxDftToRef<B>,@@ -86,8 +86,8 @@ /// # 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 VmpApplyAddTmpBytesImpl<B: Backend> { - fn vmp_apply_add_tmp_bytes_impl( +pub unsafe trait VmpApplyDftToDftAddTmpBytesImpl<B: Backend> { + fn vmp_apply_dft_to_dft_add_tmp_bytes_impl( module: &Module<B>, res_size: usize, a_size: usize,@@ -102,10 +102,16 @@ /// # 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 VmpApplyAddImpl<B: Backend> { +pub unsafe trait VmpApplyDftToDftAddImpl<B: Backend> { // Same as [MatZnxDftOps::vmp_apply] except result is added on R instead of overwritting R. - fn vmp_apply_add_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scale: usize, scratch: &mut Scratch<B>) - where + fn vmp_apply_dft_to_dft_add_impl<R, A, C>( + module: &Module<B>, + res: &mut R, + a: &A, + b: &C, + scale: usize, + scratch: &mut Scratch<B>, + ) where R: VecZnxDftToMut<B>, A: VecZnxDftToRef<B>, C: VmpPMatToRef<B>;
@@ -1,8 +1,7 @@
use std::fmt::Debug; use crate::{ - api::{FillUniform, Reset}, - layouts::{ReaderFrom, WriterTo}, + layouts::{FillUniform, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use crate::{ - api::{ZnxInfos, ZnxViewMut}, - layouts::VecZnx, + layouts::{VecZnx, ZnxInfos, ZnxViewMut}, source::Source, };
@@ -1,6 +1,6 @@
use crate::{ - api::{VecZnxAddNormal, VecZnxFillUniform, ZnxView}, - layouts::{Backend, Module, VecZnx}, + api::{VecZnxAddNormal, VecZnxFillUniform}, + layouts::{Backend, Module, VecZnx, ZnxView}, source::Source, };
@@ -1,14 +1,13 @@
use crate::{ api::{ - ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, - VecZnxDftAlloc, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigTmpA, VmpApply, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, - ZnxInfos, ZnxViewMut, + DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VmpApplyDftToDft, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, }, - layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat}, + layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut}, oep::{ - ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl, VecZnxBigNormalizeImpl, - VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VecZnxDftFromVecZnxImpl, VecZnxDftToVecZnxBigTmpAImpl, VmpApplyImpl, - VmpApplyTmpBytesImpl, VmpPMatAllocImpl, VmpPMatPrepareImpl, + DFTImpl, IDFTTmpAImpl, ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl, + VecZnxBigNormalizeImpl, VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VmpApplyDftToDftImpl, + VmpApplyDftToDftTmpBytesImpl, VmpPMatAllocImpl, VmpPMatPrepareImpl, }, };@@ -18,15 +17,15 @@ pub fn test_vmp_apply<B>()
where B: Backend + ModuleNewImpl<B> - + VmpApplyTmpBytesImpl<B> + + VmpApplyDftToDftTmpBytesImpl<B> + VecZnxBigNormalizeTmpBytesImpl<B> + VmpPMatAllocImpl<B> + VecZnxDftAllocImpl<B> + VecZnxBigAllocImpl<B> + VmpPMatPrepareImpl<B> - + VecZnxDftFromVecZnxImpl<B> - + VmpApplyImpl<B> - + VecZnxDftToVecZnxBigTmpAImpl<B> + + DFTImpl<B> + + VmpApplyDftToDftImpl<B> + + IDFTTmpAImpl<B> + ScratchOwnedAllocImpl<B> + ScratchOwnedBorrowImpl<B> + VecZnxBigNormalizeImpl<B>,@@ -50,7 +49,7 @@ let mat_cols_in: usize = a_cols;
let mat_cols_out: usize = res_cols; let mut scratch = ScratchOwned::alloc( - module.vmp_apply_tmp_bytes( + module.vmp_apply_dft_to_dft_tmp_bytes( res_size, a_size, mat_rows,@@ -87,16 +86,16 @@ module.vmp_prepare(&mut vmp, &mat, scratch.borrow());
let mut a_dft: VecZnxDft<Vec<u8>, B> = module.vec_znx_dft_alloc(a_cols, a_size); (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_dft_to_dft(&mut c_dft, &a_dft, &vmp, scratch.borrow()); let mut res_have_vi64: Vec<i64> = vec![i64::default(); n]; let mut res_have: VecZnx<Vec<u8>> = VecZnx::alloc(n, res_cols, res_size); (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()); });
@@ -8,8 +8,8 @@ };
use std::time::Instant; use poulpy_hal::{ - api::{ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, ZnNormalizeInplace, ZnxView, ZnxViewMut}, - layouts::{Module, ScalarZnx, ScratchOwned}, + api::{ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, ZnNormalizeInplace}, + layouts::{Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut}, source::Source, };
@@ -1,14 +1,14 @@
use itertools::izip; use poulpy_hal::{ api::{ - ScratchAvailable, SvpApply, SvpPPolAllocBytes, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, TakeVecZnxDftSlice, - TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, - VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, - VecZnxDftSubABInplace, VecZnxDftToVecZnxBig, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpBytes, VecZnxDftZero, - VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, - VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, ZnxView, ZnxZero, + DFT, IDFT, IDFTConsume, ScratchAvailable, SvpApply, SvpPPolAllocBytes, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, + TakeVecZnxDftSlice, TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, + VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, + VecZnxDftZero, VecZnxIDFTTmpBytes, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, }, - layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx}, + layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero}, }; use poulpy_core::{@@ -33,10 +33,10 @@ rank: usize,
) -> usize where Module<B>: VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes + VecZnxBigAllocBytes - + VecZnxDftToVecZnxBigTmpBytes + + VecZnxIDFTTmpBytes + VecZnxBigNormalizeTmpBytes, { let brk_size: usize = k_brk.div_ceil(basek);@@ -48,7 +48,7 @@ let acc_big: usize = module.vec_znx_big_alloc_bytes(1, brk_size);
let vmp_res: usize = module.vec_znx_dft_alloc_bytes(cols, brk_size) * extension_factor; let vmp_xai: usize = module.vec_znx_dft_alloc_bytes(1, brk_size); let acc_dft_add: usize = vmp_res; - let vmp: usize = module.vmp_apply_tmp_bytes(brk_size, rows, rows, 2, 2, brk_size); // GGSW product: (1 x 2) x (2 x 2) + let vmp: usize = module.vmp_apply_dft_to_dft_tmp_bytes(brk_size, rows, rows, 2, 2, brk_size); // GGSW product: (1 x 2) x (2 x 2) let acc: usize = if extension_factor > 1 { VecZnx::alloc_bytes(module.n(), cols, k_res.div_ceil(basek)) * extension_factor } else {@@ -59,7 +59,7 @@ acc + acc_dft
+ acc_dft_add + vmp_res + 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 { GLWECiphertext::bytes_of(module.n(), basek, k_res, rank) + GLWECiphertext::external_product_scratch_space(module, basek, k_res, k_res, k_brk, 1, rank)@@ -71,13 +71,13 @@ where
Module<B>: VecZnxBigAllocBytes + VecZnxDftAllocBytes + SvpPPolAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpBytes - + VecZnxDftToVecZnxBig<B> + + VecZnxIDFTTmpBytes + + IDFT<B> + VecZnxDftAdd<B> + VecZnxDftAddInplace<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftZero<B> + SvpApply<B> + VecZnxDftSubABInplace<B>@@ -89,9 +89,9 @@ + VecZnxNormalize<B>
+ VecZnxNormalizeInplace<B> + VecZnxCopy + VecZnxMulXpMinusOneInplace - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B> + VecZnxNormalizeTmpBytes, Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + TakeVecZnx + ScratchAvailable,@@ -133,13 +133,13 @@ DataBrk: DataRef,
Module<B>: VecZnxBigAllocBytes + VecZnxDftAllocBytes + SvpPPolAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpBytes - + VecZnxDftToVecZnxBig<B> + + VecZnxIDFTTmpBytes + + IDFT<B> + VecZnxDftAdd<B> + VecZnxDftAddInplace<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftZero<B> + SvpApply<B> + VecZnxDftSubABInplace<B>@@ -152,7 +152,7 @@ + VecZnxNormalizeInplace<B>
+ VecZnxCopy + VecZnxMulXpMinusOneInplace + VecZnxBigNormalize<B> - + VmpApply<B>, + + VmpApplyDftToDft<B>, Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx, { let n_glwe: usize = brk.n();@@ -208,7 +208,7 @@ )
.for_each(|(ai, ski)| { (0..extension_factor).for_each(|i| { (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]) });@@ -221,7 +221,7 @@ let ai_lo: usize = ai_pos & (extension_factor - 1);
// vmp_res = DFT(acc) * BRK[i] (0..extension_factor).for_each(|i| { - module.vmp_apply(&mut vmp_res[i], &acc_dft[i], skii.data(), scratch5); + module.vmp_apply_dft_to_dft(&mut vmp_res[i], &acc_dft[i], skii.data(), scratch5); }); // Trivial case: no rotation between polynomials, we can directly multiply with (X^{-ai} - 1)@@ -273,7 +273,7 @@ let (mut acc_add_big, scratch7) = scratch5.take_vec_znx_big(n_glwe, 1, brk.size());
(0..extension_factor).for_each(|j| { (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_normalize(basek, &mut acc[j], i, &acc_add_big, 0, scratch7); });@@ -300,13 +300,13 @@ DataBrk: DataRef,
Module<B>: VecZnxBigAllocBytes + VecZnxDftAllocBytes + SvpPPolAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpBytes - + VecZnxDftToVecZnxBig<B> + + VecZnxIDFTTmpBytes + + IDFT<B> + VecZnxDftAdd<B> + VecZnxDftAddInplace<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftZero<B> + SvpApply<B> + VecZnxDftSubABInplace<B>@@ -318,7 +318,7 @@ + VecZnxNormalize<B>
+ VecZnxNormalizeInplace<B> + VecZnxCopy + VecZnxMulXpMinusOneInplace - + VmpApply<B> + + VmpApplyDftToDft<B> + VecZnxBigNormalize<B>, Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx, {@@ -369,7 +369,7 @@ brk.data.chunks_exact(block_size)
) .for_each(|(ai, ski)| { (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);@@ -378,7 +378,7 @@ izip!(ai.iter(), ski.iter()).for_each(|(aii, skii)| {
let ai_pos: usize = ((aii + two_n as i64) & (two_n - 1) as i64) as usize; // vmp_res = DFT(acc) * BRK[i] - module.vmp_apply(&mut vmp_res, &acc_dft, skii.data(), scratch4); + module.vmp_apply_dft_to_dft(&mut vmp_res, &acc_dft, skii.data(), scratch4); // DFT(X^ai -1) * (DFT(acc) * BRK[i]) (0..cols).for_each(|i| {@@ -392,7 +392,7 @@ {
let (mut acc_add_big, scratch5) = scratch4.take_vec_znx_big(n_glwe, 1, brk.size()); (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_normalize(basek, &mut out_mut.data, i, &acc_add_big, 0, scratch5); });@@ -414,13 +414,13 @@ DataBrk: DataRef,
Module<B>: VecZnxBigAllocBytes + VecZnxDftAllocBytes + SvpPPolAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpBytes - + VecZnxDftToVecZnxBig<B> + + VecZnxIDFTTmpBytes + + IDFT<B> + VecZnxDftAdd<B> + VecZnxDftAddInplace<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftZero<B> + SvpApply<B> + VecZnxDftSubABInplace<B>@@ -432,9 +432,9 @@ + VecZnxNormalize<B>
+ VecZnxNormalizeInplace<B> + VecZnxCopy + VecZnxMulXpMinusOneInplace - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + IDFTConsume<B> + VecZnxBigNormalize<B> + VecZnxNormalizeTmpBytes, Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
@@ -1,11 +1,10 @@
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxFillUniform, - VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VmpPMatAlloc, - VmpPrepare, ZnxView, ZnxViewMut, + DFT, IDFTConsume, ScratchAvailable, SvpApplyInplace, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxAddScalarInplace, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VmpPMatAlloc, VmpPrepare, }, - layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, ScalarZnxToRef, Scratch}, + layouts::{Backend, DataMut, DataRef, Module, ScalarZnx, ScalarZnxToRef, Scratch, ZnxView, ZnxViewMut}, source::Source, };@@ -51,9 +50,9 @@ where
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace@@ -163,9 +162,9 @@ DataSkLWE: DataRef,
Module<B>: VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Backend, Data, DataMut, DataRef, Module, ReaderFrom, Scratch, WriterTo}, + layouts::{Backend, Data, DataMut, DataRef, FillUniform, Module, ReaderFrom, Reset, Scratch, WriterTo}, source::Source, };
@@ -1,6 +1,5 @@
use poulpy_hal::{ - api::{FillUniform, Reset}, - layouts::{Data, DataMut, DataRef, ReaderFrom, WriterTo}, + layouts::{Data, DataMut, DataRef, FillUniform, ReaderFrom, Reset, WriterTo}, source::Source, };
@@ -1,9 +1,9 @@
use poulpy_hal::{ api::{ ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxCopy, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, - VecZnxSwithcDegree, ZnxInfos, ZnxViewMut, + VecZnxSwithcDegree, }, - layouts::{Backend, Module, ScratchOwned, VecZnx}, + layouts::{Backend, Module, ScratchOwned, VecZnx, ZnxInfos, ZnxViewMut}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl}, };
@@ -1,15 +1,14 @@
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, - VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, - VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftSubABInplace, VecZnxDftToVecZnxBig, VecZnxDftToVecZnxBigConsume, - VecZnxDftToVecZnxBigTmpBytes, VecZnxDftZero, VecZnxFillUniform, VecZnxMulXpMinusOneInplace, VecZnxNormalize, - VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, - ZnNormalizeInplace, ZnxView, + DFT, IDFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, + SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, + VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, + VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxDftZero, VecZnxFillUniform, VecZnxIDFTTmpBytes, + VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, + VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, + VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, }, - layouts::{Backend, Module, ScratchOwned}, + layouts::{Backend, Module, ScratchOwned, ZnxView}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxDftSliceImpl, TakeVecZnxImpl, TakeVecZnxSliceImpl, VecZnxBigAllocBytesImpl, VecZnxDftAllocBytesImpl,@@ -32,13 +31,13 @@ where
Module<B>: VecZnxBigAllocBytes + VecZnxDftAllocBytes + SvpPPolAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VecZnxDftToVecZnxBigTmpBytes - + VecZnxDftToVecZnxBig<B> + + VecZnxIDFTTmpBytes + + IDFT<B> + VecZnxDftAdd<B> + VecZnxDftAddInplace<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + VecZnxDftZero<B> + SvpApply<B> + VecZnxDftSubABInplace<B>@@ -53,7 +52,7 @@ + VecZnxMulXpMinusOneInplace
+ SvpPrepare<B> + SvpPPolAlloc<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxBigAddInplace<B> + VecZnxBigNormalize<B> + VecZnxNormalizeTmpBytes@@ -65,8 +64,8 @@ + VecZnxSwithcDegree
+ VecZnxSub + VmpPMatAlloc<B> + VmpPrepare<B> - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + ZnFillUniform + ZnAddNormal + ZnNormalizeInplace<B>,
@@ -1,6 +1,6 @@
use poulpy_hal::{ - api::{SvpPrepare, ZnxInfos, ZnxViewMut}, - layouts::{Backend, DataMut, Module, ScalarZnx, SvpPPol}, + api::SvpPrepare, + layouts::{Backend, DataMut, Module, ScalarZnx, SvpPPol, ZnxInfos, ZnxViewMut}, }; pub(crate) fn set_xai_plus_y<A, C, B: Backend>(
@@ -2,12 +2,12 @@ use std::collections::HashMap;
use poulpy_hal::{ api::{ - ScratchAvailable, TakeMatZnx, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, TakeVecZnxDftSlice, TakeVecZnxSlice, - VecZnxAddInplace, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAddInplace, - VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, - VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, - VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, + DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeMatZnx, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, TakeVecZnxDftSlice, + TakeVecZnxSlice, VecZnxAddInplace, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, + VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, + VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNegateInplace, VecZnxNormalizeInplace, + VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, + VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, }, layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep}, oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl},@@ -33,19 +33,19 @@ + VecZnxSwithcDegree
+ VecZnxBigAutomorphismInplace<B> + VecZnxRshInplace + VecZnxDftCopy<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxSub + VecZnxAddInplace + VecZnxNegateInplace + VecZnxCopy + VecZnxSubABInplace + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace@@ -131,19 +131,19 @@ + VecZnxSwithcDegree
+ VecZnxBigAutomorphismInplace<B> + VecZnxRshInplace + VecZnxDftCopy<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxSub + VecZnxAddInplace + VecZnxNegateInplace + VecZnxCopy + VecZnxSubABInplace + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace@@ -256,19 +256,19 @@ + VecZnxSwithcDegree
+ VecZnxBigAutomorphismInplace<B> + VecZnxRshInplace + VecZnxDftCopy<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxSub + VecZnxAddInplace + VecZnxNegateInplace + VecZnxCopy + VecZnxSubABInplace + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace@@ -328,19 +328,19 @@ + VecZnxSwithcDegree
+ VecZnxBigAutomorphismInplace<B> + VecZnxRshInplace + VecZnxDftCopy<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxSub + VecZnxAddInplace + VecZnxNegateInplace + VecZnxCopy + VecZnxSubABInplace + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace@@ -407,19 +407,19 @@ + VecZnxSwithcDegree
+ VecZnxBigAutomorphismInplace<B> + VecZnxRshInplace + VecZnxDftCopy<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxSub + VecZnxAddInplace + VecZnxNegateInplace + VecZnxCopy + VecZnxSubABInplace + VecZnxDftAllocBytes - + VmpApplyTmpBytes + + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> - + VecZnxDftFromVecZnx<B> - + VecZnxDftToVecZnxBigConsume<B> + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + + DFT<B> + + IDFTConsume<B> + VecZnxBigAddSmallInplace<B> + VecZnxBigNormalize<B> + VecZnxAutomorphismInplace
@@ -6,11 +6,11 @@ use std::collections::HashMap;
use poulpy_hal::{ api::{ - ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, TakeScalarZnx, TakeSvpPPol, - TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, - VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, VecZnxDftToVecZnxBigTmpA, - VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, VmpPMatAlloc, VmpPrepare, + DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, + TakeScalarZnx, TakeSvpPPol, TakeVecZnx, TakeVecZnxBig, TakeVecZnxDft, VecZnxAddInplace, VecZnxAddNormal, + VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, + VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpPMatAlloc, + VmpPrepare, }, layouts::{Backend, Data, DataRef, Module, Scratch}, source::Source,@@ -52,13 +52,13 @@ impl<BRA: BlindRotationAlgo, B: Backend> CircuitBootstrappingKeyEncryptSk<B> for CircuitBootstrappingKey<Vec<u8>, BRA>
where BlindRotationKey<Vec<u8>, BRA>: BlindRotationKeyAlloc + BlindRotationKeyEncryptSk<B>, Module<B>: SvpApply<B> - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + VecZnxAddScalarInplace + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxFillUniform + VecZnxSubABInplace
@@ -2,17 +2,16 @@ use std::time::Instant;
use poulpy_hal::{ api::{ - ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare, - VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace, - VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, - VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAddInplace, - VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxDftFromVecZnx, VecZnxDftToVecZnxBigConsume, - VecZnxDftToVecZnxBigTmpA, VecZnxFillUniform, VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, - VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, - VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, - ZnNormalizeInplace, ZnxView, ZnxViewMut, + DFT, IDFTConsume, IDFTTmpA, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApply, SvpApplyInplace, SvpPPolAlloc, + SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, + VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, + VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, + VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNegateInplace, + VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, + VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, + VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace, }, - layouts::{Backend, Module, ScalarZnx, ScratchOwned}, + layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut}, oep::{ ScratchAvailableImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, TakeMatZnxImpl, TakeScalarZnxImpl, TakeSvpPPolImpl, TakeVecZnxBigImpl, TakeVecZnxDftImpl, TakeVecZnxDftSliceImpl, TakeVecZnxImpl, TakeVecZnxSliceImpl,@@ -44,9 +43,9 @@ + VecZnxAddNormal
+ VecZnxNormalizeInplace<B> + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxSubABInplace + VecZnxAddInplace@@ -56,7 +55,7 @@ + VecZnxAddScalarInplace
+ VecZnxAutomorphism + VecZnxSwithcDegree + VecZnxBigAllocBytes - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + SvpApply<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B>@@ -67,9 +66,9 @@ + VmpPMatAlloc<B>
+ VmpPrepare<B> + SvpPrepare<B> + SvpPPolAlloc<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + SvpPPolAllocBytes + VecZnxRotateInplace + VecZnxBigAutomorphismInplace<B>@@ -225,9 +224,9 @@ + VecZnxAddNormal
+ VecZnxNormalizeInplace<B> + VecZnxDftAllocBytes + VecZnxBigNormalize<B> - + VecZnxDftFromVecZnx<B> + + DFT<B> + SvpApplyInplace<B> - + VecZnxDftToVecZnxBigConsume<B> + + IDFTConsume<B> + VecZnxNormalizeTmpBytes + VecZnxSubABInplace + VecZnxAddInplace@@ -237,7 +236,7 @@ + VecZnxAddScalarInplace
+ VecZnxAutomorphism + VecZnxSwithcDegree + VecZnxBigAllocBytes - + VecZnxDftToVecZnxBigTmpA<B> + + IDFTTmpA<B> + SvpApply<B> + VecZnxBigAddInplace<B> + VecZnxBigAddSmallInplace<B>@@ -248,9 +247,9 @@ + VmpPMatAlloc<B>
+ VmpPrepare<B> + SvpPrepare<B> + SvpPPolAlloc<B> - + VmpApplyTmpBytes - + VmpApply<B> - + VmpApplyAdd<B> + + VmpApplyDftToDftTmpBytes + + VmpApplyDftToDft<B> + + VmpApplyDftToDftAdd<B> + SvpPPolAllocBytes + VecZnxRotateInplace + VecZnxBigAutomorphismInplace<B>