poulpy_ckks/delegates/
plaintext.rs1use anyhow::Result;
2use poulpy_core::layouts::{GLWEInfos, GLWEToBackendRef, LWEInfos};
3use poulpy_hal::{
4 api::{VecZnxLshBackend, VecZnxLshTmpBytes, VecZnxRshBackend, VecZnxRshTmpBytes},
5 layouts::{Backend, Module, ScratchArena},
6};
7
8use crate::GLWEToBackendMut;
9
10use crate::{CKKSInfos, SetCKKSInfos, oep::CKKSPlaintextZnxImpl};
11
12use crate::api::CKKSPlaintextVecOps;
13
14impl<BE: Backend + CKKSPlaintextZnxImpl<BE>> CKKSPlaintextVecOps<BE> for Module<BE>
15where
16 BE: poulpy_hal::oep::HalVecZnxImpl<BE>,
17 Module<BE>: VecZnxLshBackend<BE> + VecZnxLshTmpBytes + VecZnxRshBackend<BE> + VecZnxRshTmpBytes,
18{
19 fn ckks_extract_pt_tmp_bytes(&self) -> usize {
20 BE::ckks_extract_pt_tmp_bytes(self)
21 }
22
23 fn ckks_extract_pt<D, S>(&self, dst: &mut D, src: &S, scratch: &mut ScratchArena<'_, BE>) -> Result<()>
24 where
25 D: GLWEToBackendMut<BE> + GLWEInfos + CKKSInfos + SetCKKSInfos + LWEInfos,
26 S: GLWEToBackendRef<BE> + GLWEInfos + LWEInfos + CKKSInfos,
27 {
28 BE::ckks_extract_pt(self, dst, src, scratch)
29 }
30}