From f26579ace3fadf278ff3d1a60ac03a55826a4063 Mon Sep 17 00:00:00 2001 From: "Mayeul@Zama" <69792125+mayeul-zama@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:47:18 +0100 Subject: [PATCH] feat(shortint): add modulus switch noise reduction params --- tests/backward_compatibility/shortint.rs | 1 + .../fine-grained-apis/shortint/parameters.md | 1 + tfhe/src/c_api/shortint/parameters.rs | 1 + tfhe/src/integer/gpu/mod.rs | 1 + tfhe/src/integer/mod.rs | 1 + tfhe/src/js_on_wasm_api/shortint.rs | 1 + .../backward_compatibility/parameters/mod.rs | 58 +++++++++++++++++-- .../modulus_switch_noise_reduction.rs | 7 +++ tfhe/src/shortint/mod.rs | 1 + .../gaussian/p_fail_2_minus_64/ks_pbs.rs | 36 ++++++++++++ .../gaussian/p_fail_2_minus_64/pbs_ks.rs | 4 ++ .../gaussian/p_fail_2_minus_64/ks_pbs.rs | 36 ++++++++++++ .../gaussian/p_fail_2_minus_64/pbs_ks.rs | 4 ++ .../tuniform/p_fail_2_minus_64/ks_pbs.rs | 1 + .../parameters/coverage_parameters.rs | 5 ++ tfhe/src/shortint/parameters/mod.rs | 13 +++++ .../gaussian/p_fail_2_minus_64/ks_pbs.rs | 36 ++++++++++++ .../gaussian/p_fail_2_minus_64/pbs_ks.rs | 4 ++ .../gaussian/p_fail_2_minus_64/ks_pbs.rs | 36 ++++++++++++ .../gaussian/p_fail_2_minus_64/pbs_ks.rs | 4 ++ .../tuniform/p_fail_2_minus_64/ks_pbs.rs | 1 + 21 files changed, 248 insertions(+), 4 deletions(-) create mode 100644 tfhe/src/shortint/backward_compatibility/parameters/modulus_switch_noise_reduction.rs diff --git a/tests/backward_compatibility/shortint.rs b/tests/backward_compatibility/shortint.rs index 6d2ef67c3..b813c94c8 100644 --- a/tests/backward_compatibility/shortint.rs +++ b/tests/backward_compatibility/shortint.rs @@ -46,6 +46,7 @@ pub fn load_params(test_params: &TestParameterSet) -> ClassicPBSParameters { _ => panic!("Invalid encryption key choice"), } }, + modulus_switch_noise_reduction_params: None, } } diff --git a/tfhe/docs/references/fine-grained-apis/shortint/parameters.md b/tfhe/docs/references/fine-grained-apis/shortint/parameters.md index 19f7280ae..22b8b78f0 100644 --- a/tfhe/docs/references/fine-grained-apis/shortint/parameters.md +++ b/tfhe/docs/references/fine-grained-apis/shortint/parameters.md @@ -73,6 +73,7 @@ fn main() { log2_p_fail: -71.625, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; } ``` diff --git a/tfhe/src/c_api/shortint/parameters.rs b/tfhe/src/c_api/shortint/parameters.rs index 118937075..89834ecc0 100644 --- a/tfhe/src/c_api/shortint/parameters.rs +++ b/tfhe/src/c_api/shortint/parameters.rs @@ -64,6 +64,7 @@ impl TryFrom for crate::shortint::ClassicPBSParameters { max_noise_level: MaxNoiseLevel::new(c_params.max_noise_level), log2_p_fail: c_params.log2_p_fail, encryption_key_choice: c_params.encryption_key_choice.into(), + modulus_switch_noise_reduction_params: None, }) } } diff --git a/tfhe/src/integer/gpu/mod.rs b/tfhe/src/integer/gpu/mod.rs index ba2c16ec9..1b0c1c18f 100644 --- a/tfhe/src/integer/gpu/mod.rs +++ b/tfhe/src/integer/gpu/mod.rs @@ -157,6 +157,7 @@ where log2_p_fail: 1.0, ciphertext_modulus: wopbs_params.ciphertext_modulus, encryption_key_choice: wopbs_params.encryption_key_choice, + modulus_switch_noise_reduction_params: None, }; crate::shortint::parameters::ShortintParameterSet::try_new_pbs_and_wopbs_param_set(( diff --git a/tfhe/src/integer/mod.rs b/tfhe/src/integer/mod.rs index 9fcd4cd57..cc3b9931b 100755 --- a/tfhe/src/integer/mod.rs +++ b/tfhe/src/integer/mod.rs @@ -140,6 +140,7 @@ where log2_p_fail: 1.0, ciphertext_modulus: wopbs_params.ciphertext_modulus, encryption_key_choice: wopbs_params.encryption_key_choice, + modulus_switch_noise_reduction_params: None, }; crate::shortint::parameters::ShortintParameterSet::try_new_pbs_and_wopbs_param_set(( diff --git a/tfhe/src/js_on_wasm_api/shortint.rs b/tfhe/src/js_on_wasm_api/shortint.rs index 5d89e30c4..3df1d8c1f 100644 --- a/tfhe/src/js_on_wasm_api/shortint.rs +++ b/tfhe/src/js_on_wasm_api/shortint.rs @@ -467,6 +467,7 @@ impl Shortint { ) .unwrap(), encryption_key_choice: encryption_key_choice.into(), + modulus_switch_noise_reduction_params: None, }) } diff --git a/tfhe/src/shortint/backward_compatibility/parameters/mod.rs b/tfhe/src/shortint/backward_compatibility/parameters/mod.rs index 9d1cc537b..18befd133 100644 --- a/tfhe/src/shortint/backward_compatibility/parameters/mod.rs +++ b/tfhe/src/shortint/backward_compatibility/parameters/mod.rs @@ -1,11 +1,16 @@ pub mod compact_public_key_only; pub mod key_switching; pub mod list_compression; +pub mod modulus_switch_noise_reduction; -use tfhe_versionable::VersionsDispatch; - -use crate::shortint::parameters::*; +use crate::core_crypto::commons::parameters::{ + DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension, + LweDimension, PolynomialSize, +}; +use crate::shortint::parameters::{ShortintParameterSetInner, SupportedCompactPkeZkScheme}; use crate::shortint::*; +use std::convert::Infallible; +use tfhe_versionable::{Upgrade, Version, VersionsDispatch}; #[derive(VersionsDispatch)] pub enum MessageModulusVersions { @@ -17,9 +22,54 @@ pub enum CarryModulusVersions { V0(CarryModulus), } +#[derive(Version)] +pub struct ClassicPBSParametersV0 { + pub lwe_dimension: LweDimension, + pub glwe_dimension: GlweDimension, + pub polynomial_size: PolynomialSize, + pub lwe_noise_distribution: DynamicDistribution, + pub glwe_noise_distribution: DynamicDistribution, + pub pbs_base_log: DecompositionBaseLog, + pub pbs_level: DecompositionLevelCount, + pub ks_base_log: DecompositionBaseLog, + pub ks_level: DecompositionLevelCount, + pub message_modulus: MessageModulus, + pub carry_modulus: CarryModulus, + pub max_noise_level: MaxNoiseLevel, + pub log2_p_fail: f64, + pub ciphertext_modulus: CiphertextModulus, + pub encryption_key_choice: EncryptionKeyChoice, +} + +impl Upgrade for ClassicPBSParametersV0 { + type Error = Infallible; + + fn upgrade(self) -> Result { + Ok(ClassicPBSParameters { + lwe_dimension: self.lwe_dimension, + glwe_dimension: self.glwe_dimension, + polynomial_size: self.polynomial_size, + lwe_noise_distribution: self.lwe_noise_distribution, + glwe_noise_distribution: self.glwe_noise_distribution, + pbs_base_log: self.pbs_base_log, + pbs_level: self.pbs_level, + ks_base_log: self.ks_base_log, + ks_level: self.ks_level, + message_modulus: self.message_modulus, + carry_modulus: self.carry_modulus, + max_noise_level: self.max_noise_level, + log2_p_fail: self.log2_p_fail, + ciphertext_modulus: self.ciphertext_modulus, + encryption_key_choice: self.encryption_key_choice, + modulus_switch_noise_reduction_params: None, + }) + } +} + #[derive(VersionsDispatch)] pub enum ClassicPBSParametersVersions { - V0(ClassicPBSParameters), + V0(ClassicPBSParametersV0), + V1(ClassicPBSParameters), } #[derive(VersionsDispatch)] diff --git a/tfhe/src/shortint/backward_compatibility/parameters/modulus_switch_noise_reduction.rs b/tfhe/src/shortint/backward_compatibility/parameters/modulus_switch_noise_reduction.rs new file mode 100644 index 000000000..2420958ea --- /dev/null +++ b/tfhe/src/shortint/backward_compatibility/parameters/modulus_switch_noise_reduction.rs @@ -0,0 +1,7 @@ +use crate::shortint::parameters::ModulusSwitchNoiseReductionParams; +use tfhe_versionable::VersionsDispatch; + +#[derive(VersionsDispatch)] +pub enum ModulusSwitchNoiseReductionParamsVersions { + V0(ModulusSwitchNoiseReductionParams), +} diff --git a/tfhe/src/shortint/mod.rs b/tfhe/src/shortint/mod.rs index 6fea0fd3c..7d3f42460 100755 --- a/tfhe/src/shortint/mod.rs +++ b/tfhe/src/shortint/mod.rs @@ -125,6 +125,7 @@ where log2_p_fail: 1.0, ciphertext_modulus: wopbs_params.ciphertext_modulus, encryption_key_choice: wopbs_params.encryption_key_choice, + modulus_switch_noise_reduction_params: None, }; ShortintParameterSet::try_new_pbs_and_wopbs_param_set((pbs_params, wopbs_params)).unwrap() diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs index 25d98367b..5f6253ab6 100644 --- a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -23,6 +23,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.093, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.01, algorithmic cost ~ 60, 2-norm = 3 pub const V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.01, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.415, algorithmic cost ~ 76, 2-norm = 7 pub const V0_11_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.415, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.088, algorithmic cost ~ 109, 2-norm = 15 pub const V0_11_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,6 +95,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.088, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.069, algorithmic cost ~ 362, 2-norm = 31 pub const V0_11_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -115,6 +119,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.069, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 836, 2-norm = 63 pub const V0_11_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -138,6 +143,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.054, algorithmic cost ~ 2522, 2-norm = 127 pub const V0_11_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -161,6 +167,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.054, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.02, algorithmic cost ~ 8616, 2-norm = 255 pub const V0_11_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -184,6 +191,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.02, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.017, algorithmic cost ~ 60, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -207,6 +215,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.176, algorithmic cost ~ 76, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -230,6 +239,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.176, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.074, algorithmic cost ~ 106, 2-norm = 5 pub const V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -253,6 +263,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.074, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.084, algorithmic cost ~ 362, 2-norm = 10 pub const V0_11_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -276,6 +287,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.084, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.078, algorithmic cost ~ 833, 2-norm = 21 pub const V0_11_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -299,6 +311,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.078, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.151, algorithmic cost ~ 2517, 2-norm = 42 pub const V0_11_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -322,6 +335,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.151, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.001, algorithmic cost ~ 7229, 2-norm = 85 pub const V0_11_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -345,6 +359,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.001, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.193, algorithmic cost ~ 76, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -368,6 +383,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.193, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.346, algorithmic cost ~ 106, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -391,6 +407,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.346, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.064, algorithmic cost ~ 260, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -414,6 +431,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.064, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.166, algorithmic cost ~ 833, 2-norm = 9 pub const V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -437,6 +455,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.166, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.037, algorithmic cost ~ 1947, 2-norm = 18 pub const V0_11_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -460,6 +479,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.037, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.0, algorithmic cost ~ 6009, 2-norm = 36 pub const V0_11_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -483,6 +503,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.0, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.454, algorithmic cost ~ 106, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -506,6 +527,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.454, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.077, algorithmic cost ~ 250, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -529,6 +551,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.077, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.182, algorithmic cost ~ 833, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -552,6 +575,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.182, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.099, algorithmic cost ~ 1933, 2-norm = 8 pub const V0_11_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -575,6 +599,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.099, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.033, algorithmic cost ~ 5904, 2-norm = 17 pub const V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -598,6 +623,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.033, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 248, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -621,6 +647,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.185, algorithmic cost ~ 833, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -644,6 +671,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.185, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.137, algorithmic cost ~ 1931, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -667,6 +695,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.137, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.004, algorithmic cost ~ 5888, 2-norm = 8 pub const V0_11_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -690,6 +719,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.004, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.034, algorithmic cost ~ 609, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -713,6 +743,7 @@ pub const V0_11_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.034, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.031, algorithmic cost ~ 1929, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -736,6 +767,7 @@ pub const V0_11_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.031, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.007, algorithmic cost ~ 5390, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -759,6 +791,7 @@ pub const V0_11_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.042, algorithmic cost ~ 1929, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -782,6 +815,7 @@ pub const V0_11_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.042, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.017, algorithmic cost ~ 4609, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -805,6 +839,7 @@ pub const V0_11_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.011, algorithmic cost ~ 4584, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -828,4 +863,5 @@ pub const V0_11_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.011, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs index 544bb7708..bf7fe3b23 100644 --- a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -24,6 +24,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -66.829, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-68.803, algorithmic cost ~ 130, 2-norm = 5 pub const V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -47,6 +48,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -68.803, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-140.945, algorithmic cost ~ 3355, 2-norm = 9 pub const V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -70,6 +72,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -140.945, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-138.594, algorithmic cost ~ 20401, 2-norm = 17 pub const V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -93,4 +96,5 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -138.594, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; diff --git a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs index 9af60fde8..bcda4c127 100644 --- a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -23,6 +23,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.612, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.01, algorithmic cost ~ 60, 2-norm = 3 pub const V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.01, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.415, algorithmic cost ~ 76, 2-norm = 7 pub const V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.415, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.088, algorithmic cost ~ 109, 2-norm = 15 pub const V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,6 +95,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.088, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.069, algorithmic cost ~ 362, 2-norm = 31 pub const V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -115,6 +119,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.069, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 836, 2-norm = 63 pub const V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -138,6 +143,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.054, algorithmic cost ~ 2522, 2-norm = 127 pub const V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -161,6 +167,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.054, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.02, algorithmic cost ~ 8616, 2-norm = 255 pub const V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -184,6 +191,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.02, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.023, algorithmic cost ~ 45, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -207,6 +215,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.023, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.176, algorithmic cost ~ 76, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -230,6 +239,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.176, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.074, algorithmic cost ~ 106, 2-norm = 5 pub const V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -253,6 +263,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.074, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.084, algorithmic cost ~ 362, 2-norm = 10 pub const V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -276,6 +287,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.084, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.078, algorithmic cost ~ 833, 2-norm = 21 pub const V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -299,6 +311,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.078, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.151, algorithmic cost ~ 2517, 2-norm = 42 pub const V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -322,6 +335,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.151, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.001, algorithmic cost ~ 7229, 2-norm = 85 pub const V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -345,6 +359,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.001, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.193, algorithmic cost ~ 76, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -368,6 +383,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.193, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.346, algorithmic cost ~ 106, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -391,6 +407,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.346, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.064, algorithmic cost ~ 260, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -414,6 +431,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.064, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.166, algorithmic cost ~ 833, 2-norm = 9 pub const V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -437,6 +455,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.166, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.037, algorithmic cost ~ 1947, 2-norm = 18 pub const V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -460,6 +479,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.037, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.0, algorithmic cost ~ 6009, 2-norm = 36 pub const V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -483,6 +503,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.0, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.454, algorithmic cost ~ 106, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -506,6 +527,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.454, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.077, algorithmic cost ~ 250, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -529,6 +551,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.077, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.182, algorithmic cost ~ 833, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -552,6 +575,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.182, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.099, algorithmic cost ~ 1933, 2-norm = 8 pub const V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -575,6 +599,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.099, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.033, algorithmic cost ~ 5904, 2-norm = 17 pub const V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -598,6 +623,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.033, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 248, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -621,6 +647,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.185, algorithmic cost ~ 833, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -644,6 +671,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.185, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.137, algorithmic cost ~ 1931, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -667,6 +695,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.137, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.004, algorithmic cost ~ 5888, 2-norm = 8 pub const V0_11_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -690,6 +719,7 @@ pub const V0_11_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.004, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.034, algorithmic cost ~ 609, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -713,6 +743,7 @@ pub const V0_11_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.034, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.031, algorithmic cost ~ 1929, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -736,6 +767,7 @@ pub const V0_11_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.031, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.007, algorithmic cost ~ 5390, 2-norm = 4 pub const V0_11_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -759,6 +791,7 @@ pub const V0_11_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.042, algorithmic cost ~ 1929, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -782,6 +815,7 @@ pub const V0_11_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.042, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.017, algorithmic cost ~ 4609, 2-norm = 2 pub const V0_11_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -805,6 +839,7 @@ pub const V0_11_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.011, algorithmic cost ~ 4584, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -828,6 +863,7 @@ pub const V0_11_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.011, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; pub const WITH_CARRY_PARAMETERS_VEC: [ClassicPBSParameters; 36] = [ V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs index 57fa855be..31faf854b 100644 --- a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -23,6 +23,7 @@ pub const V0_11_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.05, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.107, algorithmic cost ~ 124, 2-norm = 5 pub const V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.107, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.007, algorithmic cost ~ 1066, 2-norm = 9 pub const V0_11_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_11_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.507, algorithmic cost ~ 13479, 2-norm = 17 pub const V0_11_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,6 +95,7 @@ pub const V0_11_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.507, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; pub const V0_11_WITH_CARRY_PARAMETERS_VEC_PBS_KS: [ClassicPBSParameters; 4] = [ V0_11_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs index 2388e43ca..94f5123a4 100644 --- a/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -23,4 +23,5 @@ pub const V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParamete log2_p_fail: -71.625, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; diff --git a/tfhe/src/shortint/parameters/coverage_parameters.rs b/tfhe/src/shortint/parameters/coverage_parameters.rs index 09c693226..38d92daf2 100644 --- a/tfhe/src/shortint/parameters/coverage_parameters.rs +++ b/tfhe/src/shortint/parameters/coverage_parameters.rs @@ -33,6 +33,7 @@ pub const COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters = Classi log2_p_fail: -40., ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; pub const COVERAGE_PARAM_MESSAGE_2_CARRY_3_KS_PBS: ClassicPBSParameters = ClassicPBSParameters { @@ -55,6 +56,7 @@ pub const COVERAGE_PARAM_MESSAGE_2_CARRY_3_KS_PBS: ClassicPBSParameters = Classi log2_p_fail: -40., ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; pub const COVERAGE_PARAM_MESSAGE_5_CARRY_1_KS_PBS: ClassicPBSParameters = ClassicPBSParameters { @@ -77,6 +79,7 @@ pub const COVERAGE_PARAM_MESSAGE_5_CARRY_1_KS_PBS: ClassicPBSParameters = Classi log2_p_fail: -40., ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; pub const COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS: MultiBitPBSParameters = @@ -125,6 +128,7 @@ pub const COVERAGE_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Clas log2_p_fail: -40., ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; pub const COVERAGE_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -148,4 +152,5 @@ pub const COVERAGE_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Clas log2_p_fail: -40., ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; diff --git a/tfhe/src/shortint/parameters/mod.rs b/tfhe/src/shortint/parameters/mod.rs index e834d3ea5..2ac5156fd 100644 --- a/tfhe/src/shortint/parameters/mod.rs +++ b/tfhe/src/shortint/parameters/mod.rs @@ -15,6 +15,7 @@ use crate::core_crypto::fft_impl::fft64::crypto::bootstrap::BootstrapKeyConforma use crate::core_crypto::prelude::{ GlweCiphertextConformanceParameters, KeyswitchKeyConformanceParams, LweCiphertextCount, LweCiphertextListParameters, LweCiphertextParameters, MsDecompressionType, + NoiseEstimationMeasureBound, RSigmaFactor, }; use crate::shortint::backward_compatibility::parameters::*; #[cfg(feature = "zk-pok")] @@ -36,6 +37,7 @@ pub mod parameters_wopbs_only; pub mod v0_10; pub mod v0_11; +use super::backward_compatibility::parameters::modulus_switch_noise_reduction::ModulusSwitchNoiseReductionParamsVersions; pub use super::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel}; use super::server_key::PBSConformanceParameters; pub use super::PBSOrder; @@ -140,6 +142,7 @@ pub struct ClassicPBSParameters { pub log2_p_fail: f64, pub ciphertext_modulus: CiphertextModulus, pub encryption_key_choice: EncryptionKeyChoice, + pub modulus_switch_noise_reduction_params: Option, } impl ClassicPBSParameters { @@ -167,6 +170,7 @@ impl ClassicPBSParameters { log2_p_fail: f64, ciphertext_modulus: CiphertextModulus, encryption_key_choice: EncryptionKeyChoice, + modulus_switch_noise_reduction_params: Option, ) -> Self { Self { lwe_dimension, @@ -184,6 +188,7 @@ impl ClassicPBSParameters { log2_p_fail, ciphertext_modulus, encryption_key_choice, + modulus_switch_noise_reduction_params, } } @@ -826,3 +831,11 @@ impl TryFrom for CompactPkeZkScheme { } } } + +#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize, Versionize)] +#[versionize(ModulusSwitchNoiseReductionParamsVersions)] +pub struct ModulusSwitchNoiseReductionParams { + pub modulus_switch_zeros_count: LweCiphertextCount, + pub ms_bound: NoiseEstimationMeasureBound, + pub ms_r_sigma_factor: RSigmaFactor, +} diff --git a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs index 004a2412e..2221c1556 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -23,6 +23,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.093, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.01, algorithmic cost ~ 60, 2-norm = 3 pub const V0_10_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.01, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.415, algorithmic cost ~ 76, 2-norm = 7 pub const V0_10_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.415, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.088, algorithmic cost ~ 109, 2-norm = 15 pub const V0_10_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,6 +95,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.088, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.069, algorithmic cost ~ 362, 2-norm = 31 pub const V0_10_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -115,6 +119,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.069, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 836, 2-norm = 63 pub const V0_10_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -138,6 +143,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.054, algorithmic cost ~ 2522, 2-norm = 127 pub const V0_10_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -161,6 +167,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.054, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.02, algorithmic cost ~ 8616, 2-norm = 255 pub const V0_10_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -184,6 +191,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.02, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.017, algorithmic cost ~ 60, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -207,6 +215,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.176, algorithmic cost ~ 76, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -230,6 +239,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.176, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.074, algorithmic cost ~ 106, 2-norm = 5 pub const V0_10_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -253,6 +263,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.074, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.084, algorithmic cost ~ 362, 2-norm = 10 pub const V0_10_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -276,6 +287,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.084, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.078, algorithmic cost ~ 833, 2-norm = 21 pub const V0_10_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -299,6 +311,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.078, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.058, algorithmic cost ~ 2517, 2-norm = 42 pub const V0_10_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -322,6 +335,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.058, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.001, algorithmic cost ~ 7229, 2-norm = 85 pub const V0_10_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -345,6 +359,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.001, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.193, algorithmic cost ~ 76, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -368,6 +383,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.193, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.346, algorithmic cost ~ 106, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -391,6 +407,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.346, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.064, algorithmic cost ~ 260, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -414,6 +431,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.064, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.122, algorithmic cost ~ 833, 2-norm = 9 pub const V0_10_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -437,6 +455,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.122, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.037, algorithmic cost ~ 1947, 2-norm = 18 pub const V0_10_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -460,6 +479,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.037, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.0, algorithmic cost ~ 6009, 2-norm = 36 pub const V0_10_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -483,6 +503,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.0, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.454, algorithmic cost ~ 106, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -506,6 +527,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.454, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.071, algorithmic cost ~ 250, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -529,6 +551,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.071, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.182, algorithmic cost ~ 833, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -552,6 +575,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.182, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.099, algorithmic cost ~ 1933, 2-norm = 8 pub const V0_10_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -575,6 +599,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.099, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.033, algorithmic cost ~ 5904, 2-norm = 17 pub const V0_10_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -598,6 +623,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.033, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 248, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -621,6 +647,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.185, algorithmic cost ~ 833, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -644,6 +671,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.185, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.137, algorithmic cost ~ 1931, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -667,6 +695,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.137, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.004, algorithmic cost ~ 5888, 2-norm = 8 pub const V0_10_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -690,6 +719,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.004, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.034, algorithmic cost ~ 609, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -713,6 +743,7 @@ pub const V0_10_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.034, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.031, algorithmic cost ~ 1929, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -736,6 +767,7 @@ pub const V0_10_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.031, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.007, algorithmic cost ~ 5390, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -759,6 +791,7 @@ pub const V0_10_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.032, algorithmic cost ~ 1929, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -782,6 +815,7 @@ pub const V0_10_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.032, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.017, algorithmic cost ~ 4609, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -805,6 +839,7 @@ pub const V0_10_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.011, algorithmic cost ~ 4584, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -828,4 +863,5 @@ pub const V0_10_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: Classic log2_p_fail: -64.011, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; diff --git a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs index 5b97ad925..4434c80f8 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -23,6 +23,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -66.538, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-68.803, algorithmic cost ~ 130, 2-norm = 5 pub const V0_10_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -68.803, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-87.969, algorithmic cost ~ 3355, 2-norm = 9 pub const V0_10_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -87.969, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-134.119, algorithmic cost ~ 20401, 2-norm = 17 pub const V0_10_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,4 +95,5 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: Classic log2_p_fail: -134.119, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; diff --git a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs index dda276e7b..2d4f5e603 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -23,6 +23,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.612, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.01, algorithmic cost ~ 60, 2-norm = 3 pub const V0_10_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.01, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.415, algorithmic cost ~ 76, 2-norm = 7 pub const V0_10_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.415, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.088, algorithmic cost ~ 109, 2-norm = 15 pub const V0_10_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,6 +95,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.088, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.069, algorithmic cost ~ 362, 2-norm = 31 pub const V0_10_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -115,6 +119,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.069, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 836, 2-norm = 63 pub const V0_10_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -138,6 +143,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.054, algorithmic cost ~ 2522, 2-norm = 127 pub const V0_10_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -161,6 +167,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.054, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.02, algorithmic cost ~ 8616, 2-norm = 255 pub const V0_10_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -184,6 +191,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.02, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.023, algorithmic cost ~ 45, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -207,6 +215,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.023, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.176, algorithmic cost ~ 76, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -230,6 +239,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.176, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.074, algorithmic cost ~ 106, 2-norm = 5 pub const V0_10_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -253,6 +263,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.074, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.084, algorithmic cost ~ 362, 2-norm = 10 pub const V0_10_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -276,6 +287,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.084, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.078, algorithmic cost ~ 833, 2-norm = 21 pub const V0_10_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -299,6 +311,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.078, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.058, algorithmic cost ~ 2517, 2-norm = 42 pub const V0_10_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -322,6 +335,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.058, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.001, algorithmic cost ~ 7229, 2-norm = 85 pub const V0_10_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -345,6 +359,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.001, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.193, algorithmic cost ~ 76, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -368,6 +383,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.193, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.346, algorithmic cost ~ 106, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -391,6 +407,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.346, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.064, algorithmic cost ~ 260, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -414,6 +431,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.064, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.122, algorithmic cost ~ 833, 2-norm = 9 pub const V0_10_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -437,6 +455,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.122, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.037, algorithmic cost ~ 1947, 2-norm = 18 pub const V0_10_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -460,6 +479,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.037, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.0, algorithmic cost ~ 6009, 2-norm = 36 pub const V0_10_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -483,6 +503,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.0, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.454, algorithmic cost ~ 106, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -506,6 +527,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.454, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.071, algorithmic cost ~ 250, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -529,6 +551,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.071, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.182, algorithmic cost ~ 833, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -552,6 +575,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.182, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.099, algorithmic cost ~ 1933, 2-norm = 8 pub const V0_10_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -575,6 +599,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.099, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.033, algorithmic cost ~ 5904, 2-norm = 17 pub const V0_10_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -598,6 +623,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.033, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.068, algorithmic cost ~ 248, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -621,6 +647,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.068, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.185, algorithmic cost ~ 833, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -644,6 +671,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.185, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.137, algorithmic cost ~ 1931, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -667,6 +695,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.137, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.004, algorithmic cost ~ 5888, 2-norm = 8 pub const V0_10_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -690,6 +719,7 @@ pub const V0_10_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.004, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.034, algorithmic cost ~ 609, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -713,6 +743,7 @@ pub const V0_10_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.034, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.031, algorithmic cost ~ 1929, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -736,6 +767,7 @@ pub const V0_10_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.031, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.007, algorithmic cost ~ 5390, 2-norm = 4 pub const V0_10_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -759,6 +791,7 @@ pub const V0_10_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.032, algorithmic cost ~ 1929, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -782,6 +815,7 @@ pub const V0_10_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.032, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.017, algorithmic cost ~ 4609, 2-norm = 2 pub const V0_10_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -805,6 +839,7 @@ pub const V0_10_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.011, algorithmic cost ~ 4584, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -828,6 +863,7 @@ pub const V0_10_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.011, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, }; pub const WITH_CARRY_PARAMETERS_VEC: [ClassicPBSParameters; 36] = [ V0_10_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs index 25d231ab9..862a97160 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -23,6 +23,7 @@ pub const V0_10_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.05, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.107, algorithmic cost ~ 124, 2-norm = 5 pub const V0_10_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -46,6 +47,7 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.107, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.007, algorithmic cost ~ 1066, 2-norm = 9 pub const V0_10_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -69,6 +71,7 @@ pub const V0_10_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; // p-fail = 2^-64.507, algorithmic cost ~ 13479, 2-norm = 17 pub const V0_10_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = @@ -92,6 +95,7 @@ pub const V0_10_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64: ClassicPBSParamete log2_p_fail: -64.507, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, }; pub const V0_10_WITH_CARRY_PARAMETERS_VEC_PBS_KS: [ClassicPBSParameters; 4] = [ V0_10_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs index 639a94a27..521537b8e 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -19,4 +19,5 @@ pub const V0_10_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParamete log2_p_fail: -64.138, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, };