arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-hal/src/reference/vec_znx/copy.rs
poulpy-hal/src/reference/vec_znx/copy.rsRaw
 1use crate::{
 2    layouts::{VecZnx, VecZnxToMut, VecZnxToRef, ZnxInfos, ZnxView, ZnxViewMut},
 3    reference::znx::{ZnxCopy, ZnxZero},
 4};
 5
 6pub fn vec_znx_copy<R, A, ZNXARI>(res: &mut R, res_col: usize, a: &A, a_col: usize)
 7where
 8    R: VecZnxToMut,
 9    A: VecZnxToRef,
10    ZNXARI: ZnxCopy + ZnxZero,
11{
12    let mut res: VecZnx<&mut [u8]> = res.to_mut();
13    let a: VecZnx<&[u8]> = a.to_ref();
14
15    #[cfg(debug_assertions)]
16    {
17        assert_eq!(res.n(), a.n())
18    }
19
20    let res_size = res.size();
21    let a_size = a.size();
22
23    let min_size = res_size.min(a_size);
24
25    for j in 0..min_size {
26        ZNXARI::znx_copy(res.at_mut(res_col, j), a.at(a_col, j));
27    }
28
29    for j in min_size..res_size {
30        ZNXARI::znx_zero(res.at_mut(res_col, j));
31    }
32}