pub fn estimate_cmux_noise_with_binary_ggsw<D1, D2, D3, K>(
dimension: GlweDimension,
polynomial_size: PolynomialSize,
base_log: DecompositionBaseLog,
l_gadget: DecompositionLevelCount,
dispersion_rlwe_0: D1,
dispersion_rlwe_1: D2,
dispersion_rgsw: D3,
log2_modulus: u32
) -> Variancewhere
D1: DispersionParameter,
D2: DispersionParameter,
D3: DispersionParameter,
K: KeyDispersion,
Expand description
Computes the dispersion of a CMUX controlled with a GGSW encrypting binary keys.
Example
use concrete_core::prelude::{
BinaryKeyKind, DecompositionBaseLog, DecompositionLevelCount, DispersionParameter,
GlweDimension, PolynomialSize, Variance,
};
use concrete_npe::estimate_cmux_noise_with_binary_ggsw;
let dimension = GlweDimension(3);
let l_gadget = DecompositionLevelCount(4);
let base_log = DecompositionBaseLog(7);
let polynomial_size = PolynomialSize(1024);
let dispersion_rgsw = Variance::from_modular_variance(2_f64.powi(26), 64);
let dispersion_rlwe_0 = Variance::from_modular_variance(2_f64.powi(25), 64);
let dispersion_rlwe_1 = Variance::from_modular_variance(2_f64.powi(25), 64);
// Compute the noise
let var_cmux = estimate_cmux_noise_with_binary_ggsw::<_, _, _, BinaryKeyKind>(
dimension,
polynomial_size,
base_log,
l_gadget,
dispersion_rlwe_0,
dispersion_rlwe_1,
dispersion_rgsw,
64,
);