pub fn estimate_wop_pbs_noise<D1, D2, K1, K2>(
    number_of_bits_to_extract: ExtractedBitsCount,
    lwe_mask_size_after_bit_extraction: LweDimension,
    poly_size: PolynomialSize,
    glwe_mask_size: GlweDimension,
    base_log_cb: DecompositionBaseLog,
    level_cb: DecompositionLevelCount,
    dispersion_cb_bsk: D1,
    dispersion_cb_pfksk: D2,
    log2_modulus: u32
) -> Variancewhere
    D1: DispersionParameter,
    D2: DispersionParameter,
    K1: KeyDispersion,
    K2: KeyDispersion,
Expand description

Compute the dispersion after a WoP-PBS.

Example

use concrete_core::prelude::*;
use concrete_npe::estimate_wop_pbs_noise;
let number_of_bits_to_extract = ExtractedBitsCount(8);
let lwe_mask_size = LweDimension(667);
let poly_size = PolynomialSize(1024);
let glwe_mask_size = GlweDimension(2);
let base_log_cb = DecompositionBaseLog(4);
let level_cb = DecompositionLevelCount(7);
let dispersion_cb_bsk = Variance(2_f64.powi(-104));
let dispersion_cb_pfksk = Variance(2_f64.powi(-31));
let var_wop_pbs = estimate_wop_pbs_noise::<_, _, BinaryKeyKind, BinaryKeyKind>(
    number_of_bits_to_extract,
    lwe_mask_size,
    poly_size,
    glwe_mask_size,
    base_log_cb,
    level_cb,
    dispersion_cb_bsk,
    dispersion_cb_pfksk,
    64,
);