Skip to main content

poulpy_ckks/delegates/
copy.rs

1use anyhow::Result;
2use poulpy_core::{
3    GLWECopy, GLWEShift,
4    layouts::{GLWEToBackendMut, GLWEToBackendRef},
5};
6use poulpy_hal::layouts::{Backend, Module, ScratchArena};
7
8use crate::{CKKSCtBounds, SetCKKSInfos, api::CKKSCopyOps, oep::CKKSCopyImpl};
9
10impl<BE: Backend + CKKSCopyImpl<BE>> CKKSCopyOps<BE> for Module<BE>
11where
12    Module<BE>: GLWECopy<BE> + GLWEShift<BE>,
13{
14    fn ckks_copy_tmp_bytes(&self) -> usize {
15        BE::ckks_copy_tmp_bytes(self)
16    }
17
18    fn ckks_copy<Dst, Src>(&self, dst: &mut Dst, src: &Src, scratch: &mut ScratchArena<'_, BE>) -> Result<()>
19    where
20        Dst: GLWEToBackendMut<BE> + CKKSCtBounds + SetCKKSInfos,
21        Src: GLWEToBackendRef<BE> + CKKSCtBounds,
22    {
23        BE::ckks_copy(self, dst, src, scratch)
24    }
25}