diff --git a/base2k/src/vec_znx.rs b/base2k/src/vec_znx.rs index e9c8b42..6daa95e 100644 --- a/base2k/src/vec_znx.rs +++ b/base2k/src/vec_znx.rs @@ -475,13 +475,18 @@ pub fn rsh(log_base2k: usize, a: &mut T, k: usize, tmp_bytes: & (cols_steps..cols).for_each(|i| { izip!(carry_i64.iter_mut(), a.at_mut(i).iter_mut()).for_each(|(ci, xi)| { *xi += *ci << log_base2k; - *ci = *xi & mask; - *xi /= 1 << k_rem; + *ci = get_base_k_carry(*xi, k_rem); + *xi = (*xi-*ci)>>k_rem; }); }) } } +#[inline(always)] +fn get_base_k_carry(x: i64, k: usize) -> i64{ + (x<<64-k) >> (64-k) +} + pub trait VecZnxCommon: VecZnxApi + Infos {} pub trait VecZnxOps { diff --git a/rns/src/modulus/impl_u64/223123123123123 123 123 b/rns/src/modulus/impl_u64/223123123123123 123 123 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/rns/src/modulus/impl_u64/223123123123123 123 123 @@ -0,0 +1 @@ +