arnaucube
arnaucube/poulpyPublic Self-hosted repository
Add updated noise equation for glwe keyswitch
Pro7ech jeanphilippe.bossuat@gmail.com
Mon, 17 Nov 2025 16:48:00 +0100
commit

923db5e715800d04eebb98d183e5ef4b1cdf10f1

parent

84adaa4a83cb00a84bc34cb899f504322c1bc98d

1 files changed, 26 insertions(+), 0 deletions(-)

jump to
M poulpy-core/src/noise/mod.rs → poulpy-core/src/noise/mod.rs

@@ -40,6 +40,32 @@ }

#[allow(clippy::too_many_arguments)] #[allow(dead_code)] +pub(crate) fn var_noise_gglwe_product_v2( + n: f64, + logq: usize, + dnum: usize, + dsize: usize, + base2k: usize, + var_xs: f64, + var_msg: f64, + var_a_err: f64, + var_gct_err_lhs: f64, + var_gct_err_rhs: f64, + rank_in: f64, +) -> f64 { + let base: f64 = ((dsize * base2k) as f64).exp2(); + let var_base: f64 = base * base / 12f64; + let scale: f64 = (logq as f64).exp2(); + + let mut noise: f64 = (dnum as f64) * n * var_base * (var_gct_err_lhs + var_xs * var_gct_err_rhs); + noise += var_msg * var_a_err * var_base * n; + noise *= rank_in; + noise /= scale * scale; + noise +} + +#[allow(clippy::too_many_arguments)] +#[allow(dead_code)] pub(crate) fn log2_std_noise_gglwe_product( n: f64, base2k: usize,