pub fn estimate_cmux_noise_with_binary_ggsw<T, 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
) -> Variance where
    T: UnsignedInteger,
    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_commons::dispersion::{DispersionParameter, Variance};
use concrete_commons::key_kinds::BinaryKeyKind;
use concrete_commons::parameters::{
    DecompositionBaseLog, DecompositionLevelCount, GlweDimension, PolynomialSize,
};
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::<u64>(f64::powi(2., 26));
let dispersion_rlwe_0 = Variance::from_modular_variance::<u64>(f64::powi(2., 25));
let dispersion_rlwe_1 = Variance::from_modular_variance::<u64>(f64::powi(2., 25));
// Compute the noise
let var_cmux = estimate_cmux_noise_with_binary_ggsw::<u64, _, _, _, BinaryKeyKind>(
    dimension,
    polynomial_size,
    base_log,
    l_gadget,
    dispersion_rlwe_0,
    dispersion_rlwe_1,
    dispersion_rgsw,
);