mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 05:06:44 +01:00
renamed vmp API closer to spqlios
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{TakeSlice, VmpApplyTmpBytes, VmpPrepareTmpBytes},
|
api::{TakeSlice, VmpApplyDftToDftTmpBytes, VmpPrepareTmpBytes},
|
||||||
layouts::{
|
layouts::{
|
||||||
Backend, MatZnx, MatZnxToRef, Module, Scratch, VecZnxDft, VecZnxDftToMut, VecZnxDftToRef, VmpPMat, VmpPMatOwned,
|
Backend, MatZnx, MatZnxToRef, Module, Scratch, VecZnxDft, VecZnxDftToMut, VecZnxDftToRef, VmpPMat, VmpPMatOwned,
|
||||||
VmpPMatToMut, VmpPMatToRef, ZnxInfos, ZnxView, ZnxViewMut,
|
VmpPMatToMut, VmpPMatToRef, ZnxInfos, ZnxView, ZnxViewMut,
|
||||||
},
|
},
|
||||||
oep::{
|
oep::{
|
||||||
VmpApplyAddImpl, VmpApplyAddTmpBytesImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl,
|
VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl, VmpApplyDftToDftTmpBytesImpl,
|
||||||
VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl,
|
VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -109,8 +109,8 @@ unsafe impl VmpPMatPrepareImpl<FFT64> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VmpApplyTmpBytesImpl<FFT64> for FFT64 {
|
unsafe impl VmpApplyDftToDftTmpBytesImpl<FFT64> for FFT64 {
|
||||||
fn vmp_apply_tmp_bytes_impl(
|
fn vmp_apply_dft_to_dft_tmp_bytes_impl(
|
||||||
module: &Module<FFT64>,
|
module: &Module<FFT64>,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -131,8 +131,8 @@ unsafe impl VmpApplyTmpBytesImpl<FFT64> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VmpApplyImpl<FFT64> for FFT64 {
|
unsafe impl VmpApplyDftToDftImpl<FFT64> for FFT64 {
|
||||||
fn vmp_apply_impl<R, A, C>(module: &Module<FFT64>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<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
|
where
|
||||||
R: VecZnxDftToMut<FFT64>,
|
R: VecZnxDftToMut<FFT64>,
|
||||||
A: VecZnxDftToRef<FFT64>,
|
A: VecZnxDftToRef<FFT64>,
|
||||||
@@ -162,7 +162,7 @@ unsafe impl VmpApplyImpl<FFT64> for FFT64 {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
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(),
|
res.size(),
|
||||||
a.size(),
|
a.size(),
|
||||||
b.rows(),
|
b.rows(),
|
||||||
@@ -186,8 +186,8 @@ unsafe impl VmpApplyImpl<FFT64> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VmpApplyAddTmpBytesImpl<FFT64> for FFT64 {
|
unsafe impl VmpApplyDftToDftAddTmpBytesImpl<FFT64> for FFT64 {
|
||||||
fn vmp_apply_add_tmp_bytes_impl(
|
fn vmp_apply_dft_to_dft_add_tmp_bytes_impl(
|
||||||
module: &Module<FFT64>,
|
module: &Module<FFT64>,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -208,9 +208,15 @@ unsafe impl VmpApplyAddTmpBytesImpl<FFT64> for FFT64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl VmpApplyAddImpl<FFT64> for FFT64 {
|
unsafe impl VmpApplyDftToDftAddImpl<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>)
|
fn vmp_apply_dft_to_dft_add_impl<R, A, C>(
|
||||||
where
|
module: &Module<FFT64>,
|
||||||
|
res: &mut R,
|
||||||
|
a: &A,
|
||||||
|
b: &C,
|
||||||
|
scale: usize,
|
||||||
|
scratch: &mut Scratch<FFT64>,
|
||||||
|
) where
|
||||||
R: VecZnxDftToMut<FFT64>,
|
R: VecZnxDftToMut<FFT64>,
|
||||||
A: VecZnxDftToRef<FFT64>,
|
A: VecZnxDftToRef<FFT64>,
|
||||||
C: VmpPMatToRef<FFT64>,
|
C: VmpPMatToRef<FFT64>,
|
||||||
@@ -239,7 +245,7 @@ unsafe impl VmpApplyAddImpl<FFT64> for FFT64 {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
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(),
|
res.size(),
|
||||||
a.size(),
|
a.size(),
|
||||||
b.rows(),
|
b.rows(),
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd,
|
VecZnxBigAddSmallInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft,
|
||||||
VmpApplyTmpBytes,
|
VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -21,7 +21,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank)
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GGLWEAutomorphismKey::automorphism_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -50,10 +50,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -134,10 +134,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ use poulpy_hal::{
|
|||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAddInplace,
|
||||||
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
|
VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -26,8 +27,11 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>:
|
Module<B>: VecZnxDftAllocBytes
|
||||||
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes,
|
+ VmpApplyDftToDftTmpBytes
|
||||||
|
+ VecZnxBigAllocBytes
|
||||||
|
+ VecZnxNormalizeTmpBytes
|
||||||
|
+ VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
let out_size: usize = k_out.div_ceil(basek);
|
let out_size: usize = k_out.div_ceil(basek);
|
||||||
let ci_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, out_size);
|
let ci_dft: usize = module.vec_znx_dft_alloc_bytes(rank + 1, out_size);
|
||||||
@@ -49,8 +53,11 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>:
|
Module<B>: VecZnxDftAllocBytes
|
||||||
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes,
|
+ VmpApplyDftToDftTmpBytes
|
||||||
|
+ VecZnxBigAllocBytes
|
||||||
|
+ VecZnxNormalizeTmpBytes
|
||||||
|
+ VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
GGSWCiphertext::automorphism_scratch_space(
|
GGSWCiphertext::automorphism_scratch_space(
|
||||||
module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,
|
module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,
|
||||||
@@ -68,10 +75,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -138,10 +145,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -168,10 +175,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use poulpy_hal::{
|
|||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxAutomorphismInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace,
|
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallAInplace,
|
||||||
VecZnxBigSubSmallBInplace, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigSubSmallBInplace, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnxBig},
|
||||||
};
|
};
|
||||||
@@ -21,7 +21,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
Self::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank)
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
Self::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
|
Self::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -50,10 +50,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -74,10 +74,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -99,10 +99,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -130,10 +130,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -155,10 +155,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -187,10 +187,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -213,10 +213,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -245,10 +245,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -21,7 +21,7 @@ impl LWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)
|
GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)
|
||||||
+ GLWECiphertext::keyswitch_scratch_space(module, basek, k_lwe, k_glwe, k_ksk, 1, rank, 1)
|
+ GLWECiphertext::keyswitch_scratch_space(module, basek, k_lwe, k_glwe, k_ksk, 1, rank, 1)
|
||||||
@@ -56,10 +56,10 @@ impl<DLwe: DataMut> LWECiphertext<DLwe> {
|
|||||||
DGlwe: DataRef,
|
DGlwe: DataRef,
|
||||||
DKs: DataRef,
|
DKs: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -21,7 +21,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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::keyswitch_scratch_space(module, basek, k_glwe, k_lwe, k_ksk, 1, 1, rank)
|
||||||
+ GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)
|
+ GLWECiphertext::bytes_of(module.n(), basek, k_lwe, 1)
|
||||||
@@ -39,10 +39,10 @@ impl<D: DataMut> GLWECiphertext<D> {
|
|||||||
DLwe: DataRef,
|
DLwe: DataRef,
|
||||||
DKsk: DataRef,
|
DKsk: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -20,7 +20,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GGLWESwitchingKey::external_product_scratch_space(module, basek, k_out, k_in, ggsw_k, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GGLWESwitchingKey::external_product_inplace_scratch_space(module, basek, k_out, ggsw_k, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -49,11 +49,11 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
@@ -68,11 +68,11 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -20,7 +20,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -49,11 +49,11 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
@@ -104,11 +104,11 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -20,7 +20,7 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GLWECiphertext::external_product_scratch_space(module, basek, k_out, k_in, k_ggsw, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GLWECiphertext::external_product_inplace_scratch_space(module, basek, k_out, k_ggsw, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -49,11 +49,11 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
@@ -114,11 +114,11 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxNormalizeTmpBytes,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig},
|
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnxBig},
|
||||||
};
|
};
|
||||||
@@ -20,14 +20,14 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
let in_size: usize = k_in.div_ceil(basek).div_ceil(digits);
|
let in_size: usize = k_in.div_ceil(basek).div_ceil(digits);
|
||||||
let out_size: usize = k_out.div_ceil(basek);
|
let out_size: usize = k_out.div_ceil(basek);
|
||||||
let ggsw_size: usize = k_ggsw.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 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 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,
|
out_size,
|
||||||
in_size,
|
in_size,
|
||||||
in_size, // rows
|
in_size, // rows
|
||||||
@@ -48,7 +48,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
Self::external_product_scratch_space(module, basek, k_out, k_out, k_ggsw, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -63,11 +63,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
@@ -125,9 +125,9 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if di == 0 {
|
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 {
|
} 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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -146,11 +146,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
Scratch<B>: TakeVecZnxDft<B> + ScratchAvailable,
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ use poulpy_hal::{
|
|||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxAddInplace, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxRotate,
|
VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxNegateInplace, VecZnxNormalizeInplace, VecZnxRotate,
|
||||||
VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
|
VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -95,7 +96,7 @@ impl GLWEPacker {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
pack_core_scratch_space(module, basek, ct_k, k_ksk, digits, rank)
|
pack_core_scratch_space(module, basek, ct_k, k_ksk, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -121,10 +122,10 @@ impl GLWEPacker {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -185,7 +186,7 @@ fn pack_core_scratch_space<B: Backend>(
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
combine_scratch_space(module, basek, ct_k, k_ksk, digits, rank)
|
combine_scratch_space(module, basek, ct_k, k_ksk, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -199,10 +200,10 @@ fn pack_core<D: DataRef, DataAK: DataRef, B: Backend>(
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -279,7 +280,7 @@ fn combine_scratch_space<B: Backend>(
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
GLWECiphertext::bytes_of(module.n(), basek, ct_k, rank)
|
GLWECiphertext::bytes_of(module.n(), basek, ct_k, rank)
|
||||||
+ (GLWECiphertext::rsh_scratch_space(module.n())
|
+ (GLWECiphertext::rsh_scratch_space(module.n())
|
||||||
@@ -296,10 +297,10 @@ fn combine<D: DataRef, DataAK: DataRef, B: Backend>(
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ use std::collections::HashMap;
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigAutomorphismInplace,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxRshInplace, VmpApply, VmpApplyAdd,
|
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAllocBytes, VecZnxRshInplace, VmpApplyDftToDft,
|
||||||
VmpApplyTmpBytes,
|
VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch},
|
||||||
};
|
};
|
||||||
@@ -38,7 +38,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
Self::automorphism_inplace_scratch_space(module, basek, out_k.min(in_k), ksk_k, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
Self::automorphism_inplace_scratch_space(module, basek, out_k, ksk_k, digits, rank)
|
Self::automorphism_inplace_scratch_space(module, basek, out_k, ksk_k, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -69,10 +69,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -95,10 +95,10 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -23,7 +23,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GGLWESwitchingKey::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank, rank)
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ impl GGLWEAutomorphismKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
GGLWESwitchingKey::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
|
GGLWESwitchingKey::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -52,10 +52,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -72,10 +72,10 @@ impl<DataSelf: DataMut> GGLWEAutomorphismKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -99,7 +99,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
|
|||||||
rank_out: usize,
|
rank_out: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
GLWECiphertext::keyswitch_scratch_space(module, basek, k_out, k_in, k_ksk, digits, rank_in, rank_out)
|
||||||
}
|
}
|
||||||
@@ -113,7 +113,7 @@ impl GGLWESwitchingKey<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
GLWECiphertext::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
|
GLWECiphertext::keyswitch_inplace_scratch_space(module, basek, k_out, k_ksk, digits, rank)
|
||||||
}
|
}
|
||||||
@@ -128,10 +128,10 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -184,10 +184,10 @@ impl<DataSelf: DataMut> GGLWESwitchingKey<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ use poulpy_hal::{
|
|||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace,
|
DFT, IDFTConsume, IDFTTmpA, ScratchAvailable, TakeVecZnxBig, TakeVecZnxDft, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace,
|
||||||
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNormalizeTmpBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
|
VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, VecZnx, VmpPMat, ZnxInfos},
|
||||||
};
|
};
|
||||||
@@ -25,7 +26,7 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
let tsk_size: usize = k_tsk.div_ceil(basek);
|
let tsk_size: usize = k_tsk.div_ceil(basek);
|
||||||
let self_size_out: usize = self_k.div_ceil(basek);
|
let self_size_out: usize = self_k.div_ceil(basek);
|
||||||
@@ -33,7 +34,7 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
|
|
||||||
let tmp_dft_i: usize = module.vec_znx_dft_alloc_bytes(rank + 1, tsk_size);
|
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 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_out,
|
||||||
self_size_in,
|
self_size_in,
|
||||||
self_size_in,
|
self_size_in,
|
||||||
@@ -59,8 +60,11 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>:
|
Module<B>: VecZnxDftAllocBytes
|
||||||
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes,
|
+ VmpApplyDftToDftTmpBytes
|
||||||
|
+ VecZnxBigAllocBytes
|
||||||
|
+ VecZnxNormalizeTmpBytes
|
||||||
|
+ VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
let out_size: usize = k_out.div_ceil(basek);
|
let out_size: usize = k_out.div_ceil(basek);
|
||||||
let res_znx: usize = VecZnx::alloc_bytes(module.n(), rank + 1, out_size);
|
let res_znx: usize = VecZnx::alloc_bytes(module.n(), rank + 1, out_size);
|
||||||
@@ -83,8 +87,11 @@ impl GGSWCiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>:
|
Module<B>: VecZnxDftAllocBytes
|
||||||
VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigAllocBytes + VecZnxNormalizeTmpBytes + VecZnxBigNormalizeTmpBytes,
|
+ VmpApplyDftToDftTmpBytes
|
||||||
|
+ VecZnxBigAllocBytes
|
||||||
|
+ VecZnxNormalizeTmpBytes
|
||||||
|
+ VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
GGSWCiphertext::keyswitch_scratch_space(
|
GGSWCiphertext::keyswitch_scratch_space(
|
||||||
module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,
|
module, basek, k_out, k_out, k_ksk, digits_ksk, k_tsk, digits_tsk, rank,
|
||||||
@@ -104,13 +111,13 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
DataTsk: DataRef,
|
DataTsk: DataRef,
|
||||||
Module<B>: VecZnxCopy
|
Module<B>: VecZnxCopy
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ IDFTTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
@@ -139,10 +146,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -167,10 +174,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -196,13 +203,13 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ IDFTTmpA<B>,
|
+ IDFTTmpA<B>,
|
||||||
@@ -288,9 +295,9 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
|
|
||||||
module.vec_znx_dft_copy(digits, digits - 1 - di, &mut tmp_a, 0, &ci_dft, col_i);
|
module.vec_znx_dft_copy(digits, digits - 1 - di, &mut tmp_a, 0, &ci_dft, col_i);
|
||||||
if di == 0 && col_i == 1 {
|
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 {
|
} 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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -330,10 +337,10 @@ impl<DataSelf: DataMut> GGSWCiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos},
|
layouts::{Backend, DataMut, DataRef, DataViewMut, Module, Scratch, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos},
|
||||||
};
|
};
|
||||||
@@ -21,14 +21,14 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank_out: usize,
|
rank_out: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
{
|
{
|
||||||
let in_size: usize = k_in.div_ceil(basek).div_ceil(digits);
|
let in_size: usize = k_in.div_ceil(basek).div_ceil(digits);
|
||||||
let out_size: usize = k_out.div_ceil(basek);
|
let out_size: usize = k_out.div_ceil(basek);
|
||||||
let ksk_size: usize = k_ksk.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 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 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);
|
+ module.vec_znx_dft_alloc_bytes(rank_in, in_size);
|
||||||
let normalize: usize = module.vec_znx_big_normalize_tmp_bytes();
|
let normalize: usize = module.vec_znx_big_normalize_tmp_bytes();
|
||||||
res_dft + ((ai_dft + vmp) | normalize)
|
res_dft + ((ai_dft + vmp) | normalize)
|
||||||
@@ -43,7 +43,7 @@ impl GLWECiphertext<Vec<u8>> {
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) -> usize
|
) -> usize
|
||||||
where
|
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)
|
Self::keyswitch_scratch_space(module, basek, k_out, k_out, k_ksk, digits, rank, rank)
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,7 @@ impl<DataSelf: DataRef> GLWECiphertext<DataSelf> {
|
|||||||
) where
|
) where
|
||||||
DataLhs: DataRef,
|
DataLhs: DataRef,
|
||||||
DataRhs: DataRef,
|
DataRhs: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes + VmpApplyTmpBytes + VecZnxBigNormalizeTmpBytes,
|
Module<B>: VecZnxDftAllocBytes + VmpApplyDftToDftTmpBytes + VecZnxBigNormalizeTmpBytes,
|
||||||
Scratch<B>: ScratchAvailable,
|
Scratch<B>: ScratchAvailable,
|
||||||
{
|
{
|
||||||
let basek: usize = self.basek();
|
let basek: usize = self.basek();
|
||||||
@@ -128,11 +128,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -157,11 +157,11 @@ impl<DataSelf: DataMut> GLWECiphertext<DataSelf> {
|
|||||||
scratch: &mut Scratch<B>,
|
scratch: &mut Scratch<B>,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -187,11 +187,11 @@ impl<D: DataRef> GLWECiphertext<D> {
|
|||||||
DataRes: DataMut,
|
DataRes: DataMut,
|
||||||
DataKey: DataRef,
|
DataKey: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -224,7 +224,7 @@ where
|
|||||||
DataRes: DataMut,
|
DataRes: DataMut,
|
||||||
DataIn: DataRef,
|
DataIn: DataRef,
|
||||||
DataVmp: DataRef,
|
DataVmp: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApply<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>,
|
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApplyDftToDft<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B>,
|
Scratch<B>: TakeVecZnxDft<B>,
|
||||||
{
|
{
|
||||||
let cols: usize = a.cols();
|
let cols: usize = a.cols();
|
||||||
@@ -232,7 +232,7 @@ where
|
|||||||
(0..cols - 1).for_each(|col_i| {
|
(0..cols - 1).for_each(|col_i| {
|
||||||
module.dft(1, 0, &mut ai_dft, col_i, a, col_i + 1);
|
module.dft(1, 0, &mut ai_dft, col_i, a, col_i + 1);
|
||||||
});
|
});
|
||||||
module.vmp_apply(&mut res_dft, &ai_dft, mat, scratch1);
|
module.vmp_apply_dft_to_dft(&mut res_dft, &ai_dft, mat, scratch1);
|
||||||
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_idft_consume(res_dft);
|
let mut res_big: VecZnxBig<DataRes, B> = module.vec_znx_idft_consume(res_dft);
|
||||||
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
|
module.vec_znx_big_add_small_inplace(&mut res_big, 0, a, 0);
|
||||||
res_big
|
res_big
|
||||||
@@ -250,7 +250,12 @@ where
|
|||||||
DataRes: DataMut,
|
DataRes: DataMut,
|
||||||
DataIn: DataRef,
|
DataIn: DataRef,
|
||||||
DataVmp: DataRef,
|
DataVmp: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes + DFT<B> + VmpApply<B> + VmpApplyAdd<B> + IDFTConsume<B> + VecZnxBigAddSmallInplace<B>,
|
Module<B>: VecZnxDftAllocBytes
|
||||||
|
+ DFT<B>
|
||||||
|
+ VmpApplyDftToDft<B>
|
||||||
|
+ VmpApplyDftToDftAdd<B>
|
||||||
|
+ IDFTConsume<B>
|
||||||
|
+ VecZnxBigAddSmallInplace<B>,
|
||||||
Scratch<B>: TakeVecZnxDft<B>,
|
Scratch<B>: TakeVecZnxDft<B>,
|
||||||
{
|
{
|
||||||
let cols: usize = a.cols();
|
let cols: usize = a.cols();
|
||||||
@@ -276,9 +281,9 @@ where
|
|||||||
});
|
});
|
||||||
|
|
||||||
if di == 0 {
|
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 {
|
} 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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use poulpy_hal::{
|
use poulpy_hal::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
DFT, IDFTConsume, ScratchAvailable, TakeVecZnx, TakeVecZnxDft, VecZnxBigAddSmallInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ZnxView, ZnxViewMut, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -21,11 +21,11 @@ impl LWECiphertext<Vec<u8>> {
|
|||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -47,10 +47,10 @@ impl<DLwe: DataMut> LWECiphertext<DLwe> {
|
|||||||
A: DataRef,
|
A: DataRef,
|
||||||
DKs: DataRef,
|
DKs: DataRef,
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
VmpPMatAlloc, VmpPrepare,
|
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -37,10 +37,10 @@ pub fn test_gglwe_automorphism_key_automorphism<B>(
|
|||||||
rank: usize,
|
rank: usize,
|
||||||
) where
|
) where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -214,11 +214,11 @@ pub fn test_gglwe_automorphism_key_automorphism_inplace<B>(
|
|||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes,
|
VecZnxAutomorphismInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes,
|
||||||
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes,
|
VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes,
|
||||||
VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
|
||||||
|
VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -57,9 +58,9 @@ pub fn test_ggsw_automorphism<B>(
|
|||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
+ VecZnxFillUniform
|
+ VecZnxFillUniform
|
||||||
@@ -211,9 +212,9 @@ pub fn test_ggsw_automorphism_inplace<B>(
|
|||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxDftCopy<B>
|
+ VecZnxDftCopy<B>
|
||||||
+ VecZnxDftAddInplace<B>
|
+ VecZnxDftAddInplace<B>
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub,
|
||||||
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
|
||||||
|
VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -53,10 +54,10 @@ pub fn test_glwe_automorphism<B>(
|
|||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
@@ -177,10 +178,10 @@ pub fn test_glwe_automorphism_inplace<B>(
|
|||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxBigAddInplace<B>
|
+ VecZnxBigAddInplace<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform,
|
VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
ZnNormalizeInplace,
|
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -45,9 +45,9 @@ where
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
@@ -150,9 +150,9 @@ where
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphism, VecZnxAutomorphismInplace,
|
||||||
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
VmpPMatAlloc, VmpPrepare,
|
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -42,10 +42,10 @@ where
|
|||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
@@ -134,10 +134,10 @@ pub fn test_gglwe_automorphisk_key_compressed_encrypt_sk<B>(
|
|||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
+ VecZnxAutomorphism
|
+ VecZnxAutomorphism
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSubScalarInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
|
VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -59,9 +60,9 @@ pub fn test_gglwe_switching_key_external_product<B>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VmpPrepare<B>,
|
+ VmpPrepare<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
@@ -199,9 +200,9 @@ pub fn test_gglwe_switching_key_external_product_inplace<B>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VmpPrepare<B>,
|
+ VmpPrepare<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ use poulpy_hal::{
|
|||||||
SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc,
|
VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAlloc,
|
||||||
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes,
|
||||||
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
|
VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScalarZnxToMut, ScratchOwned, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -56,9 +57,9 @@ pub fn test_ggsw_external_product<B>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
@@ -188,9 +189,9 @@ pub fn test_ggsw_external_product_inplace<B>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VecZnxBigAlloc<B>
|
+ VecZnxBigAlloc<B>
|
||||||
+ VecZnxDftAlloc<B>
|
+ VecZnxDftAlloc<B>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ use poulpy_hal::{
|
|||||||
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
DFT, IDFTConsume, ScratchOwnedAlloc, ScratchOwnedBorrow, SvpApplyInplace, SvpPPolAlloc, SvpPPolAllocBytes, SvpPrepare,
|
||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxDftAllocBytes, VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
VmpPMatAlloc, VmpPrepare,
|
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -56,9 +56,9 @@ pub fn test_glwe_external_product<B>(
|
|||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>,
|
+ VmpApplyDftToDftAdd<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
+ TakeVecZnxBigImpl<B>
|
+ TakeVecZnxBigImpl<B>
|
||||||
@@ -189,9 +189,9 @@ pub fn test_glwe_external_product_inplace<B>(
|
|||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>,
|
+ VmpApplyDftToDftAdd<B>,
|
||||||
B: Backend
|
B: Backend
|
||||||
+ TakeVecZnxDftImpl<B>
|
+ TakeVecZnxDftImpl<B>
|
||||||
+ TakeVecZnxBigImpl<B>
|
+ TakeVecZnxBigImpl<B>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSubScalarInplace,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -57,9 +57,9 @@ pub fn test_gglwe_switching_key_keyswitch<B>(
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxSubScalarInplace,
|
+ VecZnxSubScalarInplace,
|
||||||
@@ -204,9 +204,9 @@ pub fn test_gglwe_switching_key_keyswitch_inplace<B>(
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxSubScalarInplace,
|
+ VecZnxSubScalarInplace,
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use poulpy_hal::{
|
|||||||
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace,
|
SvpPPolAllocBytes, SvpPrepare, VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
VecZnxBigAddSmallInplace, VecZnxBigAlloc, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes,
|
||||||
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize,
|
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNormalize,
|
||||||
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply,
|
VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft,
|
||||||
VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -57,9 +57,9 @@ pub fn test_ggsw_keyswitch<B>(
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
@@ -201,9 +201,9 @@ pub fn test_ggsw_keyswitch_inplace<B>(
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ SvpApply<B>
|
+ SvpApply<B>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxBigAddInplace, VecZnxBigAddSmallInplace,
|
||||||
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
|
VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree,
|
||||||
VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -56,9 +56,9 @@ pub fn test_glwe_keyswitch<B>(
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree,
|
+ VecZnxSwithcDegree,
|
||||||
B: Backend
|
B: Backend
|
||||||
@@ -170,9 +170,9 @@ where
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree,
|
+ VecZnxSwithcDegree,
|
||||||
B: Backend
|
B: Backend
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use poulpy_hal::{
|
|||||||
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
VecZnxAddInplace, VecZnxAddNormal, VecZnxAddScalarInplace, VecZnxAutomorphismInplace, VecZnxBigAddInplace,
|
||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxDftAllocBytes,
|
||||||
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
VecZnxFillUniform, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform,
|
VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
ZnNormalizeInplace,
|
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -44,9 +44,9 @@ where
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ use poulpy_hal::{
|
|||||||
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
VecZnxBigAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
|
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace,
|
VecZnxNegateInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace,
|
||||||
VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
VmpPMatAlloc, VmpPrepare,
|
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned},
|
layouts::{Backend, Module, ScratchOwned},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -57,9 +57,9 @@ where
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxAutomorphismInplace
|
+ VecZnxAutomorphismInplace
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ use poulpy_hal::{
|
|||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigAutomorphismInplace, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
|
VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy, VecZnxDftAllocBytes, VecZnxFillUniform,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub,
|
||||||
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
|
||||||
|
VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut},
|
layouts::{Backend, Module, ScratchOwned, ZnxView, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -55,9 +56,9 @@ where
|
|||||||
+ VecZnxAddScalarInplace
|
+ VecZnxAddScalarInplace
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxSwithcDegree
|
+ VecZnxSwithcDegree
|
||||||
+ VecZnxCopy,
|
+ VecZnxCopy,
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ pub trait VmpPrepare<B: Backend> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
pub trait VmpApplyTmpBytes {
|
pub trait VmpApplyDftToDftTmpBytes {
|
||||||
fn vmp_apply_tmp_bytes(
|
fn vmp_apply_dft_to_dft_tmp_bytes(
|
||||||
&self,
|
&self,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -36,7 +36,7 @@ pub trait VmpApplyTmpBytes {
|
|||||||
) -> usize;
|
) -> usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VmpApply<B: Backend> {
|
pub trait VmpApplyDftToDft<B: Backend> {
|
||||||
/// Applies the vector matrix product [crate::layouts::VecZnxDft] x [crate::layouts::VmpPMat].
|
/// 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],
|
/// A vector matrix product numerically equivalent to a sum of [crate::api::SvpApply],
|
||||||
@@ -61,7 +61,7 @@ pub trait VmpApply<B: Backend> {
|
|||||||
/// * `a`: the left operand [crate::layouts::VecZnxDft] of the vector matrix product.
|
/// * `a`: the left operand [crate::layouts::VecZnxDft] of the vector matrix product.
|
||||||
/// * `b`: the right operand [crate::layouts::VmpPMat] 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].
|
/// * `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
|
where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
@@ -69,8 +69,8 @@ pub trait VmpApply<B: Backend> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
pub trait VmpApplyAddTmpBytes {
|
pub trait VmpApplyDftToDftAddTmpBytes {
|
||||||
fn vmp_apply_add_tmp_bytes(
|
fn vmp_apply_dft_to_dft_add_tmp_bytes(
|
||||||
&self,
|
&self,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -81,8 +81,8 @@ pub trait VmpApplyAddTmpBytes {
|
|||||||
) -> usize;
|
) -> usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait VmpApplyAdd<B: Backend> {
|
pub trait VmpApplyDftToDftAdd<B: Backend> {
|
||||||
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
|
where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
api::{
|
api::{
|
||||||
VmpApply, VmpApplyAdd, VmpApplyAddTmpBytes, VmpApplyTmpBytes, VmpPMatAlloc, VmpPMatAllocBytes, VmpPMatFromBytes,
|
VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftAddTmpBytes, VmpApplyDftToDftTmpBytes, VmpPMatAlloc,
|
||||||
VmpPrepare, VmpPrepareTmpBytes,
|
VmpPMatAllocBytes, VmpPMatFromBytes, VmpPrepare, VmpPrepareTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, MatZnxToRef, Module, Scratch, VecZnxDftToMut, VecZnxDftToRef, VmpPMatOwned, VmpPMatToMut, VmpPMatToRef},
|
layouts::{Backend, MatZnxToRef, Module, Scratch, VecZnxDftToMut, VecZnxDftToRef, VmpPMatOwned, VmpPMatToMut, VmpPMatToRef},
|
||||||
oep::{
|
oep::{
|
||||||
VmpApplyAddImpl, VmpApplyAddTmpBytesImpl, VmpApplyImpl, VmpApplyTmpBytesImpl, VmpPMatAllocBytesImpl, VmpPMatAllocImpl,
|
VmpApplyDftToDftAddImpl, VmpApplyDftToDftAddTmpBytesImpl, VmpApplyDftToDftImpl, VmpApplyDftToDftTmpBytesImpl,
|
||||||
VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl,
|
VmpPMatAllocBytesImpl, VmpPMatAllocImpl, VmpPMatFromBytesImpl, VmpPMatPrepareImpl, VmpPrepareTmpBytesImpl,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -59,11 +59,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<B> VmpApplyTmpBytes for Module<B>
|
impl<B> VmpApplyDftToDftTmpBytes for Module<B>
|
||||||
where
|
where
|
||||||
B: Backend + VmpApplyTmpBytesImpl<B>,
|
B: Backend + VmpApplyDftToDftTmpBytesImpl<B>,
|
||||||
{
|
{
|
||||||
fn vmp_apply_tmp_bytes(
|
fn vmp_apply_dft_to_dft_tmp_bytes(
|
||||||
&self,
|
&self,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -72,31 +72,31 @@ where
|
|||||||
b_cols_out: usize,
|
b_cols_out: usize,
|
||||||
b_size: usize,
|
b_size: usize,
|
||||||
) -> 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,
|
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
|
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
|
where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
C: VmpPMatToRef<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
|
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,
|
&self,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -105,22 +105,22 @@ where
|
|||||||
b_cols_out: usize,
|
b_cols_out: usize,
|
||||||
b_size: usize,
|
b_size: usize,
|
||||||
) -> 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,
|
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
|
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
|
where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
C: VmpPMatToRef<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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ pub unsafe trait VmpPMatPrepareImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VmpApplyTmpBytesImpl<B: Backend> {
|
pub unsafe trait VmpApplyDftToDftTmpBytesImpl<B: Backend> {
|
||||||
fn vmp_apply_tmp_bytes_impl(
|
fn vmp_apply_dft_to_dft_tmp_bytes_impl(
|
||||||
module: &Module<B>,
|
module: &Module<B>,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -73,8 +73,8 @@ pub unsafe trait VmpApplyTmpBytesImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VmpApplyImpl<B: Backend> {
|
pub unsafe trait VmpApplyDftToDftImpl<B: Backend> {
|
||||||
fn vmp_apply_impl<R, A, C>(module: &Module<B>, res: &mut R, a: &A, b: &C, scratch: &mut Scratch<B>)
|
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
|
where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
@@ -86,8 +86,8 @@ pub unsafe trait VmpApplyImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VmpApplyAddTmpBytesImpl<B: Backend> {
|
pub unsafe trait VmpApplyDftToDftAddTmpBytesImpl<B: Backend> {
|
||||||
fn vmp_apply_add_tmp_bytes_impl(
|
fn vmp_apply_dft_to_dft_add_tmp_bytes_impl(
|
||||||
module: &Module<B>,
|
module: &Module<B>,
|
||||||
res_size: usize,
|
res_size: usize,
|
||||||
a_size: usize,
|
a_size: usize,
|
||||||
@@ -102,10 +102,16 @@ pub unsafe trait VmpApplyAddTmpBytesImpl<B: Backend> {
|
|||||||
/// * See TODO for reference code.
|
/// * See TODO for reference code.
|
||||||
/// * See TODO for corresponding public API.
|
/// * See TODO for corresponding public API.
|
||||||
/// # Safety [crate::doc::backend_safety] for safety contract.
|
/// # Safety [crate::doc::backend_safety] for safety contract.
|
||||||
pub unsafe trait VmpApplyAddImpl<B: Backend> {
|
pub unsafe trait VmpApplyDftToDftAddImpl<B: Backend> {
|
||||||
// Same as [MatZnxDftOps::vmp_apply] except result is added on R instead of overwritting R.
|
// 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>)
|
fn vmp_apply_dft_to_dft_add_impl<R, A, C>(
|
||||||
where
|
module: &Module<B>,
|
||||||
|
res: &mut R,
|
||||||
|
a: &A,
|
||||||
|
b: &C,
|
||||||
|
scale: usize,
|
||||||
|
scratch: &mut Scratch<B>,
|
||||||
|
) where
|
||||||
R: VecZnxDftToMut<B>,
|
R: VecZnxDftToMut<B>,
|
||||||
A: VecZnxDftToRef<B>,
|
A: VecZnxDftToRef<B>,
|
||||||
C: VmpPMatToRef<B>;
|
C: VmpPMatToRef<B>;
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
api::{
|
api::{
|
||||||
DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize,
|
DFT, IDFTTmpA, ModuleNew, ScratchOwnedAlloc, ScratchOwnedBorrow, VecZnxBigAlloc, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VmpApply, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxBigNormalizeTmpBytes, VecZnxDftAlloc, VmpApplyDftToDft, VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare,
|
||||||
},
|
},
|
||||||
layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut},
|
layouts::{MatZnx, Module, ScratchOwned, VecZnx, VecZnxBig, VecZnxDft, VmpPMat, ZnxInfos, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
DFTImpl, IDFTTmpAImpl, ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl,
|
DFTImpl, IDFTTmpAImpl, ModuleNewImpl, ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl, VecZnxBigAllocImpl,
|
||||||
VecZnxBigNormalizeImpl, VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VmpApplyImpl, VmpApplyTmpBytesImpl,
|
VecZnxBigNormalizeImpl, VecZnxBigNormalizeTmpBytesImpl, VecZnxDftAllocImpl, VmpApplyDftToDftImpl,
|
||||||
VmpPMatAllocImpl, VmpPMatPrepareImpl,
|
VmpApplyDftToDftTmpBytesImpl, VmpPMatAllocImpl, VmpPMatPrepareImpl,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -17,14 +17,14 @@ pub fn test_vmp_apply<B>()
|
|||||||
where
|
where
|
||||||
B: Backend
|
B: Backend
|
||||||
+ ModuleNewImpl<B>
|
+ ModuleNewImpl<B>
|
||||||
+ VmpApplyTmpBytesImpl<B>
|
+ VmpApplyDftToDftTmpBytesImpl<B>
|
||||||
+ VecZnxBigNormalizeTmpBytesImpl<B>
|
+ VecZnxBigNormalizeTmpBytesImpl<B>
|
||||||
+ VmpPMatAllocImpl<B>
|
+ VmpPMatAllocImpl<B>
|
||||||
+ VecZnxDftAllocImpl<B>
|
+ VecZnxDftAllocImpl<B>
|
||||||
+ VecZnxBigAllocImpl<B>
|
+ VecZnxBigAllocImpl<B>
|
||||||
+ VmpPMatPrepareImpl<B>
|
+ VmpPMatPrepareImpl<B>
|
||||||
+ DFTImpl<B>
|
+ DFTImpl<B>
|
||||||
+ VmpApplyImpl<B>
|
+ VmpApplyDftToDftImpl<B>
|
||||||
+ IDFTTmpAImpl<B>
|
+ IDFTTmpAImpl<B>
|
||||||
+ ScratchOwnedAllocImpl<B>
|
+ ScratchOwnedAllocImpl<B>
|
||||||
+ ScratchOwnedBorrowImpl<B>
|
+ ScratchOwnedBorrowImpl<B>
|
||||||
@@ -49,7 +49,7 @@ where
|
|||||||
let mat_cols_out: usize = res_cols;
|
let mat_cols_out: usize = res_cols;
|
||||||
|
|
||||||
let mut scratch = ScratchOwned::alloc(
|
let mut scratch = ScratchOwned::alloc(
|
||||||
module.vmp_apply_tmp_bytes(
|
module.vmp_apply_dft_to_dft_tmp_bytes(
|
||||||
res_size,
|
res_size,
|
||||||
a_size,
|
a_size,
|
||||||
mat_rows,
|
mat_rows,
|
||||||
@@ -89,7 +89,7 @@ where
|
|||||||
module.dft(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_vi64: Vec<i64> = vec![i64::default(); n];
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ use poulpy_hal::{
|
|||||||
TakeVecZnxDftSlice, TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
TakeVecZnxDftSlice, TakeVecZnxSlice, VecZnxAddInplace, VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize,
|
||||||
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace,
|
VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd, VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace,
|
||||||
VecZnxDftZero, VecZnxIDFTTmpBytes, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace,
|
VecZnxDftZero, VecZnxIDFTTmpBytes, VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxSubABInplace, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxSubABInplace, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
|
VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, SvpPPol, VecZnx, ZnxView, ZnxZero},
|
||||||
};
|
};
|
||||||
@@ -32,7 +33,7 @@ pub fn cggi_blind_rotate_scratch_space<B: Backend>(
|
|||||||
) -> usize
|
) -> usize
|
||||||
where
|
where
|
||||||
Module<B>: VecZnxDftAllocBytes
|
Module<B>: VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxNormalizeTmpBytes
|
+ VecZnxNormalizeTmpBytes
|
||||||
+ VecZnxBigAllocBytes
|
+ VecZnxBigAllocBytes
|
||||||
+ VecZnxIDFTTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
@@ -47,7 +48,7 @@ where
|
|||||||
let vmp_res: usize = module.vec_znx_dft_alloc_bytes(cols, brk_size) * extension_factor;
|
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 vmp_xai: usize = module.vec_znx_dft_alloc_bytes(1, brk_size);
|
||||||
let acc_dft_add: usize = vmp_res;
|
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 {
|
let acc: usize = if extension_factor > 1 {
|
||||||
VecZnx::alloc_bytes(module.n(), cols, k_res.div_ceil(basek)) * extension_factor
|
VecZnx::alloc_bytes(module.n(), cols, k_res.div_ceil(basek)) * extension_factor
|
||||||
} else {
|
} else {
|
||||||
@@ -70,7 +71,7 @@ where
|
|||||||
Module<B>: VecZnxBigAllocBytes
|
Module<B>: VecZnxBigAllocBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxIDFTTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ IDFT<B>
|
+ IDFT<B>
|
||||||
@@ -88,8 +89,8 @@ where
|
|||||||
+ VecZnxNormalizeInplace<B>
|
+ VecZnxNormalizeInplace<B>
|
||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxMulXpMinusOneInplace
|
+ VecZnxMulXpMinusOneInplace
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes,
|
+ VecZnxNormalizeTmpBytes,
|
||||||
@@ -132,7 +133,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
Module<B>: VecZnxBigAllocBytes
|
Module<B>: VecZnxBigAllocBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxIDFTTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ IDFT<B>
|
+ IDFT<B>
|
||||||
@@ -151,7 +152,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxMulXpMinusOneInplace
|
+ VecZnxMulXpMinusOneInplace
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VmpApply<B>,
|
+ VmpApplyDftToDft<B>,
|
||||||
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
|
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
|
||||||
{
|
{
|
||||||
let n_glwe: usize = brk.n();
|
let n_glwe: usize = brk.n();
|
||||||
@@ -220,7 +221,7 @@ fn execute_block_binary_extended<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
|
|
||||||
// vmp_res = DFT(acc) * BRK[i]
|
// vmp_res = DFT(acc) * BRK[i]
|
||||||
(0..extension_factor).for_each(|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)
|
// Trivial case: no rotation between polynomials, we can directly multiply with (X^{-ai} - 1)
|
||||||
@@ -299,7 +300,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
Module<B>: VecZnxBigAllocBytes
|
Module<B>: VecZnxBigAllocBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxIDFTTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ IDFT<B>
|
+ IDFT<B>
|
||||||
@@ -317,7 +318,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ VecZnxNormalizeInplace<B>
|
+ VecZnxNormalizeInplace<B>
|
||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxMulXpMinusOneInplace
|
+ VecZnxMulXpMinusOneInplace
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VecZnxBigNormalize<B>,
|
+ VecZnxBigNormalize<B>,
|
||||||
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
|
Scratch<B>: TakeVecZnxDftSlice<B> + TakeVecZnxDft<B> + TakeVecZnxBig<B> + TakeVecZnxSlice + ScratchAvailable + TakeVecZnx,
|
||||||
{
|
{
|
||||||
@@ -377,7 +378,7 @@ fn execute_block_binary<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
let ai_pos: usize = ((aii + two_n as i64) & (two_n - 1) as i64) as usize;
|
let ai_pos: usize = ((aii + two_n as i64) & (two_n - 1) as i64) as usize;
|
||||||
|
|
||||||
// vmp_res = DFT(acc) * BRK[i]
|
// 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])
|
// DFT(X^ai -1) * (DFT(acc) * BRK[i])
|
||||||
(0..cols).for_each(|i| {
|
(0..cols).for_each(|i| {
|
||||||
@@ -413,7 +414,7 @@ fn execute_standard<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
Module<B>: VecZnxBigAllocBytes
|
Module<B>: VecZnxBigAllocBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxIDFTTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ IDFT<B>
|
+ IDFT<B>
|
||||||
@@ -431,8 +432,8 @@ fn execute_standard<DataRes, DataIn, DataBrk, B: Backend>(
|
|||||||
+ VecZnxNormalizeInplace<B>
|
+ VecZnxNormalizeInplace<B>
|
||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxMulXpMinusOneInplace
|
+ VecZnxMulXpMinusOneInplace
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigNormalize<B>
|
+ VecZnxBigNormalize<B>
|
||||||
+ VecZnxNormalizeTmpBytes,
|
+ VecZnxNormalizeTmpBytes,
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ use poulpy_hal::{
|
|||||||
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd,
|
VecZnxBigAddSmallInplace, VecZnxBigAllocBytes, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxCopy, VecZnxDftAdd,
|
||||||
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxDftZero, VecZnxFillUniform, VecZnxIDFTTmpBytes,
|
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftSubABInplace, VecZnxDftZero, VecZnxFillUniform, VecZnxIDFTTmpBytes,
|
||||||
VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate,
|
VecZnxMulXpMinusOneInplace, VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate,
|
||||||
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxRotateInplace, VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd,
|
||||||
VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
VmpApplyDftToDftTmpBytes, VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
layouts::{Backend, Module, ScratchOwned, ZnxView},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -31,7 +31,7 @@ where
|
|||||||
Module<B>: VecZnxBigAllocBytes
|
Module<B>: VecZnxBigAllocBytes
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VecZnxIDFTTmpBytes
|
+ VecZnxIDFTTmpBytes
|
||||||
+ IDFT<B>
|
+ IDFT<B>
|
||||||
@@ -64,8 +64,8 @@ where
|
|||||||
+ VecZnxSub
|
+ VecZnxSub
|
||||||
+ VmpPMatAlloc<B>
|
+ VmpPMatAlloc<B>
|
||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ ZnFillUniform
|
+ ZnFillUniform
|
||||||
+ ZnAddNormal
|
+ ZnAddNormal
|
||||||
+ ZnNormalizeInplace<B>,
|
+ ZnNormalizeInplace<B>,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use poulpy_hal::{
|
|||||||
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
||||||
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNegateInplace, VecZnxNormalizeInplace,
|
VecZnxDftAddInplace, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxNegateInplace, VecZnxNormalizeInplace,
|
||||||
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace,
|
VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace, VecZnxSub, VecZnxSubABInplace,
|
||||||
VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes,
|
VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
},
|
},
|
||||||
layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep},
|
layouts::{Backend, DataMut, DataRef, Module, Scratch, ToOwnedDeep},
|
||||||
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl},
|
oep::{ScratchOwnedAllocImpl, ScratchOwnedBorrowImpl},
|
||||||
@@ -40,10 +40,10 @@ where
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -138,10 +138,10 @@ pub fn circuit_bootstrap_core<DRes, DLwe, DBrk, BRA: BlindRotationAlgo, B>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -263,10 +263,10 @@ fn post_process<DataRes, DataA, B: Backend>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -335,10 +335,10 @@ pub fn pack<D: DataMut, B: Backend>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
@@ -414,10 +414,10 @@ fn combine<A: DataMut, D: DataMut, DataAK: DataRef, B: Backend>(
|
|||||||
+ VecZnxCopy
|
+ VecZnxCopy
|
||||||
+ VecZnxSubABInplace
|
+ VecZnxSubABInplace
|
||||||
+ VecZnxDftAllocBytes
|
+ VecZnxDftAllocBytes
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VecZnxBigNormalizeTmpBytes
|
+ VecZnxBigNormalizeTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ DFT<B>
|
+ DFT<B>
|
||||||
+ IDFTConsume<B>
|
+ IDFTConsume<B>
|
||||||
+ VecZnxBigAddSmallInplace<B>
|
+ VecZnxBigAddSmallInplace<B>
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ use poulpy_hal::{
|
|||||||
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
VecZnxBigAutomorphismInplace, VecZnxBigNormalize, VecZnxBigNormalizeTmpBytes, VecZnxBigSubSmallBInplace, VecZnxCopy,
|
||||||
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNegateInplace,
|
VecZnxDftAddInplace, VecZnxDftAlloc, VecZnxDftAllocBytes, VecZnxDftCopy, VecZnxFillUniform, VecZnxNegateInplace,
|
||||||
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace,
|
VecZnxNormalize, VecZnxNormalizeInplace, VecZnxNormalizeTmpBytes, VecZnxRotate, VecZnxRotateInplace, VecZnxRshInplace,
|
||||||
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApply, VmpApplyAdd, VmpApplyTmpBytes, VmpPMatAlloc, VmpPrepare,
|
VecZnxSub, VecZnxSubABInplace, VecZnxSwithcDegree, VmpApplyDftToDft, VmpApplyDftToDftAdd, VmpApplyDftToDftTmpBytes,
|
||||||
ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
VmpPMatAlloc, VmpPrepare, ZnAddNormal, ZnFillUniform, ZnNormalizeInplace,
|
||||||
},
|
},
|
||||||
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut},
|
layouts::{Backend, Module, ScalarZnx, ScratchOwned, ZnxView, ZnxViewMut},
|
||||||
oep::{
|
oep::{
|
||||||
@@ -66,9 +66,9 @@ where
|
|||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
@@ -247,9 +247,9 @@ where
|
|||||||
+ VmpPrepare<B>
|
+ VmpPrepare<B>
|
||||||
+ SvpPrepare<B>
|
+ SvpPrepare<B>
|
||||||
+ SvpPPolAlloc<B>
|
+ SvpPPolAlloc<B>
|
||||||
+ VmpApplyTmpBytes
|
+ VmpApplyDftToDftTmpBytes
|
||||||
+ VmpApply<B>
|
+ VmpApplyDftToDft<B>
|
||||||
+ VmpApplyAdd<B>
|
+ VmpApplyDftToDftAdd<B>
|
||||||
+ SvpPPolAllocBytes
|
+ SvpPPolAllocBytes
|
||||||
+ VecZnxRotateInplace
|
+ VecZnxRotateInplace
|
||||||
+ VecZnxBigAutomorphismInplace<B>
|
+ VecZnxBigAutomorphismInplace<B>
|
||||||
|
|||||||
Reference in New Issue
Block a user