diff --git a/tfhe/src/shortint/parameters/aliases.rs b/tfhe/src/shortint/parameters/aliases.rs index ece3fd696..968915a48 100644 --- a/tfhe/src/shortint/parameters/aliases.rs +++ b/tfhe/src/shortint/parameters/aliases.rs @@ -1,11 +1,9 @@ use crate::shortint::parameters::{ current_params, ClassicPBSParameters, CompactPublicKeyEncryptionParameters, - CompressionParameters, MultiBitPBSParameters, NoiseSquashingParameters, - ShortintKeySwitchingParameters, + CompressionParameters, MultiBitPBSParameters, NoiseSquashingCompressionParameters, + NoiseSquashingParameters, ShortintKeySwitchingParameters, }; -use crate::shortint::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs_gpu::V1_4_PARAM_MULTI_BIT_GROUP_4_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; -use crate::shortint::parameters::v1_4::V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use current_params::classic::gaussian::p_fail_2_minus_128::ks_pbs::{ V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, @@ -18,6 +16,7 @@ use current_params::key_switching::p_fail_2_minus_128::ks_pbs::{ V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; +use current_params::key_switching::p_fail_2_minus_128::ks_pbs_gpu::V1_4_PARAM_MULTI_BIT_GROUP_4_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use current_params::list_compression::p_fail_2_minus_128::{ V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, @@ -47,13 +46,12 @@ use current_params::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::{ V1_4_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_4_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, }; -use current_params::noise_squashing::p_fail_2_minus_128::V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - -use super::current_params::{ +use current_params::noise_squashing::p_fail_2_minus_128::{ V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, V1_4_NOISE_SQUASHING_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; -use super::NoiseSquashingCompressionParameters; // Aliases diff --git a/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs index 923ca2a1b..5525ada84 100644 --- a/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs @@ -1,109 +1,905 @@ -use crate::shortint::parameters::ClassicPBSParameters; -/// p-fail = 2^-128.079, algorithmic cost ~ 53, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000908718841765972) -pub const V1_4_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.979, algorithmic cost ~ 64, 2-norm = 3 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000225552987883164) -pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.316, algorithmic cost ~ 79, 2-norm = 7 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566871520497113) -pub const V1_4_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.07, algorithmic cost ~ 119, 2-norm = 15 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141997526567708) -pub const V1_4_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.387, algorithmic cost ~ 373, 2-norm = 31 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54094258729146E-7) -pub const V1_4_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.161, algorithmic cost ~ 879, 2-norm = 63 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.86838394271893E-8) -pub const V1_4_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.086, algorithmic cost ~ 2678, 2-norm = 127 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21842617086314E-8) -pub const V1_4_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.732, algorithmic cost ~ 14472, 2-norm = 255 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51751832878040E-9) -pub const V1_4_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.001, algorithmic cost ~ 64, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000227322816313304) -pub const V1_4_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.388, algorithmic cost ~ 79, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566548251955660) -pub const V1_4_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.377, algorithmic cost ~ 110, 2-norm = 5 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141649065433221) -pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.419, algorithmic cost ~ 373, 2-norm = 10 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54002900977798E-7) -pub const V1_4_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.12, algorithmic cost ~ 875, 2-norm = 21 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.87133101929087E-8) -pub const V1_4_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.035, algorithmic cost ~ 2665, 2-norm = 42 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21933451675456E-8) -pub const V1_4_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.081, algorithmic cost ~ 11765, 2-norm = 85 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50217479220037E-9) -pub const V1_4_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.444, algorithmic cost ~ 79, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566292898921224) -pub const V1_4_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.17, algorithmic cost ~ 110, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141883958441919) -pub const V1_4_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.024, algorithmic cost ~ 282, 2-norm = 4 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55124805211991E-7) -pub const V1_4_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.291, algorithmic cost ~ 875, 2-norm = 9 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85920026139855E-8) -pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.019, algorithmic cost ~ 2110, 2-norm = 18 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21962954961614E-8) -pub const V1_4_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.101, algorithmic cost ~ 11669, 2-norm = 36 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.54542171626785E-9) -pub const V1_4_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.417, algorithmic cost ~ 110, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141604488505394) -pub const V1_4_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.042, algorithmic cost ~ 260, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55074180343316E-7) -pub const V1_4_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.322, algorithmic cost ~ 875, 2-norm = 4 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85700998566799E-8) -pub const V1_4_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.079, algorithmic cost ~ 2081, 2-norm = 8 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21856153883081E-8) -pub const V1_4_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.676, algorithmic cost ~ 11659, 2-norm = 17 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51996713858843E-9) -pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.234, algorithmic cost ~ 259, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54529491312476E-7) -pub const V1_4_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.327, algorithmic cost ~ 875, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85660562707158E-8) -pub const V1_4_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.027, algorithmic cost ~ 2077, 2-norm = 4 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21948580616001E-8) -pub const V1_4_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.1, algorithmic cost ~ 9046, 2-norm = 8 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50136439949245E-9) -pub const V1_4_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.329, algorithmic cost ~ 875, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85650453742248E-8) -pub const V1_4_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.11, algorithmic cost ~ 2077, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21800917385509E-8) -pub const V1_4_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.382, algorithmic cost ~ 8949, 2-norm = 4 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.48905930129094E-9) -pub const V1_4_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.131, algorithmic cost ~ 2077, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21764001577886E-8) -pub const V1_4_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-130.318, algorithmic cost ~ 8932, 2-norm = 2 -/// Average number of encryptions of 0s ~ 33, peak noise ~ Variance(5.44858619003947E-9) -pub const V1_4_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.114, algorithmic cost ~ 8924, 2-norm = 1 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50077134664127E-9) -pub const V1_4_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev, +}; + +/// p-fail = 2^-128.298, algorithmic cost ~ 53, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(722), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(256), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.4543734131820254e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + pbs_base_log: DecompositionBaseLog(6), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.298, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.186, algorithmic cost ~ 64, 2-norm = 3 +pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(837), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3747142481837397e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.186, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.536, algorithmic cost ~ 79, 2-norm = 7 +pub const V1_4_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(885), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4742441118914234e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(7), + log2_p_fail: -128.536, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.103, algorithmic cost ~ 119, 2-norm = 15 +pub const V1_4_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(904), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0621869847945622e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -128.103, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.607, algorithmic cost ~ 373, 2-norm = 31 +pub const V1_4_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -128.607, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.068, algorithmic cost ~ 878, 2-norm = 63 +pub const V1_4_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1011), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.6766481861068427e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(63), + log2_p_fail: -128.068, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.147, algorithmic cost ~ 2675, 2-norm = 127 +pub const V1_4_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1060), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.199150706330062e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -128.147, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.787, algorithmic cost ~ 14472, 2-norm = 255 +pub const V1_4_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -128.787, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.219, algorithmic cost ~ 64, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(837), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3747142481837397e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.219, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.607, algorithmic cost ~ 79, 2-norm = 2 +pub const V1_4_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.607, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.597, algorithmic cost ~ 110, 2-norm = 5 +pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(866), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.046151696979124e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.597, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.639, algorithmic cost ~ 373, 2-norm = 10 +pub const V1_4_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(10), + log2_p_fail: -128.639, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.338, algorithmic cost ~ 875, 2-norm = 21 +pub const V1_4_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(21), + log2_p_fail: -128.338, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.045, algorithmic cost ~ 2662, 2-norm = 42 +pub const V1_4_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -128.045, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.137, algorithmic cost ~ 11765, 2-norm = 85 +pub const V1_4_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1108), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.144949396867639e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -129.137, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.664, algorithmic cost ~ 79, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.664, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.389, algorithmic cost ~ 110, 2-norm = 2 +pub const V1_4_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.389, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.041, algorithmic cost ~ 281, 2-norm = 4 +pub const V1_4_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(928), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.020485941329387e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.041, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.115, algorithmic cost ~ 874, 2-norm = 9 +pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.115, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.022, algorithmic cost ~ 2104, 2-norm = 18 +pub const V1_4_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1070), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.058296361594748e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -128.022, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.155, algorithmic cost ~ 11669, 2-norm = 36 +pub const V1_4_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -128.155, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.636, algorithmic cost ~ 110, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.636, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.261, algorithmic cost ~ 260, 2-norm = 2 +pub const V1_4_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(935), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.221794297398788e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.261, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.146, algorithmic cost ~ 874, 2-norm = 4 +pub const V1_4_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.146, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.11, algorithmic cost ~ 2079, 2-norm = 8 +pub const V1_4_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1057), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.581593413770833e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -128.11, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.731, algorithmic cost ~ 11659, 2-norm = 17 +pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -128.731, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.453, algorithmic cost ~ 259, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(931), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.666347503085657e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.453, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.152, algorithmic cost ~ 874, 2-norm = 2 +pub const V1_4_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.152, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.037, algorithmic cost ~ 2075, 2-norm = 4 +pub const V1_4_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.037, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.155, algorithmic cost ~ 9046, 2-norm = 8 +pub const V1_4_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -129.155, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.153, algorithmic cost ~ 874, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.153, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.12, algorithmic cost ~ 2075, 2-norm = 2 +pub const V1_4_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.12, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.438, algorithmic cost ~ 8949, 2-norm = 4 +pub const V1_4_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1101), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.5486665054375844e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -129.438, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.14, algorithmic cost ~ 2075, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.14, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-130.375, algorithmic cost ~ 8932, 2-norm = 2 +pub const V1_4_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -130.375, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.169, algorithmic cost ~ 8924, 2-norm = 1 +pub const V1_4_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -129.169, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs b/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs index 566b951d4..ffa4abd08 100644 --- a/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v1_4/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs @@ -1,13 +1,105 @@ -use crate::shortint::parameters::ClassicPBSParameters; -/// p-fail = 2^-139.952, algorithmic cost ~ 78, 2-norm = 3 -/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(0.0000207432665142053) -pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; -/// p-fail = 2^-129.632, algorithmic cost ~ 130, 2-norm = 5 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140242017242477) -pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; -/// p-fail = 2^-276.943, algorithmic cost ~ 3355, 2-norm = 9 -/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(4.04169957228641E-8) -pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; -/// p-fail = 2^-273.01, algorithmic cost ~ 20401, 2-norm = 17 -/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(2.56297356349261E-9) -pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev, +}; + +/// p-fail = 2^-140.214, algorithmic cost ~ 78, 2-norm = 3 +pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1024), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(6), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -140.214, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.856, algorithmic cost ~ 130, 2-norm = 5 +pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1024), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -129.856, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-277.205, algorithmic cost ~ 3355, 2-norm = 9 +pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(2048), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(24), + ks_level: DecompositionLevelCount(1), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -277.205, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-273.265, algorithmic cost ~ 20401, 2-norm = 17 +pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(2048), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(16), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -273.265, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs index 5aef7f5ee..34a817701 100644 --- a/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs @@ -1,145 +1,905 @@ -use crate::shortint::parameters::ClassicPBSParameters; -/// p-fail = 2^-128.384, algorithmic cost ~ 40, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000906507473628086) +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev, +}; + +/// p-fail = 2^-128.603, algorithmic cost ~ 40, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.979, algorithmic cost ~ 64, 2-norm = 3 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000225552987883164) + ClassicPBSParameters { + lwe_dimension: LweDimension(747), + glwe_dimension: GlweDimension(6), + polynomial_size: PolynomialSize(256), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.5944604865450687e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.603, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.186, algorithmic cost ~ 64, 2-norm = 3 pub const V1_4_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.316, algorithmic cost ~ 79, 2-norm = 7 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566871520497113) + ClassicPBSParameters { + lwe_dimension: LweDimension(837), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3747142481837397e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.186, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.536, algorithmic cost ~ 79, 2-norm = 7 pub const V1_4_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.07, algorithmic cost ~ 119, 2-norm = 15 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141997526567708) + ClassicPBSParameters { + lwe_dimension: LweDimension(885), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4742441118914234e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(7), + log2_p_fail: -128.536, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.103, algorithmic cost ~ 119, 2-norm = 15 pub const V1_4_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.387, algorithmic cost ~ 373, 2-norm = 31 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54094258729146E-7) + ClassicPBSParameters { + lwe_dimension: LweDimension(904), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0621869847945622e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -128.103, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.607, algorithmic cost ~ 373, 2-norm = 31 pub const V1_4_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.161, algorithmic cost ~ 879, 2-norm = 63 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.86838394271893E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -128.607, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.068, algorithmic cost ~ 878, 2-norm = 63 pub const V1_4_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.086, algorithmic cost ~ 2678, 2-norm = 127 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21842617086314E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1011), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.6766481861068427e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(63), + log2_p_fail: -128.068, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.147, algorithmic cost ~ 2675, 2-norm = 127 pub const V1_4_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.732, algorithmic cost ~ 14472, 2-norm = 255 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51751832878040E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1060), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.199150706330062e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -128.147, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.787, algorithmic cost ~ 14472, 2-norm = 255 pub const V1_4_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.066, algorithmic cost ~ 49, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000227203724588775) + ClassicPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -128.787, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.285, algorithmic cost ~ 49, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.388, algorithmic cost ~ 79, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566548251955660) + ClassicPBSParameters { + lwe_dimension: LweDimension(846), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.889344520786227e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.285, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.607, algorithmic cost ~ 79, 2-norm = 2 pub const V1_4_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.377, algorithmic cost ~ 110, 2-norm = 5 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141649065433221) + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.607, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.597, algorithmic cost ~ 110, 2-norm = 5 pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.419, algorithmic cost ~ 373, 2-norm = 10 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54002900977798E-7) + ClassicPBSParameters { + lwe_dimension: LweDimension(866), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.046151696979124e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.597, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.639, algorithmic cost ~ 373, 2-norm = 10 pub const V1_4_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.12, algorithmic cost ~ 875, 2-norm = 21 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.87133101929087E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(10), + log2_p_fail: -128.639, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.338, algorithmic cost ~ 875, 2-norm = 21 pub const V1_4_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.035, algorithmic cost ~ 2665, 2-norm = 42 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21933451675456E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(21), + log2_p_fail: -128.338, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.045, algorithmic cost ~ 2662, 2-norm = 42 pub const V1_4_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.081, algorithmic cost ~ 11765, 2-norm = 85 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50217479220037E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -128.045, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.137, algorithmic cost ~ 11765, 2-norm = 85 pub const V1_4_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.444, algorithmic cost ~ 79, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566292898921224) + ClassicPBSParameters { + lwe_dimension: LweDimension(1108), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.144949396867639e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -129.137, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.664, algorithmic cost ~ 79, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.17, algorithmic cost ~ 110, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141883958441919) + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.664, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.389, algorithmic cost ~ 110, 2-norm = 2 pub const V1_4_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.024, algorithmic cost ~ 282, 2-norm = 4 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55124805211991E-7) + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.389, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.041, algorithmic cost ~ 281, 2-norm = 4 pub const V1_4_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.291, algorithmic cost ~ 875, 2-norm = 9 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85920026139855E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(928), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.020485941329387e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.041, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.115, algorithmic cost ~ 874, 2-norm = 9 pub const V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.019, algorithmic cost ~ 2110, 2-norm = 18 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21962954961614E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.115, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.022, algorithmic cost ~ 2104, 2-norm = 18 pub const V1_4_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.101, algorithmic cost ~ 11669, 2-norm = 36 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.54542171626785E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1070), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.058296361594748e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -128.022, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.155, algorithmic cost ~ 11669, 2-norm = 36 pub const V1_4_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.417, algorithmic cost ~ 110, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141604488505394) + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -128.155, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.636, algorithmic cost ~ 110, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.042, algorithmic cost ~ 260, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55074180343316E-7) + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.636, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.261, algorithmic cost ~ 260, 2-norm = 2 pub const V1_4_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.322, algorithmic cost ~ 875, 2-norm = 4 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85700998566799E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(935), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.221794297398788e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.261, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.146, algorithmic cost ~ 874, 2-norm = 4 pub const V1_4_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.079, algorithmic cost ~ 2081, 2-norm = 8 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21856153883081E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.146, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.11, algorithmic cost ~ 2079, 2-norm = 8 pub const V1_4_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.676, algorithmic cost ~ 11659, 2-norm = 17 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51996713858843E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1057), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.581593413770833e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -128.11, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.731, algorithmic cost ~ 11659, 2-norm = 17 pub const V1_4_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.234, algorithmic cost ~ 259, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54529491312476E-7) + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -128.731, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.453, algorithmic cost ~ 259, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.327, algorithmic cost ~ 875, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85660562707158E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(931), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.666347503085657e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.453, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.152, algorithmic cost ~ 874, 2-norm = 2 pub const V1_4_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.027, algorithmic cost ~ 2077, 2-norm = 4 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21948580616001E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.152, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.037, algorithmic cost ~ 2075, 2-norm = 4 pub const V1_4_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.1, algorithmic cost ~ 9046, 2-norm = 8 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50136439949245E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.037, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.155, algorithmic cost ~ 9046, 2-norm = 8 pub const V1_4_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.329, algorithmic cost ~ 875, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85650453742248E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -129.155, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.153, algorithmic cost ~ 874, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.11, algorithmic cost ~ 2077, 2-norm = 2 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21800917385509E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1006), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.8277101294215978e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.153, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.12, algorithmic cost ~ 2075, 2-norm = 2 pub const V1_4_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.382, algorithmic cost ~ 8949, 2-norm = 4 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.48905930129094E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.12, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.438, algorithmic cost ~ 8949, 2-norm = 4 pub const V1_4_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-128.131, algorithmic cost ~ 2077, 2-norm = 1 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21764001577886E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(1101), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.5486665054375844e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -129.438, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.14, algorithmic cost ~ 2075, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-130.318, algorithmic cost ~ 8932, 2-norm = 2 -/// Average number of encryptions of 0s ~ 33, peak noise ~ Variance(5.44858619003947E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.14, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-130.375, algorithmic cost ~ 8932, 2-norm = 2 pub const V1_4_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128; -/// p-fail = 2^-129.114, algorithmic cost ~ 8924, 2-norm = 1 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50077134664127E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -130.375, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.169, algorithmic cost ~ 8924, 2-norm = 1 pub const V1_4_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128; + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -129.169, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs b/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs index 18eb5ca26..77c936fea 100644 --- a/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v1_4/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs @@ -1,17 +1,105 @@ -use crate::shortint::parameters::ClassicPBSParameters; -/// p-fail = 2^-128.181, algorithmic cost ~ 70, 2-norm = 3 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000226994502138943) +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev, +}; + +/// p-fail = 2^-128.4, algorithmic cost ~ 70, 2-norm = 3 pub const V1_4_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128; -/// p-fail = 2^-128.163, algorithmic cost ~ 128, 2-norm = 5 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141892645707080) + ClassicPBSParameters { + lwe_dimension: LweDimension(914), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.938614855855138e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.4, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.05, algorithmic cost ~ 128, 2-norm = 5 pub const V1_4_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; -/// p-fail = 2^-128.674, algorithmic cost ~ 2030, 2-norm = 9 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(8.83211431719384E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.05, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.729, algorithmic cost ~ 2030, 2-norm = 9 pub const V1_4_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128; -/// p-fail = 2^-129.799, algorithmic cost ~ 13785, 2-norm = 17 -/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.47094548750703E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1106), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.255365915886752e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.729, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.855, algorithmic cost ~ 13785, 2-norm = 17 pub const V1_4_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128; + ClassicPBSParameters { + lwe_dimension: LweDimension(1267), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.0240196581361536e-09, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -129.855, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_4/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs index f512a1e21..467d6a2da 100644 --- a/tfhe/src/shortint/parameters/v1_4/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_4/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs @@ -1,17 +1,89 @@ -use crate::shortint::parameters::ClassicPBSParameters; -/// p-fail = 2^-144.044, algorithmic cost ~ 67, 2-norm = 3 -/// Average number of encryptions of 0s ~ 15, peak noise ~ Variance(0.0000201396668936698) +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, +}; + +/// p-fail = 2^-144.322, algorithmic cost ~ 67, 2-norm = 3 pub const V1_4_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128; -/// p-fail = 2^-129.358, algorithmic cost ~ 113, 2-norm = 5 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955) + ClassicPBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -144.322, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-129.581, algorithmic cost ~ 113, 2-norm = 5 pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; -/// p-fail = 2^-128.771, algorithmic cost ~ 900, 2-norm = 9 -/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.82526029096167E-8) + ClassicPBSParameters { + lwe_dimension: LweDimension(918), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(45), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -129.581, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-128.992, algorithmic cost ~ 900, 2-norm = 9 pub const V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128; -/// p-fail = 2^-141.493, algorithmic cost ~ 11860, 2-norm = 17 -/// Average number of encryptions of 0s ~ 31, peak noise ~ Variance(5.00776611824111E-9) + ClassicPBSParameters { + lwe_dimension: LweDimension(1077), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.992, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; + +/// p-fail = 2^-141.559, algorithmic cost ~ 11860, 2-norm = 17 pub const V1_4_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = - crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128; + ClassicPBSParameters { + lwe_dimension: LweDimension(1117), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -141.559, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_4/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs index 1f73665cc..c93f00753 100644 --- a/tfhe/src/shortint/parameters/v1_4/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_4/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs @@ -1,4 +1,8 @@ -use crate::shortint::parameters::CompactPublicKeyEncryptionParameters; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, CompactCiphertextListExpansionKind, + CompactPublicKeyEncryptionParameters, DynamicDistribution, LweDimension, MessageModulus, + SupportedCompactPkeZkScheme, +}; /// This parameter set should be used when doing zk proof of public key encryption pub const V1_4_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: @@ -13,10 +17,50 @@ pub const V1_4_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; -pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; +pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(2048), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(17), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V2, +} +.validate(); -pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; +pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(2048), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(17), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V2, +} +.validate(); -pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; +pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(1024), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(43), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V1, +} +.validate(); -pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; +pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(2048), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(17), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V1, +} +.validate(); diff --git a/tfhe/src/shortint/parameters/v1_4/hpu.rs b/tfhe/src/shortint/parameters/v1_4/hpu.rs index 44db8c5ff..2621a1a58 100644 --- a/tfhe/src/shortint/parameters/v1_4/hpu.rs +++ b/tfhe/src/shortint/parameters/v1_4/hpu.rs @@ -1,13 +1,75 @@ -use crate::shortint::parameters::KeySwitch32PBSParameters; +use crate::core_crypto::prelude::DynamicDistribution; +use crate::shortint::parameters::{ + CiphertextModulus32, KeySwitch32PBSParameters, ModulusSwitchType, StandardDev, +}; +use crate::shortint::prelude::{ + DecompositionBaseLog, DecompositionLevelCount, GlweDimension, LweDimension, PolynomialSize, +}; +use crate::shortint::{CarryModulus, CiphertextModulus, MaxNoiseLevel, MessageModulus}; // Gaussian parameters set with pfail 2^-64 pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_GAUSSIAN_2M64: KeySwitch32PBSParameters = - crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_GAUSSIAN_2M64; + KeySwitch32PBSParameters { + lwe_dimension: LweDimension(804), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.963599673924788e-6, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8452674713391114e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(8), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.0, + post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21), + ciphertext_modulus: CiphertextModulus::new_native(), + modulus_switch_noise_reduction_params: ModulusSwitchType::Standard, + }; // TUniform parameters set with pfail 2^-64 pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M64: KeySwitch32PBSParameters = - crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M64; + KeySwitch32PBSParameters { + lwe_dimension: LweDimension(839), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.0, + post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21), + ciphertext_modulus: CiphertextModulus::new_native(), + modulus_switch_noise_reduction_params: ModulusSwitchType::Standard, + }; // TUniform parameters set with pfail 2^-128 pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters = - crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128; + KeySwitch32PBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(8), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.0, + post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21), + ciphertext_modulus: CiphertextModulus::new_native(), + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/key_switching/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_4/key_switching/p_fail_2_minus_128/ks_pbs.rs index 77d34ba1c..b78446cec 100644 --- a/tfhe/src/shortint/parameters/v1_4/key_switching/p_fail_2_minus_128/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_4/key_switching/p_fail_2_minus_128/ks_pbs.rs @@ -33,16 +33,35 @@ pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M /// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters /// arriving under the big key, requires a KS + PBS to get to the big key -pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + ShortintKeySwitchingParameters = + V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; -pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; +pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(24), + destination_key: EncryptionKeyChoice::Big, +}; -pub const V1_4_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; +pub const V1_4_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + ShortintKeySwitchingParameters = + V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; /// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters /// arriving under the small key, requires a PBS to get to the big key -pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; +pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(4), + destination_key: EncryptionKeyChoice::Small, +}; /// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters /// arriving under the big key, requires a KS + PBS to get to the big key -pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; +pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(24), + destination_key: EncryptionKeyChoice::Big, +}; diff --git a/tfhe/src/shortint/parameters/v1_4/ks32/tuniform/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_4/ks32/tuniform/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..68b575a7b --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_4/ks32/tuniform/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,26 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, CiphertextModulus32, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, GlweDimension, KeySwitch32PBSParameters, + LweDimension, MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, +}; + +/// p-fail = 2^-129.581, algorithmic cost ~ 113, 2-norm = 5 +pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters = + KeySwitch32PBSParameters { + lwe_dimension: LweDimension(918), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(13), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -129.581, + post_keyswitch_ciphertext_modulus: CiphertextModulus32::new_native(), + ciphertext_modulus: CiphertextModulus::new_native(), + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + }; diff --git a/tfhe/src/shortint/parameters/v1_4/ks32/tuniform/p_fail_2_minus_128/ks_pbs/mod.rs b/tfhe/src/shortint/parameters/v1_4/ks32/tuniform/p_fail_2_minus_128/ks_pbs/mod.rs deleted file mode 100644 index 7a50bb312..000000000 --- a/tfhe/src/shortint/parameters/v1_4/ks32/tuniform/p_fail_2_minus_128/ks_pbs/mod.rs +++ /dev/null @@ -1,6 +0,0 @@ -use crate::shortint::parameters::KeySwitch32PBSParameters; - -// p-fail = 2^-129.358, algorithmic cost ~ 113, 2-norm = 5 -// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955) -pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters = - crate::shortint::parameters::v1_3::V1_3_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128; diff --git a/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_128/mod.rs index 2d38c8801..b1ec0cb19 100644 --- a/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_128/mod.rs +++ b/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_128/mod.rs @@ -1,15 +1,64 @@ -use crate::shortint::parameters::CompressionParameters; +use crate::shortint::parameters::{ + CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev, +}; -/// p-fail = 2^-129.053, algorithmic cost ~ 41458 +/// p-fail = 2^-129.275, algorithmic cost ~ 41458 pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters = - crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(3), + packing_ks_base_log: DecompositionBaseLog(4), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), + }; -/// p-fail = 2^-129.053, algorithmic cost ~ 41458 -pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +/// p-fail = 2^-129.275, algorithmic cost ~ 41458 +pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + CompressionParameters = CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(3), + packing_ks_base_log: DecompositionBaseLog(4), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), +}; -/// p-fail = 2^-128.0, algorithmic cost ~ 42199 +/// p-fail = 2^-128.218, algorithmic cost ~ 42199 pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters = - crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev( + StandardDev(1.339775301998614e-07), + ), + }; -/// p-fail = 2^-128.0, algorithmic cost ~ 42199 -pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; +/// p-fail = 2^-128.218, algorithmic cost ~ 42199 +pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + CompressionParameters = CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), +}; diff --git a/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_64/mod.rs index 2aedca721..717588eaa 100644 --- a/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_64/mod.rs +++ b/tfhe/src/shortint/parameters/v1_4/list_compression/p_fail_2_minus_64/mod.rs @@ -1,15 +1,64 @@ -use crate::shortint::parameters::CompressionParameters; +use crate::shortint::parameters::{ + CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev, +}; /// p-fail = 2^-72.052, algorithmic cost ~ 42700 pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = - crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), + }; /// p-fail = 2^-72.052, algorithmic cost ~ 42700 -pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + CompressionParameters = CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), +}; /// p-fail = 2^-64.174, algorithmic cost ~ 58234 pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters = - crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + CompressionParameters { + br_level: DecompositionLevelCount(2), + br_base_log: DecompositionBaseLog(15), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev( + StandardDev(1.339775301998614e-07), + ), + }; /// p-fail = 2^-64.174, algorithmic cost ~ 58234 -pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + CompressionParameters = CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), +}; diff --git a/tfhe/src/shortint/parameters/v1_4/mod.rs b/tfhe/src/shortint/parameters/v1_4/mod.rs index d56b62a62..a0c970013 100644 --- a/tfhe/src/shortint/parameters/v1_4/mod.rs +++ b/tfhe/src/shortint/parameters/v1_4/mod.rs @@ -1,4 +1,4 @@ -//! FHE Parameters as they were defined in TFHE-rs 1.3. +//! FHE Parameters as they were defined in TFHE-rs 1.4. //! //! These parameters may be used for backward compatibility. @@ -10,7 +10,6 @@ pub mod list_compression; pub mod meta; pub mod multi_bit; pub mod noise_squashing; - pub use classic::compact_pk::gaussian::p_fail_2_minus_128::ks_pbs::*; pub use classic::compact_pk::gaussian::p_fail_2_minus_128::pbs_ks::*; pub use classic::compact_pk::gaussian::p_fail_2_minus_64::ks_pbs::*; @@ -43,9 +42,6 @@ pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::*; pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*; pub use noise_squashing::p_fail_2_minus_128::*; -#[cfg(feature = "hpu")] -pub use hpu::*; - use crate::shortint::parameters::{ ClassicPBSParameters, CompactPublicKeyEncryptionParameters, CompressionParameters, KeySwitch32PBSParameters, MetaParameters, MultiBitPBSParameters, @@ -1580,6 +1576,12 @@ pub const VEC_ALL_MULTI_BIT_PBS_PARAMETERS: [(&MultiBitPBSParameters, &str); 240 ), ]; +/// All [`KeySwitch32PBSParameters`] in this module. +pub const VEC_ALL_KEY_SWITCH32_PBS_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 1] = [( + &V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128, + "V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128", +)]; + /// All [`CompressionParameters`] in this module. pub const VEC_ALL_COMPRESSION_PARAMETERS: [(&CompressionParameters, &str); 8] = [ ( @@ -1725,6 +1727,8 @@ pub const VEC_ALL_KS32_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 1] = [( #[cfg(feature = "hpu")] pub mod hpu; +#[cfg(feature = "hpu")] +pub use hpu::*; #[cfg(feature = "hpu")] pub const VEC_ALL_HPU_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 3] = [ diff --git a/tfhe/src/shortint/parameters/v1_4/noise_squashing/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_4/noise_squashing/p_fail_2_minus_128/mod.rs index 98c16ccb5..fedf515b0 100644 --- a/tfhe/src/shortint/parameters/v1_4/noise_squashing/p_fail_2_minus_128/mod.rs +++ b/tfhe/src/shortint/parameters/v1_4/noise_squashing/p_fail_2_minus_128/mod.rs @@ -1,13 +1,35 @@ use crate::shortint::parameters::noise_squashing::NoiseSquashingClassicParameters; use crate::shortint::parameters::{ CarryModulus, CoreCiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, - DynamicDistribution, GlweDimension, MessageModulus, ModulusSwitchType, + DynamicDistribution, GlweDimension, LweCiphertextCount, MessageModulus, ModulusSwitchType, NoiseSquashingCompressionParameters, NoiseSquashingParameters, PolynomialSize, }; -pub const V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingParameters = crate::shortint::parameters::v1_3::V1_3_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +pub const V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + NoiseSquashingParameters = NoiseSquashingParameters::Classic(NoiseSquashingClassicParameters { + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(2048), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(30), + decomp_base_log: DecompositionBaseLog(24), + decomp_level_count: DecompositionLevelCount(3), + modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction, + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CoreCiphertextModulus::::new_native(), +}); -pub const V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingCompressionParameters = crate::shortint::parameters::v1_3::V1_3_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +pub const V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + NoiseSquashingCompressionParameters = NoiseSquashingCompressionParameters { + packing_ks_level: DecompositionLevelCount(1), + packing_ks_base_log: DecompositionBaseLog(61), + packing_ks_polynomial_size: PolynomialSize(1024), + packing_ks_glwe_dimension: GlweDimension(6), + lwe_per_glwe: LweCiphertextCount(128), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(3), + ciphertext_modulus: CoreCiphertextModulus::::new_native(), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), +}; pub const V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingParameters = NoiseSquashingParameters::Classic(NoiseSquashingClassicParameters { diff --git a/tfhe/src/shortint/prelude.rs b/tfhe/src/shortint/prelude.rs index fe812324e..8653f9f8e 100644 --- a/tfhe/src/shortint/prelude.rs +++ b/tfhe/src/shortint/prelude.rs @@ -7,7 +7,7 @@ pub use super::ciphertext::{Ciphertext, CompressedCiphertext, PBSOrder}; pub use super::client_key::ClientKey; pub use super::gen_keys; pub use super::key_switching_key::KeySwitchingKey; -pub use super::parameters::current_params::V1_4_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128; +pub use super::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs::V1_4_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128; pub use super::parameters::{ CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, DecompositionLevelCount, EncryptionKeyChoice, GlweDimension, LweDimension, MaxNoiseLevel,