pub fn znx_automorphism_ref(p: i64, res: &mut [i64], a: &[i64]) { #[cfg(debug_assertions)] { assert_eq!(res.len(), a.len()); } let n: usize = res.len(); let mut k: usize = 0usize; let mask: usize = 2 * n - 1; let p_2n = (p & mask as i64) as usize; res[0] = a[0]; for ai in a.iter().take(n).skip(1) { k = (k + p_2n) & mask; if k < n { res[k] = *ai } else { res[k - n] = -*ai } } }