diff --git a/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs.rs index d6311f3f1..3fb47eaa4 100644 --- a/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs.rs @@ -1,29 +1,34 @@ -// p-fail = 2^-64.023, algorithmic cost ~ 41, 2-norm = 1 +use crate::core_crypto::prelude::*; +use crate::shortint::ciphertext::MaxNoiseLevel; +use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; +use crate::shortint::parameters::{CarryModulus, MessageModulus}; + +// p-fail = 2^-65.348, algorithmic cost ~ 41, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(698), + lwe_dimension: LweDimension(700), glwe_dimension: GlweDimension(3), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.713423140641025e-05, + 3.58747009344789e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, )), - pbs_base_log: DecompositionBaseLog(17), + pbs_base_log: DecompositionBaseLog(16), 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: -64.023, + log2_p_fail: -65.348, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.308, algorithmic cost ~ 59, 2-norm = 3 +// p-fail = 2^-64.263, algorithmic cost ~ 59, 2-norm = 3 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(750), @@ -42,20 +47,20 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.308, + log2_p_fail: -64.263, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.344, algorithmic cost ~ 67, 2-norm = 7 +// p-fail = 2^-64.119, algorithmic cost ~ 68, 2-norm = 7 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(860), + lwe_dimension: LweDimension(862), glwe_dimension: GlweDimension(2), polynomial_size: PolynomialSize(1024), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.269322810630956e-06, + 2.192351209970737e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, @@ -67,45 +72,45 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(2), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(7), - log2_p_fail: -64.344, + log2_p_fail: -64.119, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.129, algorithmic cost ~ 90, 2-norm = 15 +// p-fail = 2^-64.871, algorithmic cost ~ 127, 2-norm = 15 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(882), + lwe_dimension: LweDimension(840), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.5525608373746976e-06, + 3.2044815829012556e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), - pbs_level: DecompositionLevelCount(1), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(6), + ks_level: DecompositionLevelCount(5), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(15), - log2_p_fail: -64.129, + log2_p_fail: -64.871, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.068, algorithmic cost ~ 291, 2-norm = 31 +// p-fail = 2^-64.172, algorithmic cost ~ 292, 2-norm = 31 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(948), + lwe_dimension: LweDimension(950), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.971708676181112e-07, + 4.803076706754256e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -117,88 +122,88 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(2), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(31), - log2_p_fail: -64.068, + log2_p_fail: -64.172, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.094, algorithmic cost ~ 671, 2-norm = 63 +// p-fail = 2^-64.06, algorithmic cost ~ 887, 2-norm = 63 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(998), + lwe_dimension: LweDimension(984), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.0982243334250348e-07, + 2.671498718807819e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(14), - pbs_level: DecompositionLevelCount(2), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(3), ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(63), - log2_p_fail: -64.094, + log2_p_fail: -64.06, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.187, algorithmic cost ~ 2847, 2-norm = 127 +// p-fail = 2^-64.03, algorithmic cost ~ 2853, 2-norm = 127 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1016), + lwe_dimension: LweDimension(1018), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.5380716530060473e-07, + 1.4859028577569142e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(9), + pbs_base_log: DecompositionBaseLog(8), pbs_level: DecompositionLevelCount(4), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(20), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(64), max_noise_level: MaxNoiseLevel::new(127), - log2_p_fail: -64.187, + log2_p_fail: -64.03, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.317, algorithmic cost ~ 46, 2-norm = 1 +// p-fail = 2^-64.171, algorithmic cost ~ 49, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(780), + lwe_dimension: LweDimension(766), glwe_dimension: GlweDimension(3), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.022819800659706e-06, + 1.1488024017979662e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, )), - pbs_base_log: DecompositionBaseLog(17), + pbs_base_log: DecompositionBaseLog(16), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(4), - ks_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.317, + log2_p_fail: -64.171, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.708, algorithmic cost ~ 67, 2-norm = 2 +// p-fail = 2^-64.615, algorithmic cost ~ 67, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(860), @@ -217,38 +222,38 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(4), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.708, + log2_p_fail: -64.615, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.584, algorithmic cost ~ 82, 2-norm = 5 +// p-fail = 2^-64.442, algorithmic cost ~ 84, 2-norm = 5 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(912), + lwe_dimension: LweDimension(888), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.252442079345288e-07, + 1.3998779623487315e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(5), - ks_level: DecompositionLevelCount(3), + 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: -64.584, + log2_p_fail: -64.442, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.113, algorithmic cost ~ 291, 2-norm = 10 +// p-fail = 2^-64.099, algorithmic cost ~ 291, 2-norm = 10 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(948), @@ -260,27 +265,27 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(15), + pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(10), - log2_p_fail: -64.113, + log2_p_fail: -64.099, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.374, algorithmic cost ~ 662, 2-norm = 21 +// p-fail = 2^-64.298, algorithmic cost ~ 665, 2-norm = 21 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(986), + lwe_dimension: LweDimension(990), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.5808859899421514e-07, + 2.408776579232607e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -292,20 +297,20 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(4), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(21), - log2_p_fail: -64.374, + log2_p_fail: -64.298, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.148, algorithmic cost ~ 2365, 2-norm = 42 +// p-fail = 2^-64.168, algorithmic cost ~ 2408, 2-norm = 42 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1016), + lwe_dimension: LweDimension(1020), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.5380716530060473e-07, + 1.4355035400171204e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -313,17 +318,17 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiB pbs_base_log: DecompositionBaseLog(11), pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(20), + ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(42), - log2_p_fail: -64.148, + log2_p_fail: -64.168, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.732, algorithmic cost ~ 67, 2-norm = 1 +// p-fail = 2^-64.709, algorithmic cost ~ 67, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(860), @@ -342,63 +347,63 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(8), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.732, + log2_p_fail: -64.709, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.346, algorithmic cost ~ 82, 2-norm = 2 +// p-fail = 2^-64.253, algorithmic cost ~ 82, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(908), + lwe_dimension: LweDimension(910), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.913537993191986e-07, + 9.577287511785255e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(5), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.346, + log2_p_fail: -64.253, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.035, algorithmic cost ~ 221, 2-norm = 4 +// p-fail = 2^-64.115, algorithmic cost ~ 291, 2-norm = 4 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(928), + lwe_dimension: LweDimension(948), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 7.020485941329387e-07, + 4.971708676181112e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(22), - pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(2), - ks_level: DecompositionLevelCount(9), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.035, + log2_p_fail: -64.115, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.168, algorithmic cost ~ 661, 2-norm = 9 +// p-fail = 2^-64.02, algorithmic cost ~ 661, 2-norm = 9 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -417,13 +422,13 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.168, + log2_p_fail: -64.02, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.268, algorithmic cost ~ 2365, 2-norm = 18 +// p-fail = 2^-64.111, algorithmic cost ~ 2365, 2-norm = 18 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1016), @@ -435,20 +440,20 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(11), + pbs_base_log: DecompositionBaseLog(10), pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(20), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(18), - log2_p_fail: -64.268, + log2_p_fail: -64.111, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.496, algorithmic cost ~ 82, 2-norm = 1 +// p-fail = 2^-64.305, algorithmic cost ~ 82, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(908), @@ -460,45 +465,45 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(5), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.496, + log2_p_fail: -64.305, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.088, algorithmic cost ~ 189, 2-norm = 2 +// p-fail = 2^-64.085, algorithmic cost ~ 220, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(962), + lwe_dimension: LweDimension(926), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.9048344098472363e-07, + 7.266969277511613e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(4), - ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(9), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.088, + log2_p_fail: -64.085, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.207, algorithmic cost ~ 661, 2-norm = 4 +// p-fail = 2^-64.178, algorithmic cost ~ 661, 2-norm = 4 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -517,63 +522,63 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(16), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.207, + log2_p_fail: -64.178, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.229, algorithmic cost ~ 1886, 2-norm = 8 +// p-fail = 2^-64.259, algorithmic cost ~ 2365, 2-norm = 8 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1018), + lwe_dimension: LweDimension(1016), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.4859028577569142e-07, + 1.5380716530060473e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(14), - pbs_level: DecompositionLevelCount(2), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(20), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(8), - log2_p_fail: -64.229, + log2_p_fail: -64.259, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.364, algorithmic cost ~ 187, 2-norm = 1 +// p-fail = 2^-64.126, algorithmic cost ~ 189, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(952), + lwe_dimension: LweDimension(962), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.64016444919407e-07, + 3.9048344098472363e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(32), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.364, + log2_p_fail: -64.126, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.006, algorithmic cost ~ 661, 2-norm = 2 +// p-fail = 2^-64.207, algorithmic cost ~ 661, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -585,27 +590,27 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(18), + pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(32), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.006, + log2_p_fail: -64.207, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.188, algorithmic cost ~ 1882, 2-norm = 4 +// p-fail = 2^-64.114, algorithmic cost ~ 1886, 2-norm = 4 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1016), + lwe_dimension: LweDimension(1018), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.5380716530060473e-07, + 1.4859028577569142e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -617,13 +622,13 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(32), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.188, + log2_p_fail: -64.114, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.216, algorithmic cost ~ 661, 2-norm = 1 +// p-fail = 2^-64.214, algorithmic cost ~ 661, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -642,13 +647,13 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(64), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.216, + log2_p_fail: -64.214, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.268, algorithmic cost ~ 1882, 2-norm = 2 +// p-fail = 2^-64.16, algorithmic cost ~ 1882, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1016), @@ -667,13 +672,13 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(64), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.268, + log2_p_fail: -64.16, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.242, algorithmic cost ~ 1882, 2-norm = 1 +// p-fail = 2^-64.261, algorithmic cost ~ 1882, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1016), @@ -685,14 +690,14 @@ pub const PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(13), + pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(20), message_modulus: MessageModulus(128), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.242, + log2_p_fail: -64.261, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), @@ -727,14 +732,14 @@ pub const ALL_MULTI_BIT_PARAMETER_2_VEC: [MultiBitPBSParameters; 28] = [ PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, -]; // p-fail = 2^-65.739, algorithmic cost ~ 45, 2-norm = 1 +]; // p-fail = 2^-67.438, algorithmic cost ~ 45, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(699), + lwe_dimension: LweDimension(702), glwe_dimension: GlweDimension(3), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.649903349592563e-05, + 3.4657891610923056e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, @@ -746,13 +751,13 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(2), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -65.739, + log2_p_fail: -67.438, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.31, algorithmic cost ~ 61, 2-norm = 3 +// p-fail = 2^-64.086, algorithmic cost ~ 61, 2-norm = 3 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(750), @@ -764,77 +769,77 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(20), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.31, + log2_p_fail: -64.086, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.861, algorithmic cost ~ 70, 2-norm = 7 +// p-fail = 2^-64.377, algorithmic cost ~ 70, 2-norm = 7 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(861), + lwe_dimension: LweDimension(864), glwe_dimension: GlweDimension(2), polynomial_size: PolynomialSize(1024), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.230505012256408e-06, + 2.117990356129097e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), 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: -64.861, + log2_p_fail: -64.377, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.129, algorithmic cost ~ 87, 2-norm = 15 +// p-fail = 2^-64.87, algorithmic cost ~ 127, 2-norm = 15 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(885), + lwe_dimension: LweDimension(840), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.4742441118914234e-06, + 3.2044815829012556e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), - pbs_level: DecompositionLevelCount(1), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(6), + ks_level: DecompositionLevelCount(5), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(15), - log2_p_fail: -64.129, + log2_p_fail: -64.87, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.072, algorithmic cost ~ 287, 2-norm = 31 +// p-fail = 2^-64.453, algorithmic cost ~ 288, 2-norm = 31 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(948), + lwe_dimension: LweDimension(951), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.971708676181112e-07, + 4.7209178960699193e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -846,38 +851,38 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(2), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(31), - log2_p_fail: -64.072, + log2_p_fail: -64.453, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.107, algorithmic cost ~ 653, 2-norm = 63 +// p-fail = 2^-64.606, algorithmic cost ~ 884, 2-norm = 63 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(996), + lwe_dimension: LweDimension(987), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.1718912188918548e-07, + 2.5367387617400005e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(14), - pbs_level: DecompositionLevelCount(2), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(3), ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(63), - log2_p_fail: -64.107, + log2_p_fail: -64.606, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.013, algorithmic cost ~ 2859, 2-norm = 127 +// p-fail = 2^-64.101, algorithmic cost ~ 3855, 2-norm = 127 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -889,45 +894,45 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(9), - pbs_level: DecompositionLevelCount(4), + pbs_base_log: DecompositionBaseLog(6), + pbs_level: DecompositionLevelCount(6), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(64), max_noise_level: MaxNoiseLevel::new(127), - log2_p_fail: -64.013, + log2_p_fail: -64.101, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.251, algorithmic cost ~ 50, 2-norm = 1 +// p-fail = 2^-64.031, algorithmic cost ~ 58, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(780), + lwe_dimension: LweDimension(765), glwe_dimension: GlweDimension(3), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.022819800659706e-06, + 1.1687951746275051e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, )), pbs_base_log: DecompositionBaseLog(16), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(4), - ks_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(7), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.251, + log2_p_fail: -64.031, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-65.185, algorithmic cost ~ 70, 2-norm = 2 +// p-fail = 2^-65.038, algorithmic cost ~ 70, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(861), @@ -939,45 +944,45 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), 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: -65.185, + log2_p_fail: -65.038, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.046, algorithmic cost ~ 78, 2-norm = 5 +// p-fail = 2^-64.442, algorithmic cost ~ 80, 2-norm = 5 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(912), + lwe_dimension: LweDimension(891), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.252442079345288e-07, + 1.3292631075564801e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(5), - ks_level: DecompositionLevelCount(3), + 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: -64.046, + log2_p_fail: -64.442, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.114, algorithmic cost ~ 287, 2-norm = 10 +// p-fail = 2^-64.086, algorithmic cost ~ 287, 2-norm = 10 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(948), @@ -996,38 +1001,38 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(4), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(10), - log2_p_fail: -64.114, + log2_p_fail: -64.086, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.343, algorithmic cost ~ 647, 2-norm = 21 +// p-fail = 2^-64.068, algorithmic cost ~ 653, 2-norm = 21 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(987), + lwe_dimension: LweDimension(996), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.5367387617400005e-07, + 2.1718912188918548e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(15), + pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(21), - log2_p_fail: -64.343, + log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.094, algorithmic cost ~ 2859, 2-norm = 42 +// p-fail = 2^-64.064, algorithmic cost ~ 2859, 2-norm = 42 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -1039,20 +1044,20 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(10), + pbs_base_log: DecompositionBaseLog(8), pbs_level: DecompositionLevelCount(4), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(42), - log2_p_fail: -64.094, + log2_p_fail: -64.064, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-65.207, algorithmic cost ~ 70, 2-norm = 1 +// p-fail = 2^-64.73, algorithmic cost ~ 70, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(861), @@ -1064,77 +1069,77 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(19), 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: -65.207, + log2_p_fail: -64.73, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.685, algorithmic cost ~ 78, 2-norm = 2 +// p-fail = 2^-64.769, algorithmic cost ~ 78, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(909), + lwe_dimension: LweDimension(912), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.743962418842052e-07, + 9.252442079345288e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(5), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.685, + log2_p_fail: -64.769, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.029, algorithmic cost ~ 276, 2-norm = 4 +// p-fail = 2^-64.113, algorithmic cost ~ 287, 2-norm = 4 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(918), + lwe_dimension: LweDimension(948), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 8.342532835418705e-07, + 4.971708676181112e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(21), - pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(18), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.029, + log2_p_fail: -64.113, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.173, algorithmic cost ~ 645, 2-norm = 9 +// p-fail = 2^-64.437, algorithmic cost ~ 647, 2-norm = 9 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(984), + lwe_dimension: LweDimension(987), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.671498718807819e-07, + 2.5367387617400005e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1146,13 +1151,13 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.173, + log2_p_fail: -64.437, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.121, algorithmic cost ~ 2360, 2-norm = 18 +// p-fail = 2^-64.139, algorithmic cost ~ 2859, 2-norm = 18 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -1164,20 +1169,20 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(11), - pbs_level: DecompositionLevelCount(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(18), - log2_p_fail: -64.121, + log2_p_fail: -64.139, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.84, algorithmic cost ~ 78, 2-norm = 1 +// p-fail = 2^-64.351, algorithmic cost ~ 78, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(909), @@ -1189,45 +1194,45 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(20), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(5), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.84, + log2_p_fail: -64.351, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.308, algorithmic cost ~ 179, 2-norm = 2 +// p-fail = 2^-64.117, algorithmic cost ~ 287, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(966), + lwe_dimension: LweDimension(948), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.644435945205178e-07, + 4.971708676181112e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(21), - pbs_level: DecompositionLevelCount(1), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.308, + log2_p_fail: -64.117, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.208, algorithmic cost ~ 645, 2-norm = 4 +// p-fail = 2^-64.138, algorithmic cost ~ 645, 2-norm = 4 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -1246,13 +1251,13 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(16), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.208, + log2_p_fail: -64.138, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.047, algorithmic cost ~ 2360, 2-norm = 8 +// p-fail = 2^-64.111, algorithmic cost ~ 2360, 2-norm = 8 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -1264,27 +1269,27 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(13), + pbs_base_log: DecompositionBaseLog(10), pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(8), - log2_p_fail: -64.047, + log2_p_fail: -64.111, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.112, algorithmic cost ~ 177, 2-norm = 1 +// p-fail = 2^-64.194, algorithmic cost ~ 181, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(951), + lwe_dimension: LweDimension(972), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.7209178960699193e-07, + 3.286032625627172e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1296,13 +1301,13 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(32), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.112, + log2_p_fail: -64.194, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.212, algorithmic cost ~ 645, 2-norm = 2 +// p-fail = 2^-64.146, algorithmic cost ~ 645, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -1321,13 +1326,13 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(32), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.212, + log2_p_fail: -64.146, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.049, algorithmic cost ~ 1862, 2-norm = 4 +// p-fail = 2^-64.145, algorithmic cost ~ 2360, 2-norm = 4 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -1339,45 +1344,45 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(14), - pbs_level: DecompositionLevelCount(2), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(32), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.049, + log2_p_fail: -64.145, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.099, algorithmic cost ~ 615, 2-norm = 1 +// p-fail = 2^-64.212, algorithmic cost ~ 645, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(978), + lwe_dimension: LweDimension(984), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.962875621642539e-07, + 2.671498718807819e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(21), - pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(19), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(64), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.099, + log2_p_fail: -64.212, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.129, algorithmic cost ~ 1862, 2-norm = 2 +// p-fail = 2^-64.153, algorithmic cost ~ 2360, 2-norm = 2 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -1389,20 +1394,20 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiB glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(14), - pbs_level: DecompositionLevelCount(2), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(21), message_modulus: MessageModulus(64), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.129, + log2_p_fail: -64.153, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.149, algorithmic cost ~ 1862, 2-norm = 1 +// p-fail = 2^-64.079, algorithmic cost ~ 1862, 2-norm = 1 pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1014), @@ -1421,13 +1426,12 @@ pub const PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiB message_modulus: MessageModulus(128), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.149, + log2_p_fail: -64.079, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; - pub const ALL_MULTI_BIT_PARAMETER_3_VEC: [MultiBitPBSParameters; 28] = [ PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, @@ -1458,7 +1462,3 @@ pub const ALL_MULTI_BIT_PARAMETER_3_VEC: [MultiBitPBSParameters; 28] = [ PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, ]; -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; diff --git a/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs_gpu.rs index 58f233cc4..5aa96c940 100644 --- a/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/multi_bit/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -3,9 +3,7 @@ use crate::shortint::ciphertext::MaxNoiseLevel; use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; use crate::shortint::parameters::{CarryModulus, MessageModulus}; -// Group 2 - -// p-fail = 2^-64.577, algorithmic cost ~ 65, 2-norm = 3 +// p-fail = 2^-64.547, algorithmic cost ~ 65, 2-norm = 3 pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(786), @@ -17,46 +15,45 @@ pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(23), + pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.577, + log2_p_fail: -64.547, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; - -// p-fail = 2^-64.605, algorithmic cost ~ 83, 2-norm = 5 +// p-fail = 2^-64.193, algorithmic cost ~ 84, 2-norm = 5 pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(842), + lwe_dimension: LweDimension(854), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.0957909745987987e-06, + 2.516834908405394e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), 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: -64.605, + log2_p_fail: -64.193, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.168, algorithmic cost ~ 661, 2-norm = 9 +// p-fail = 2^-64.02, algorithmic cost ~ 661, 2-norm = 9 pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(984), @@ -75,15 +72,13 @@ pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.168, + log2_p_fail: -64.02, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; - -// Group 3 -// p-fail = 2^-64.579, algorithmic cost ~ 73, 2-norm = 3 +// p-fail = 2^-64.522, algorithmic cost ~ 73, 2-norm = 3 pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(786), @@ -102,46 +97,45 @@ pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.579, + log2_p_fail: -64.522, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-65.005, algorithmic cost ~ 79, 2-norm = 5 +// p-fail = 2^-64.537, algorithmic cost ~ 81, 2-norm = 5 pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(843), + lwe_dimension: LweDimension(858), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.0428360625436423e-06, + 2.348996819227123e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(22), + pbs_base_log: DecompositionBaseLog(21), 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: -65.005, + log2_p_fail: -64.537, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; - -// p-fail = 2^-64.173, algorithmic cost ~ 645, 2-norm = 9 +// p-fail = 2^-64.437, algorithmic cost ~ 647, 2-norm = 9 pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(984), + lwe_dimension: LweDimension(987), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.671498718807819e-07, + 2.5367387617400005e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -153,9 +147,84 @@ pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.173, + log2_p_fail: -64.437, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; +// p-fail = 2^-65.276, algorithmic cost ~ 98, 2-norm = 3 +pub const PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(788), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.85955004091113e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -65.276, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.038, algorithmic cost ~ 101, 2-norm = 5 +pub const PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(896), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.2193982745221312e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(20), + 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: -64.038, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.245, algorithmic cost ~ 769, 2-norm = 9 +pub const PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(988), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.4933466919468334e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(13), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -64.245, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +};