From 5ddc8f8420123c12dc9e619bca1acffd746110d5 Mon Sep 17 00:00:00 2001 From: Agnes Leroy Date: Tue, 14 Jan 2025 11:49:04 +0100 Subject: [PATCH] chore(gpu): update multi-bit parameters --- .../examples/utilities/generates_test_keys.rs | 24 +- tfhe/examples/utilities/params_to_file.rs | 2 +- .../high_level_api/integers/signed/tests.rs | 4 +- .../integers/unsigned/tests/cpu.rs | 6 +- .../radix/tests_signed/test_comparison.rs | 12 +- .../tests_signed/test_scalar_comparison.rs | 12 +- .../server_key/radix/tests_unsigned/mod.rs | 6 +- .../radix/tests_unsigned/test_comparison.rs | 12 +- .../tests_unsigned/test_scalar_comparison.rs | 14 +- .../radix_parallel/tests_signed/test_add.rs | 16 +- .../tests_signed/test_div_rem.rs | 16 +- .../radix_parallel/tests_signed/test_ilog2.rs | 8 +- .../radix_parallel/tests_signed/test_mul.rs | 8 +- .../radix_parallel/tests_signed/test_sub.rs | 8 +- .../radix_parallel/tests_unsigned/mod.rs | 40 +- .../radix_parallel/tests_unsigned/test_add.rs | 16 +- .../tests_unsigned/test_div_mod.rs | 48 +- .../tests_unsigned/test_ilog2.rs | 8 +- .../radix_parallel/tests_unsigned/test_sub.rs | 8 +- tfhe/src/integer/tests.rs | 12 +- tfhe/src/shortint/keycache.rs | 168 +- tfhe/src/shortint/parameters/mod.rs | 5 + .../parameters/multi_bit/gaussian/mod.rs | 71 - .../gaussian/p_fail_2_minus_64/ks_pbs.rs | 1707 ++++++++++++---- .../gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs | 123 +- tfhe/src/shortint/parameters/multi_bit/mod.rs | 186 ++ .../tuniform/p_fail_2_minus_64/ks_pbs.rs | 256 +++ .../tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs | 169 +- .../tuniform/p_fail_2_minus_64/mod.rs | 2 + .../gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs | 79 + .../gaussian/p_fail_2_minus_64/mod.rs | 1 + .../parameters/v0_10/multi_bit/mod.rs | 1 + .../v0_10/multi_bit/tuniform/mod.rs | 1 + .../tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs | 24 + .../tuniform/p_fail_2_minus_64/mod.rs | 1 + tfhe/src/shortint/parameters/v0_11/mod.rs | 5 + .../v0_11/multi_bit/gaussian/mod.rs | 1 + .../gaussian/p_fail_2_minus_64/ks_pbs.rs | 1804 +++++++++++++++++ .../gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs | 159 ++ .../gaussian/p_fail_2_minus_64/mod.rs | 2 + .../parameters/v0_11/multi_bit/mod.rs | 2 + .../v0_11/multi_bit/tuniform/mod.rs | 1 + .../tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs | 24 + .../tuniform/p_fail_2_minus_64/mod.rs | 1 + .../server_key/tests/parameterized_test.rs | 16 +- ...ameterized_test_bivariate_pbs_compliant.rs | 16 +- 46 files changed, 4296 insertions(+), 809 deletions(-) create mode 100644 tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs create mode 100644 tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs create mode 100644 tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs create mode 100644 tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/mod.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs create mode 100644 tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/mod.rs diff --git a/tfhe/examples/utilities/generates_test_keys.rs b/tfhe/examples/utilities/generates_test_keys.rs index 178296f7f0..500bde94ee 100644 --- a/tfhe/examples/utilities/generates_test_keys.rs +++ b/tfhe/examples/utilities/generates_test_keys.rs @@ -17,12 +17,12 @@ use tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_ use tfhe::shortint::parameters::key_switching::ShortintKeySwitchingParameters; use tfhe::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, }; use tfhe::shortint::parameters::{ ClassicPBSParameters, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, @@ -72,12 +72,12 @@ fn client_server_keys() { let coverage_only: bool = matches.get_flag("coverage_only"); if multi_bit_only { const MULTI_BIT_PARAMS: [MultiBitPBSParameters; 6] = [ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, ]; generate_pbs_multi_bit_keys(&MULTI_BIT_PARAMS); diff --git a/tfhe/examples/utilities/params_to_file.rs b/tfhe/examples/utilities/params_to_file.rs index 36856ad145..512cd3b9a8 100644 --- a/tfhe/examples/utilities/params_to_file.rs +++ b/tfhe/examples/utilities/params_to_file.rs @@ -8,7 +8,7 @@ use tfhe::keycache::NamedParam; use tfhe::shortint::parameters::classic::compact_pk::ALL_PARAMETER_VEC_COMPACT_PK; use tfhe::shortint::parameters::classic::gaussian::ALL_PARAMETER_VEC_GAUSSIAN; use tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::multi_bit::gaussian::ALL_MULTI_BIT_PARAMETER_VEC; +use tfhe::shortint::parameters::multi_bit::ALL_MULTI_BIT_PARAMETER_VEC; use tfhe::shortint::parameters::{ CompactPublicKeyEncryptionParameters, CompressionParameters, ShortintParameterSet, COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, diff --git a/tfhe/src/high_level_api/integers/signed/tests.rs b/tfhe/src/high_level_api/integers/signed/tests.rs index bd5bca0a35..2af6605458 100644 --- a/tfhe/src/high_level_api/integers/signed/tests.rs +++ b/tfhe/src/high_level_api/integers/signed/tests.rs @@ -281,7 +281,7 @@ fn test_int64_rotate() { fn test_multi_bit_rotate() { let config = ConfigBuilder::default() .use_custom_parameters( - crate::shortint::parameters::V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + crate::shortint::parameters::V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, ) .build(); fhe_int64_rotate(config); @@ -369,7 +369,7 @@ fn test_int32_div_rem() { fn test_multi_div_rem() { let config = ConfigBuilder::default() .use_custom_parameters( - crate::shortint::parameters::V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + crate::shortint::parameters::V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, ) .build(); fhe_int32_div_rem(config); diff --git a/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs b/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs index 858aa07762..d7b47be5cc 100644 --- a/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs +++ b/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs @@ -92,7 +92,7 @@ fn test_uint32_shift() { #[test] fn test_uint32_shift_multibit() { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64) .build(); let (client_key, server_key) = generate_keys(config); @@ -116,7 +116,7 @@ fn test_uint32_rotate() { #[test] fn test_multi_bit_rotate() { let client_key = setup_cpu(Some( - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, )); super::test_case_uint32_rotate(&client_key); } @@ -130,7 +130,7 @@ fn test_uint32_div_rem() { #[test] fn test_multi_div_rem() { let client_key = setup_cpu(Some( - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, )); super::test_case_uint32_div_rem(&client_key); } diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs index b9d2238ee1..95f32f1e7f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs @@ -46,12 +46,12 @@ macro_rules! define_gpu_signed_comparison_test_functions { create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); } }; @@ -92,22 +92,22 @@ where create_gpu_parameterized_test!(integer_signed_unchecked_max_128_bits { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_unchecked_min_128_bits { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_max_128_bits { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_min_128_bits { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); define_gpu_signed_comparison_test_functions!(eq, i128); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs index 2fcc4c5866..a46267d446 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs @@ -44,12 +44,12 @@ macro_rules! define_gpu_signed_scalar_comparison_test_functions { create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); } }; @@ -90,22 +90,22 @@ where create_gpu_parameterized_test!(integer_signed_unchecked_scalar_max_i128 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_unchecked_scalar_min_i128 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_scalar_max_i128 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_scalar_min_i128 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); define_gpu_signed_scalar_comparison_test_functions!(eq, i128); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs index 656b0e0136..2aeee5da2f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs @@ -45,9 +45,9 @@ macro_rules! create_gpu_parameterized_test{ { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); }; } diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs index 41987ae8d6..93715cea48 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs @@ -43,12 +43,12 @@ macro_rules! define_gpu_comparison_test_functions { create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); } }; @@ -89,22 +89,22 @@ where create_gpu_parameterized_test!(integer_unchecked_min_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_unchecked_max_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_min_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_max_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); define_gpu_comparison_test_functions!(eq, U256); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs index f16d5a2b39..54941aaee3 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs @@ -47,12 +47,12 @@ macro_rules! define_gpu_scalar_comparison_test_functions { create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); } }; @@ -226,22 +226,22 @@ where create_gpu_parameterized_test!(integer_unchecked_scalar_min_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_unchecked_scalar_max_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_scalar_min_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_scalar_max_u256 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); define_gpu_scalar_comparison_test_functions!(eq, U256); @@ -254,5 +254,5 @@ define_gpu_scalar_comparison_test_functions!(ge, U256); create_gpu_parameterized_test!(integer_unchecked_scalar_comparisons_edge { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs index 0735a4ffee..568f8125c3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs @@ -33,10 +33,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -60,10 +60,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs index c6daae2e75..f7cb2debc0 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs @@ -25,10 +25,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -43,10 +43,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs index ab8ecf5818..098e4e8174 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs @@ -28,10 +28,10 @@ create_parameterized_test!(integer_signed_default_checked_ilog2 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 }); fn integer_signed_default_trailing_zeros

(param: P) diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs index 8b09451745..bf967d075c 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs @@ -28,10 +28,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs index 850619680d..34ce53228c 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs @@ -34,10 +34,10 @@ create_parameterized_test!(integer_signed_default_overflowing_sub_parallel { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 } }); create_parameterized_test!(integer_extensive_trivial_signed_default_overflowing_sub); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs index 1cdf22d7fb..20e13183ec 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs @@ -442,10 +442,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -460,10 +460,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -479,10 +479,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -497,10 +497,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -519,10 +519,10 @@ create_parameterized_test!( V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, // Test case where carry_modulus > message_modulus V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs index b5906913f3..68d4edf01f 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs @@ -32,10 +32,10 @@ create_parameterized_test!(integer_advanced_overflowing_add_assign_with_carry_at PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 } }); create_parameterized_test!(integer_advanced_add_assign_with_carry_sequential); @@ -48,10 +48,10 @@ create_parameterized_test!(integer_extensive_trivial_overflowing_advanced_add_as PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 } }); create_parameterized_test!( diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs index 55395d5781..47fc9c8fa0 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs @@ -23,10 +23,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -42,10 +42,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -61,10 +61,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -80,10 +80,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -99,10 +99,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); @@ -118,10 +118,10 @@ create_parameterized_test!( PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, } } ); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs index 0092276855..a354bb0d07 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs @@ -22,10 +22,10 @@ create_parameterized_test!(integer_default_checked_ilog2 { PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 }); fn integer_default_trailing_zeros

(param: P) diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs index 6c11ca7cfd..acd4f17bb3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs @@ -32,10 +32,10 @@ create_parameterized_test!(integer_advanced_sub_assign_with_borrow_at_least_4_bi PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 } }); create_parameterized_test!(integer_advanced_sub_assign_with_borrow_sequential); diff --git a/tfhe/src/integer/tests.rs b/tfhe/src/integer/tests.rs index bed121a917..80ace01e71 100644 --- a/tfhe/src/integer/tests.rs +++ b/tfhe/src/integer/tests.rs @@ -27,12 +27,12 @@ macro_rules! create_parameterized_test { V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 } }); }; diff --git a/tfhe/src/shortint/keycache.rs b/tfhe/src/shortint/keycache.rs index 71bba5af08..53d835efad 100644 --- a/tfhe/src/shortint/keycache.rs +++ b/tfhe/src/shortint/keycache.rs @@ -10,6 +10,20 @@ use crate::shortint::parameters::coverage_parameters::*; use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; use crate::shortint::parameters::key_switching::*; use crate::shortint::parameters::list_compression::*; +use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::{ + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, +}; use crate::shortint::parameters::parameters_wopbs::*; use crate::shortint::parameters::*; use crate::shortint::wopbs::WopbsKey; @@ -59,73 +73,97 @@ named_params_impl!( ShortintParameterSet => V0_11_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64, // MultiBit Group 2 - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, // MultiBit Group 3 - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - // MultiBit Group 2 GPU - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + // CPU Multibit TUniform + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, // MultiBit Group 3 GPU - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - // Tuniform - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + // GPU MultiBit Group 2 + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + // GPU MultiBit Group 4 + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, // CPK V0_11_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/mod.rs b/tfhe/src/shortint/parameters/mod.rs index 8824a5f9ac..e834d3ea5c 100644 --- a/tfhe/src/shortint/parameters/mod.rs +++ b/tfhe/src/shortint/parameters/mod.rs @@ -34,6 +34,7 @@ pub mod parameters_wopbs; pub mod parameters_wopbs_message_carry; pub mod parameters_wopbs_only; pub mod v0_10; +pub mod v0_11; pub use super::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel}; use super::server_key::PBSConformanceParameters; @@ -64,6 +65,10 @@ pub use crate::shortint::parameters::v0_10::classic::tuniform::p_fail_2_minus_64 pub use crate::shortint::parameters::v0_10::key_switching::p_fail_2_minus_64::ks_pbs::*; pub use crate::shortint::parameters::v0_10::compact_public_key_only::p_fail_2_minus_64::ks_pbs::*; +pub use crate::shortint::parameters::v0_11::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; +pub use crate::shortint::parameters::v0_11::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::*; +pub use crate::shortint::parameters::v0_11::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*; + #[cfg(tarpaulin)] pub use coverage_parameters::*; pub use key_switching::ShortintKeySwitchingParameters; diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/mod.rs b/tfhe/src/shortint/parameters/multi_bit/gaussian/mod.rs index 58f1c28ab6..55c2d9ab42 100644 --- a/tfhe/src/shortint/parameters/multi_bit/gaussian/mod.rs +++ b/tfhe/src/shortint/parameters/multi_bit/gaussian/mod.rs @@ -1,72 +1 @@ -//! #Warning experimental - -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::*; - pub mod p_fail_2_minus_64; - -pub const ALL_MULTI_BIT_PARAMETER_VEC: [MultiBitPBSParameters; 63] = [ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -]; diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs index b5b4d0b85f..fdd3ee8c87 100644 --- a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -2,8 +2,8 @@ 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^-66.132, algorithmic cost ~ 41, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-65.905, algorithmic cost ~ 41, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(696), glwe_dimension: GlweDimension(3), @@ -21,14 +21,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -66.132, + log2_p_fail: -65.905, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-66.189, algorithmic cost ~ 59, 2-norm = 3 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-66.16, algorithmic cost ~ 59, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(748), glwe_dimension: GlweDimension(2), @@ -46,20 +46,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_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: -66.189, + log2_p_fail: -66.16, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.292, algorithmic cost ~ 67, 2-norm = 7 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.528, algorithmic cost ~ 67, 2-norm = 7 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(858), + lwe_dimension: LweDimension(860), glwe_dimension: GlweDimension(2), polynomial_size: PolynomialSize(1024), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.348996819227123e-06, + 2.269322810630956e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, @@ -71,70 +71,70 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(7), - log2_p_fail: -64.292, + log2_p_fail: -64.528, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.089, algorithmic cost ~ 89, 2-norm = 15 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.972, algorithmic cost ~ 126, 2-norm = 15 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(872), + lwe_dimension: LweDimension(834), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.844927811696596e-06, + 3.5539902359442825e-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(15), + 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.089, + log2_p_fail: -64.972, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.045, algorithmic cost ~ 290, 2-norm = 31 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.434, algorithmic cost ~ 291, 2-norm = 31 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(944), + lwe_dimension: LweDimension(946), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 5.326942058078918e-07, + 5.146261171730886e-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(4), ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(31), - log2_p_fail: -64.045, + log2_p_fail: -64.434, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.108, algorithmic cost ~ 665, 2-norm = 63 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.052, algorithmic cost ~ 695, 2-norm = 63 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(990), + lwe_dimension: LweDimension(1010), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.408776579232607e-07, + 1.705827134764532e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -142,74 +142,74 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(6), + ks_level: DecompositionLevelCount(7), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(63), - log2_p_fail: -64.108, + log2_p_fail: -64.052, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.14, algorithmic cost ~ 2023, 2-norm = 127 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.09, algorithmic cost ~ 2126, 2-norm = 127 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1064), + lwe_dimension: LweDimension(1046), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 6.719066893831459e-08, + 9.166094197883469e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(11), pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(7), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(64), max_noise_level: MaxNoiseLevel::new(127), - log2_p_fail: -64.14, + log2_p_fail: -64.09, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.056, algorithmic cost ~ 7572, 2-norm = 255 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.018, algorithmic cost ~ 8061, 2-norm = 255 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1100), + lwe_dimension: LweDimension(1118), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.610424457179293e-08, + 2.6465671112690942e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(7), - pbs_level: DecompositionLevelCount(5), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(22), + pbs_base_log: DecompositionBaseLog(6), + pbs_level: DecompositionLevelCount(6), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(128), max_noise_level: MaxNoiseLevel::new(255), - log2_p_fail: -64.056, + log2_p_fail: -64.018, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.205, algorithmic cost ~ 45, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.597, algorithmic cost ~ 46, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(776), + lwe_dimension: LweDimension(780), glwe_dimension: GlweDimension(3), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.667508981141782e-06, + 9.022819800659706e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, @@ -221,14 +221,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.205, + log2_p_fail: -64.597, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.655, algorithmic cost ~ 67, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.598, algorithmic cost ~ 67, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(858), glwe_dimension: GlweDimension(2), @@ -246,20 +246,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.655, + log2_p_fail: -64.598, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.609, algorithmic cost ~ 82, 2-norm = 5 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.006, algorithmic cost ~ 82, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(870), + lwe_dimension: LweDimension(872), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.909701670065187e-06, + 1.844927811696596e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, @@ -271,14 +271,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.609, + log2_p_fail: -64.006, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.09, algorithmic cost ~ 290, 2-norm = 10 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.082, algorithmic cost ~ 290, 2-norm = 10 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(944), glwe_dimension: GlweDimension(1), @@ -289,27 +289,27 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: 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.09, + log2_p_fail: -64.082, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.152, algorithmic cost ~ 657, 2-norm = 21 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.278, algorithmic cost ~ 658, 2-norm = 21 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(978), + lwe_dimension: LweDimension(980), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.962875621642539e-07, + 2.862379879879129e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -321,20 +321,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(21), - log2_p_fail: -64.152, + log2_p_fail: -64.278, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.046, algorithmic cost ~ 2000, 2-norm = 42 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.114, algorithmic cost ~ 2004, 2-norm = 42 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1052), + lwe_dimension: LweDimension(1054), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 8.264676629436917e-08, + 7.984352743330102e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -346,39 +346,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(42), - log2_p_fail: -64.046, + 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.032, algorithmic cost ~ 6514, 2-norm = 85 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.024, algorithmic cost ~ 6864, 2-norm = 85 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1104), + lwe_dimension: LweDimension(1114), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.369659065698222e-08, + 2.8356668849263424e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(9), - pbs_level: DecompositionLevelCount(4), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(22), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(64), max_noise_level: MaxNoiseLevel::new(85), - log2_p_fail: -64.032, + log2_p_fail: -64.024, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.679, algorithmic cost ~ 67, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.665, algorithmic cost ~ 67, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(858), glwe_dimension: GlweDimension(2), @@ -396,14 +396,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.679, + log2_p_fail: -64.665, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.331, algorithmic cost ~ 82, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.098, algorithmic cost ~ 82, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(906), glwe_dimension: GlweDimension(1), @@ -421,39 +421,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.331, + log2_p_fail: -64.098, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.107, algorithmic cost ~ 217, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.093, algorithmic cost ~ 290, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(912), + lwe_dimension: LweDimension(944), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 9.252442079345288e-07, + 5.326942058078918e-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.107, + log2_p_fail: -64.093, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.367, algorithmic cost ~ 657, 2-norm = 9 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.311, algorithmic cost ~ 657, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -471,45 +471,45 @@ pub const V0_11_PARAM_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.367, + log2_p_fail: -64.311, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.042, algorithmic cost ~ 1540, 2-norm = 18 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.13, algorithmic cost ~ 2000, 2-norm = 18 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1080), + lwe_dimension: LweDimension(1052), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 5.098233986495092e-08, + 8.264676629436917e-08, )), 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(7), message_modulus: MessageModulus(8), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(18), - log2_p_fail: -64.042, + log2_p_fail: -64.13, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.057, algorithmic cost ~ 5769, 2-norm = 36 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.004, algorithmic cost ~ 5831, 2-norm = 36 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1114), + lwe_dimension: LweDimension(1126), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.8356668849263424e-08, + 2.3053576495153107e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -521,14 +521,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(36), - log2_p_fail: -64.057, + log2_p_fail: -64.004, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.48, algorithmic cost ~ 82, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.422, algorithmic cost ~ 82, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(906), glwe_dimension: GlweDimension(1), @@ -546,39 +546,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(16), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.48, + log2_p_fail: -64.422, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.164, algorithmic cost ~ 188, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.174, algorithmic cost ~ 196, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(958), + lwe_dimension: LweDimension(920), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.1838385960350906e-07, + 8.059568198173411e-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(4), - ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.164, + log2_p_fail: -64.174, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.406, algorithmic cost ~ 657, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.395, algorithmic cost ~ 657, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -596,20 +596,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(16), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.406, + log2_p_fail: -64.395, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.039, algorithmic cost ~ 1503, 2-norm = 8 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.195, algorithmic cost ~ 1511, 2-norm = 8 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1054), + lwe_dimension: LweDimension(1060), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 7.984352743330102e-08, + 7.199150706330062e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -621,45 +621,45 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(16), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(8), - log2_p_fail: -64.039, + log2_p_fail: -64.195, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.041, algorithmic cost ~ 4755, 2-norm = 17 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.034, algorithmic cost ~ 5491, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1116), + lwe_dimension: LweDimension(1102), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.7394858488703536e-08, + 3.487964951537331e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(11), pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(2), - ks_level: DecompositionLevelCount(12), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.041, + log2_p_fail: -64.034, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.373, algorithmic cost ~ 186, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.327, algorithmic cost ~ 187, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(948), + lwe_dimension: LweDimension(952), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.971708676181112e-07, + 4.64016444919407e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -671,14 +671,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.373, + log2_p_fail: -64.327, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.413, algorithmic cost ~ 657, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.41, algorithmic cost ~ 657, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -696,20 +696,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.413, + log2_p_fail: -64.41, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.087, algorithmic cost ~ 1500, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.235, algorithmic cost ~ 1503, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1052), + lwe_dimension: LweDimension(1054), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 8.264676629436917e-08, + 7.984352743330102e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -721,20 +721,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.087, + log2_p_fail: -64.235, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.055, algorithmic cost ~ 4665, 2-norm = 8 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.039, algorithmic cost ~ 4682, 2-norm = 8 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1112), + lwe_dimension: LweDimension(1116), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.935224755982453e-08, + 2.7394858488703536e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -746,14 +746,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(8), - log2_p_fail: -64.055, + log2_p_fail: -64.039, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.415, algorithmic cost ~ 657, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.414, algorithmic cost ~ 657, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -771,14 +771,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(64), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.415, + log2_p_fail: -64.414, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.17, algorithmic cost ~ 1500, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.136, algorithmic cost ~ 1500, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1052), glwe_dimension: GlweDimension(1), @@ -796,14 +796,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(64), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.17, + log2_p_fail: -64.136, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.048, algorithmic cost ~ 4657, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.016, algorithmic cost ~ 4657, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1110), glwe_dimension: GlweDimension(1), @@ -821,14 +821,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(64), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.048, + log2_p_fail: -64.016, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.191, algorithmic cost ~ 1500, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.182, algorithmic cost ~ 1500, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1052), glwe_dimension: GlweDimension(1), @@ -846,45 +846,45 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(128), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.191, + log2_p_fail: -64.182, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.001, algorithmic cost ~ 3604, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.017, algorithmic cost ~ 4335, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1122), + lwe_dimension: LweDimension(1102), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.470077677912143e-08, + 3.487964951537331e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), - ks_base_log: DecompositionBaseLog(2), - ks_level: DecompositionLevelCount(11), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), message_modulus: MessageModulus(128), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.001, + log2_p_fail: -64.017, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.058, algorithmic cost ~ 3572, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.007, algorithmic cost ~ 3578, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1112), + lwe_dimension: LweDimension(1114), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.935224755982453e-08, + 2.8356668849263424e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -896,51 +896,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(256), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.058, + log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -pub const ALL_V0_11_MULTI_BIT_PARAMETER_2_VEC: [MultiBitPBSParameters; 36] = [ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, -]; // p-fail = 2^-66.117, algorithmic cost ~ 44, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-65.875, algorithmic cost ~ 44, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(696), glwe_dimension: GlweDimension(3), @@ -951,21 +914,21 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, )), - pbs_base_log: DecompositionBaseLog(16), + pbs_base_log: DecompositionBaseLog(17), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -66.117, + log2_p_fail: -65.875, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.641, algorithmic cost ~ 60, 2-norm = 3 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.618, algorithmic cost ~ 60, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(747), glwe_dimension: GlweDimension(2), @@ -983,64 +946,64 @@ pub const V0_11_PARAM_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.641, + log2_p_fail: -64.618, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.341, algorithmic cost ~ 69, 2-norm = 7 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.667, algorithmic cost ~ 69, 2-norm = 7 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(858), - glwe_dimension: GlweDimension(2), - polynomial_size: PolynomialSize(1024), + lwe_dimension: LweDimension(807), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.348996819227123e-06, + 5.6627743617620195e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(5), + ks_base_log: DecompositionBaseLog(4), ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(7), - log2_p_fail: -64.341, + log2_p_fail: -64.667, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.242, algorithmic cost ~ 86, 2-norm = 15 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.972, algorithmic cost ~ 126, 2-norm = 15 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(876), + lwe_dimension: LweDimension(834), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.7218966356934023e-06, + 3.5539902359442825e-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(15), + 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.242, + log2_p_fail: -64.972, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.283, algorithmic cost ~ 286, 2-norm = 31 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.239, algorithmic cost ~ 286, 2-norm = 31 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(945), glwe_dimension: GlweDimension(1), @@ -1058,20 +1021,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(31), - log2_p_fail: -64.283, + log2_p_fail: -64.239, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.358, algorithmic cost ~ 649, 2-norm = 63 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.047, algorithmic cost ~ 667, 2-norm = 63 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(990), + lwe_dimension: LweDimension(1017), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.408776579232607e-07, + 1.5117622381302512e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1083,89 +1046,89 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(63), - log2_p_fail: -64.358, + log2_p_fail: -64.047, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.154, algorithmic cost ~ 2001, 2-norm = 127 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.11, algorithmic cost ~ 2093, 2-norm = 127 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1071), + lwe_dimension: LweDimension(1047), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 5.954666448055802e-08, + 9.009303989461499e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(11), pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(7), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(64), max_noise_level: MaxNoiseLevel::new(127), - log2_p_fail: -64.154, + log2_p_fail: -64.11, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.013, algorithmic cost ~ 7527, 2-norm = 255 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.051, algorithmic cost ~ 8019, 2-norm = 255 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1104), + lwe_dimension: LweDimension(1119), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.369659065698222e-08, + 2.60129637762614e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(7), - pbs_level: DecompositionLevelCount(5), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(22), + pbs_base_log: DecompositionBaseLog(6), + pbs_level: DecompositionLevelCount(6), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(128), max_noise_level: MaxNoiseLevel::new(255), - log2_p_fail: -64.013, + log2_p_fail: -64.051, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.399, algorithmic cost ~ 50, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.629, algorithmic cost ~ 50, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(741), + lwe_dimension: LweDimension(744), glwe_dimension: GlweDimension(3), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.768366225294279e-05, + 1.679163503644773e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 1.9524392655548086e-11, )), - pbs_base_log: DecompositionBaseLog(16), + pbs_base_log: DecompositionBaseLog(17), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(3), ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.399, + log2_p_fail: -64.629, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.659, algorithmic cost ~ 69, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.612, algorithmic cost ~ 69, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(858), glwe_dimension: GlweDimension(2), @@ -1183,20 +1146,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.659, + log2_p_fail: -64.612, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.256, algorithmic cost ~ 78, 2-norm = 5 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.038, algorithmic cost ~ 78, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_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, @@ -1208,14 +1171,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.256, + log2_p_fail: -64.038, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.324, algorithmic cost ~ 286, 2-norm = 10 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.32, algorithmic cost ~ 286, 2-norm = 10 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(945), glwe_dimension: GlweDimension(1), @@ -1233,20 +1196,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(10), - log2_p_fail: -64.324, + log2_p_fail: -64.32, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.179, algorithmic cost ~ 641, 2-norm = 21 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.593, algorithmic cost ~ 643, 2-norm = 21 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(978), + lwe_dimension: LweDimension(981), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.962875621642539e-07, + 2.8134175707144757e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1258,20 +1221,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(21), - log2_p_fail: -64.179, + log2_p_fail: -64.593, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.144, algorithmic cost ~ 1967, 2-norm = 42 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.368, algorithmic cost ~ 1973, 2-norm = 42 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1053), + lwe_dimension: LweDimension(1056), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 8.123305578333294e-08, + 7.713536970443607e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1283,39 +1246,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(42), - log2_p_fail: -64.144, + log2_p_fail: -64.368, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.061, algorithmic cost ~ 6417, 2-norm = 85 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.08, algorithmic cost ~ 6803, 2-norm = 85 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1104), + lwe_dimension: LweDimension(1116), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.369659065698222e-08, + 2.7394858488703536e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(8), - pbs_level: DecompositionLevelCount(4), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(22), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(4), carry_modulus: CarryModulus(64), max_noise_level: MaxNoiseLevel::new(85), - log2_p_fail: -64.061, + log2_p_fail: -64.08, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.68, algorithmic cost ~ 69, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.668, algorithmic cost ~ 69, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(858), glwe_dimension: GlweDimension(2), @@ -1333,14 +1296,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.68, + log2_p_fail: -64.668, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.327, algorithmic cost ~ 78, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.153, algorithmic cost ~ 78, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(906), glwe_dimension: GlweDimension(1), @@ -1358,39 +1321,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.327, + 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.008, algorithmic cost ~ 211, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.328, algorithmic cost ~ 286, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(930), + lwe_dimension: LweDimension(945), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 6.782362904013915e-07, + 5.235822292396081e-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(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.008, + log2_p_fail: -64.328, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.372, algorithmic cost ~ 641, 2-norm = 9 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.332, algorithmic cost ~ 641, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -1408,45 +1371,45 @@ pub const V0_11_PARAM_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.372, + log2_p_fail: -64.332, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.025, algorithmic cost ~ 1487, 2-norm = 18 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.03, algorithmic cost ~ 1911, 2-norm = 18 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1080), + lwe_dimension: LweDimension(1041), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 5.098233986495092e-08, + 9.991937098983378e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), - ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(7), + 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.025, + log2_p_fail: -64.03, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.033, algorithmic cost ~ 5666, 2-norm = 36 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.032, algorithmic cost ~ 5697, 2-norm = 36 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1113), + lwe_dimension: LweDimension(1119), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.8850164020946995e-08, + 2.60129637762614e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1458,14 +1421,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(32), max_noise_level: MaxNoiseLevel::new(36), - log2_p_fail: -64.033, + log2_p_fail: -64.032, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.479, algorithmic cost ~ 78, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.435, algorithmic cost ~ 78, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(906), glwe_dimension: GlweDimension(1), @@ -1483,39 +1446,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(16), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.479, + log2_p_fail: -64.435, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.189, algorithmic cost ~ 178, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.187, algorithmic cost ~ 186, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(960), + lwe_dimension: LweDimension(918), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(4096), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 4.041929850336937e-07, + 8.342532835418705e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(21), + pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(4), - ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.189, + log2_p_fail: -64.187, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.407, algorithmic cost ~ 641, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.399, algorithmic cost ~ 641, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -1533,20 +1496,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(16), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.407, + log2_p_fail: -64.399, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.292, algorithmic cost ~ 1454, 2-norm = 8 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.227, algorithmic cost ~ 1458, 2-norm = 8 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1056), + lwe_dimension: LweDimension(1059), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(16384), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 7.713536970443607e-08, + 7.324438557758654e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1558,64 +1521,64 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(16), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(8), - log2_p_fail: -64.292, + log2_p_fail: -64.227, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.052, algorithmic cost ~ 4646, 2-norm = 17 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.036, algorithmic cost ~ 5337, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1119), + lwe_dimension: LweDimension(1110), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.60129637762614e-08, + 3.038278019865525e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(10), pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(2), - ks_level: DecompositionLevelCount(12), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.052, + log2_p_fail: -64.036, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.32, algorithmic cost ~ 176, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.267, algorithmic cost ~ 177, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_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, )), - pbs_base_log: DecompositionBaseLog(21), + pbs_base_log: DecompositionBaseLog(22), 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.32, + log2_p_fail: -64.267, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.414, algorithmic cost ~ 641, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.412, algorithmic cost ~ 641, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -1633,14 +1596,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.414, + log2_p_fail: -64.412, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.231, algorithmic cost ~ 1450, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.131, algorithmic cost ~ 1450, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1053), glwe_dimension: GlweDimension(1), @@ -1658,20 +1621,20 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.231, + log2_p_fail: -64.131, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.073, algorithmic cost ~ 4548, 2-norm = 8 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.053, algorithmic cost ~ 4560, 2-norm = 8 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1113), + lwe_dimension: LweDimension(1116), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.8850164020946995e-08, + 2.7394858488703536e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1683,39 +1646,39 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(32), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(8), - log2_p_fail: -64.073, + log2_p_fail: -64.053, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.028, algorithmic cost ~ 472, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.415, algorithmic cost ~ 641, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(981), + lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.8134175707144757e-07, + 2.962875621642539e-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(2), - ks_level: DecompositionLevelCount(10), + 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.028, + log2_p_fail: -64.415, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.315, algorithmic cost ~ 1450, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.29, algorithmic cost ~ 1450, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1053), glwe_dimension: GlweDimension(1), @@ -1733,14 +1696,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(64), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.315, + log2_p_fail: -64.29, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.045, algorithmic cost ~ 4536, 2-norm = 4 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.019, algorithmic cost ~ 4536, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1110), glwe_dimension: GlweDimension(1), @@ -1758,14 +1721,14 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(64), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(4), - log2_p_fail: -64.045, + log2_p_fail: -64.019, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.336, algorithmic cost ~ 1450, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.33, algorithmic cost ~ 1450, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1053), glwe_dimension: GlweDimension(1), @@ -1783,45 +1746,45 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(128), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.336, + log2_p_fail: -64.33, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.059, algorithmic cost ~ 3512, 2-norm = 2 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.051, algorithmic cost ~ 4187, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1116), + lwe_dimension: LweDimension(1101), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.7394858488703536e-08, + 3.5486665054375844e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), - ks_base_log: DecompositionBaseLog(2), - ks_level: DecompositionLevelCount(12), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), message_modulus: MessageModulus(128), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(2), - log2_p_fail: -64.059, + log2_p_fail: -64.051, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.08, algorithmic cost ~ 3429, 2-norm = 1 -pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.074, algorithmic cost ~ 3439, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1113), + lwe_dimension: LweDimension(1116), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.8850164020946995e-08, + 2.7394858488703536e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -1833,47 +1796,909 @@ pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(256), carry_modulus: CarryModulus(1), max_noise_level: MaxNoiseLevel::new(1), - log2_p_fail: -64.08, + log2_p_fail: -64.074, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -pub const ALL_V0_11_MULTI_BIT_PARAMETER_3_VEC: [MultiBitPBSParameters; 36] = [ - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, -]; +// p-fail = 2^-64.761, algorithmic cost ~ 57, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(664), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.676348397087967e-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(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.761, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-65.871, algorithmic cost ~ 74, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(712), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.9165631782424004e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -65.871, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-65.172, algorithmic cost ~ 81, 2-norm = 7 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(776), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.667508981141782e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(7), + log2_p_fail: -65.172, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-65.906, algorithmic cost ~ 154, 2-norm = 15 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(836), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.433444883863949e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -65.906, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.013, algorithmic cost ~ 346, 2-norm = 31 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(944), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.326942058078918e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -64.013, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.064, algorithmic cost ~ 791, 2-norm = 63 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1016), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 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), + 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.064, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.007, algorithmic cost ~ 2802, 2-norm = 127 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1036), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0892186446555833e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(21), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -64.007, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.032, algorithmic cost ~ 9798, 2-norm = 255 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1124), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.3862968108916744e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(6), + pbs_level: DecompositionLevelCount(6), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -64.032, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.014, algorithmic cost ~ 64, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(744), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.679163503644773e-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(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-66.202, algorithmic cost ~ 81, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(776), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.667508981141782e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -66.202, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.143, algorithmic cost ~ 91, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(872), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.844927811696596e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.143, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.086, algorithmic cost ~ 346, 2-norm = 10 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(944), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.326942058078918e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.086, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.394, algorithmic cost ~ 763, 2-norm = 21 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(980), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.862379879879129e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.394, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.282, algorithmic cost ~ 2371, 2-norm = 42 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -64.282, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.045, algorithmic cost ~ 8229, 2-norm = 85 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -64.045, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-66.272, algorithmic cost ~ 81, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(776), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.667508981141782e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -66.272, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.539, algorithmic cost ~ 91, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(868), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.976749683932629e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.539, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.093, algorithmic cost ~ 346, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(944), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.326942058078918e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.093, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.767, algorithmic cost ~ 763, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(980), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.862379879879129e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + 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.767, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.114, algorithmic cost ~ 2362, 2-norm = 18 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -64.114, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.072, algorithmic cost ~ 6827, 2-norm = 36 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1120), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5568000204635114e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -64.072, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.837, algorithmic cost ~ 91, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(868), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.976749683932629e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.837, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.426, algorithmic cost ~ 210, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(916), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.635432122258441e-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(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.426, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.835, algorithmic cost ~ 763, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(980), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.862379879879129e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.835, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.265, algorithmic cost ~ 1711, 2-norm = 8 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1060), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.199150706330062e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.265, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.052, algorithmic cost ~ 6116, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.052, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.62, algorithmic cost ~ 203, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(952), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.64016444919407e-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(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.62, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.848, algorithmic cost ~ 763, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(980), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.862379879879129e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.848, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.512, algorithmic cost ~ 1705, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.512, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.077, algorithmic cost ~ 5377, 2-norm = 8 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.077, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.851, algorithmic cost ~ 763, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(980), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.862379879879129e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-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.851, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.141, algorithmic cost ~ 1698, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.141, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.1, algorithmic cost ~ 5357, 2-norm = 4 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1112), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.935224755982453e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.1, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.183, algorithmic cost ~ 1698, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.183, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.029, algorithmic cost ~ 4705, 2-norm = 2 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.029, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.048, algorithmic cost ~ 3951, 2-norm = 1 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.048, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs index e2d477bcf1..87defd0344 100644 --- a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -2,41 +2,39 @@ use crate::core_crypto::prelude::*; use crate::shortint::ciphertext::MaxNoiseLevel; use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; use crate::shortint::parameters::{CarryModulus, MessageModulus}; -// Group 2 - -// p-fail = 2^-64.545, algorithmic cost ~ 62, 2-norm = 3 -pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.39, algorithmic cost ~ 65, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(718), - glwe_dimension: GlweDimension(2), - polynomial_size: PolynomialSize(1024), + lwe_dimension: LweDimension(782), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.62974076167165e-05, + 8.716780977416022e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(5), + 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.545, + log2_p_fail: -64.39, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.725, algorithmic cost ~ 82, 2-norm = 5 -pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.205, algorithmic cost ~ 82, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(836), + lwe_dimension: LweDimension(838), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.433444883863949e-06, + 3.3169882267274578e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, @@ -48,14 +46,14 @@ pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.725, + log2_p_fail: -64.205, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.367, algorithmic cost ~ 657, 2-norm = 9 -pub const PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.311, algorithmic cost ~ 657, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -73,22 +71,20 @@ 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.367, + log2_p_fail: -64.311, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; - -// Group 3 - -pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.363, algorithmic cost ~ 73, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(720), - glwe_dimension: GlweDimension(2), - polynomial_size: PolynomialSize(1024), + lwe_dimension: LweDimension(747), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.540544392252957e-05, + 1.5944604865450687e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, @@ -96,18 +92,17 @@ pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(5), + ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -68.192, + log2_p_fail: -64.363, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.655, algorithmic cost ~ 79, 2-norm = 5 -pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(837), glwe_dimension: GlweDimension(1), @@ -118,21 +113,21 @@ pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(21), + pbs_base_log: DecompositionBaseLog(22), 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.655, + 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.372, algorithmic cost ~ 641, 2-norm = 9 -pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.332, algorithmic cost ~ 641, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), glwe_dimension: GlweDimension(1), @@ -150,45 +145,45 @@ pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.372, + log2_p_fail: -64.332, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-68.192, algorithmic cost ~ 64, 2-norm = 3 -pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.829, algorithmic cost ~ 96, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(768), - glwe_dimension: GlweDimension(3), + lwe_dimension: LweDimension(748), + glwe_dimension: GlweDimension(4), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.1098369627275701e-05, + 1.5671865150356198e-05, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.9524392655548086e-11, + 2.845267479601915e-15, )), - pbs_base_log: DecompositionBaseLog(17), + pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(2), - ks_level: DecompositionLevelCount(7), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -68.192, + log2_p_fail: -64.829, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, - grouping_factor: LweBskGroupingFactor(3), + grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.655, algorithmic cost ~ 79, 2-norm = 5 -pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-65.113, algorithmic cost ~ 91, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(837), + lwe_dimension: LweDimension(840), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.3747142481837397e-06, + 3.2044815829012556e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, @@ -200,20 +195,20 @@ pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.655, + log2_p_fail: -65.113, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, - grouping_factor: LweBskGroupingFactor(3), + grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.372, algorithmic cost ~ 641, 2-norm = 9 -pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: +// p-fail = 2^-64.767, algorithmic cost ~ 763, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(978), + lwe_dimension: LweDimension(980), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 2.962875621642539e-07, + 2.862379879879129e-07, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, @@ -225,19 +220,15 @@ pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.372, + log2_p_fail: -64.767, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, - grouping_factor: LweBskGroupingFactor(3), + grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; - pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: - MultiBitPBSParameters = - V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: - MultiBitPBSParameters = - V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: - MultiBitPBSParameters = - V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; diff --git a/tfhe/src/shortint/parameters/multi_bit/mod.rs b/tfhe/src/shortint/parameters/multi_bit/mod.rs index df60d18561..97b32f5659 100644 --- a/tfhe/src/shortint/parameters/multi_bit/mod.rs +++ b/tfhe/src/shortint/parameters/multi_bit/mod.rs @@ -4,6 +4,100 @@ use crate::core_crypto::entities::{ }; use crate::core_crypto::prelude::{DynamicDistribution, LweBskGroupingFactor}; use crate::shortint::ciphertext::{Degree, NoiseLevel}; +use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::{ + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, +}; +use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::{ + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, +}; +use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::{ + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, +}; +use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::{ + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, +}; use crate::shortint::parameters::{CiphertextConformanceParams, MultiBitPBSParametersVersions}; use crate::shortint::prelude::*; use crate::shortint::server_key::PBSConformanceParameters; @@ -103,3 +197,95 @@ impl TryFrom<&PBSConformanceParameters> for MultiBitBootstrapKeyConformanceParam }) } } +pub const ALL_MULTI_BIT_PARAMETER_VEC: [MultiBitPBSParameters; 86] = [ + // CPU Gaussian + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + // CPU TUniform + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + // GPU TUniform + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + // GPU Gaussian + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, +]; diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs new file mode 100644 index 0000000000..5ec5168d12 --- /dev/null +++ b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -0,0 +1,256 @@ +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^-72.99, algorithmic cost ~ 62, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(840), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(6), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -72.99, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-67.384, algorithmic cost ~ 86, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -67.384, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.356, algorithmic cost ~ 671, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(998), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(14), + 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.356, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.169, algorithmic cost ~ 6670, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1118), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.169, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-72.999, algorithmic cost ~ 65, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(840), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(6), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -72.999, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-67.645, algorithmic cost ~ 83, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(960), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -67.645, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.324, algorithmic cost ~ 655, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(999), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(14), + 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.324, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.135, algorithmic cost ~ 6578, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1119), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.135, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-138.258, algorithmic cost ~ 79, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(760), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(49), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -138.258, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-69.688, algorithmic cost ~ 96, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(880), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + 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: -69.688, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.272, algorithmic cost ~ 778, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1000), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(14), + 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.272, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.088, algorithmic cost ~ 7709, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1120), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.088, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs index 597f8a976f..d7187934ec 100644 --- a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -2,9 +2,32 @@ use crate::core_crypto::prelude::*; use crate::shortint::ciphertext::MaxNoiseLevel; use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; use crate::shortint::parameters::{CarryModulus, MessageModulus}; -pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + +// p-fail = 2^-73.238, algorithmic cost ~ 69, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(800), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -73.238, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-69.582, algorithmic cost ~ 87, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(882), + lwe_dimension: LweDimension(880), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(2048), lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), @@ -16,14 +39,56 @@ pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.59, + log2_p_fail: -69.582, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.356, algorithmic cost ~ 671, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(998), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(14), + 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.356, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-73.179, algorithmic cost ~ 78, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(801), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -73.179, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), - deterministic_execution: true, + deterministic_execution: false, }; - -pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: +// p-fail = 2^-70.024, algorithmic cost ~ 83, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(879), glwe_dimension: GlweDimension(1), @@ -37,12 +102,96 @@ pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.59, + log2_p_fail: -70.024, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.324, algorithmic cost ~ 655, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(999), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(14), + 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.324, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), - deterministic_execution: true, + deterministic_execution: false, }; +// p-fail = 2^-73.246, algorithmic cost ~ 103, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(800), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -73.246, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-69.688, algorithmic cost ~ 96, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(880), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + 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: -69.688, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.272, algorithmic cost ~ 778, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1000), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + pbs_base_log: DecompositionBaseLog(14), + 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.272, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; + pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: - MultiBitPBSParameters = - V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs index 1409dad4f0..1d36207e89 100644 --- a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs +++ b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs @@ -1,2 +1,4 @@ +pub mod ks_pbs; pub mod ks_pbs_gpu; + pub use ks_pbs_gpu::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs new file mode 100644 index 0000000000..0ea4bd2c75 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -0,0 +1,79 @@ +use crate::core_crypto::prelude::*; +use crate::shortint::ciphertext::MaxNoiseLevel; +use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; +use crate::shortint::parameters::{CarryModulus, MessageModulus}; + +pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(720), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.540544392252957e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -68.192, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.655, algorithmic cost ~ 79, 2-norm = 5 +pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(837), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3747142481837397e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(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.655, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.372, algorithmic cost ~ 641, 2-norm = 9 +pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + 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.372, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/mod.rs index cf32dbe64e..c5bc259b27 100644 --- a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/mod.rs +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/mod.rs @@ -1 +1,2 @@ pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/mod.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/mod.rs index 1e195d938e..0081721424 100644 --- a/tfhe/src/shortint/parameters/v0_10/multi_bit/mod.rs +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/mod.rs @@ -1 +1,2 @@ pub mod gaussian; +pub mod tuniform; diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/mod.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/mod.rs new file mode 100644 index 0000000000..55c2d9ab42 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/mod.rs @@ -0,0 +1 @@ +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs new file mode 100644 index 0000000000..c732f235ce --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -0,0 +1,24 @@ +use crate::core_crypto::prelude::*; +use crate::shortint::ciphertext::MaxNoiseLevel; +use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; +use crate::shortint::parameters::{CarryModulus, MessageModulus}; +pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(882), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + 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.59, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: true, +}; diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/mod.rs new file mode 100644 index 0000000000..174d7fd627 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/v0_11/mod.rs b/tfhe/src/shortint/parameters/v0_11/mod.rs new file mode 100644 index 0000000000..9810cac0e4 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/mod.rs @@ -0,0 +1,5 @@ +//! FHE Parameters as they were defined in TFHE-rs 0.11 and before. +//! +//! These parameters may be used for backward compatibility. + +pub mod multi_bit; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/mod.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/mod.rs new file mode 100644 index 0000000000..55c2d9ab42 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/mod.rs @@ -0,0 +1 @@ +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs new file mode 100644 index 0000000000..74064d3691 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -0,0 +1,1804 @@ +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^-66.132, algorithmic cost ~ 41, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(696), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.8437982930180355e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -66.132, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-66.189, algorithmic cost ~ 59, 2-norm = 3 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(748), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.5671865150356198e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + 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: -66.189, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.292, algorithmic cost ~ 67, 2-norm = 7 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.292, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.089, algorithmic cost ~ 89, 2-norm = 15 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(872), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.844927811696596e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -64.089, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.045, algorithmic cost ~ 290, 2-norm = 31 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(944), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.326942058078918e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -64.045, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.108, algorithmic cost ~ 665, 2-norm = 63 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(990), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.408776579232607e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + 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.108, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.14, algorithmic cost ~ 2023, 2-norm = 127 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1064), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.719066893831459e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -64.14, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.056, algorithmic cost ~ 7572, 2-norm = 255 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1100), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.610424457179293e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -64.056, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.205, algorithmic cost ~ 45, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(776), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.667508981141782e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.205, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.655, algorithmic cost ~ 67, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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: -64.655, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.609, algorithmic cost ~ 82, 2-norm = 5 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(870), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.909701670065187e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.609, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.09, algorithmic cost ~ 290, 2-norm = 10 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(944), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.326942058078918e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(10), + log2_p_fail: -64.09, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.152, algorithmic cost ~ 657, 2-norm = 21 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.152, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.046, algorithmic cost ~ 2000, 2-norm = 42 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -64.046, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.032, algorithmic cost ~ 6514, 2-norm = 85 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -64.032, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.679, algorithmic cost ~ 67, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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: -64.679, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.331, algorithmic cost ~ 82, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.331, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.107, algorithmic cost ~ 217, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(912), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.252442079345288e-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), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.107, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.367, algorithmic cost ~ 657, 2-norm = 9 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + 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.367, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.042, algorithmic cost ~ 1540, 2-norm = 18 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1080), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.098233986495092e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -64.042, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.057, algorithmic cost ~ 5769, 2-norm = 36 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1114), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8356668849263424e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -64.057, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.48, algorithmic cost ~ 82, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.48, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.164, algorithmic cost ~ 188, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.1838385960350906e-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(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.164, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.406, algorithmic cost ~ 657, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.406, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.039, algorithmic cost ~ 1503, 2-norm = 8 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1054), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.984352743330102e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.039, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.041, algorithmic cost ~ 4755, 2-norm = 17 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.041, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.373, algorithmic cost ~ 186, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(948), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 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(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.373, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.413, algorithmic cost ~ 657, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.413, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.087, algorithmic cost ~ 1500, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.087, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.055, algorithmic cost ~ 4665, 2-norm = 8 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1112), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.935224755982453e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.055, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.415, algorithmic cost ~ 657, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-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.415, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.17, algorithmic cost ~ 1500, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.17, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.048, algorithmic cost ~ 4657, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1110), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.038278019865525e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.048, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.191, algorithmic cost ~ 1500, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.191, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.001, algorithmic cost ~ 3604, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1122), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.470077677912143e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.001, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.058, algorithmic cost ~ 3572, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1112), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.935224755982453e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.058, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-66.117, algorithmic cost ~ 44, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(696), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.8437982930180355e-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), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -66.117, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.641, algorithmic cost ~ 60, 2-norm = 3 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(747), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.5944604865450687e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + 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.641, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.341, algorithmic cost ~ 69, 2-norm = 7 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.341, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.242, algorithmic cost ~ 86, 2-norm = 15 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(876), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.7218966356934023e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -64.242, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.283, algorithmic cost ~ 286, 2-norm = 31 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(945), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.235822292396081e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -64.283, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.358, algorithmic cost ~ 649, 2-norm = 63 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(990), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.408776579232607e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + 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.358, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.154, algorithmic cost ~ 2001, 2-norm = 127 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1071), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.954666448055802e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -64.154, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.013, algorithmic cost ~ 7527, 2-norm = 255 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -64.013, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.399, algorithmic cost ~ 50, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(741), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.768366225294279e-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(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.399, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.659, algorithmic cost ~ 69, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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: -64.659, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.256, algorithmic cost ~ 78, 2-norm = 5 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(909), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.743962418842052e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.256, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.324, algorithmic cost ~ 286, 2-norm = 10 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(945), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.235822292396081e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.324, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.179, algorithmic cost ~ 641, 2-norm = 21 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.179, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.144, algorithmic cost ~ 1967, 2-norm = 42 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1053), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.123305578333294e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -64.144, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.061, algorithmic cost ~ 6417, 2-norm = 85 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -64.061, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.68, algorithmic cost ~ 69, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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: -64.68, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.327, algorithmic cost ~ 78, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.327, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.008, algorithmic cost ~ 211, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.008, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.372, algorithmic cost ~ 641, 2-norm = 9 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + 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.372, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.025, algorithmic cost ~ 1487, 2-norm = 18 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1080), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.098233986495092e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -64.025, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.033, algorithmic cost ~ 5666, 2-norm = 36 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -64.033, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.479, algorithmic cost ~ 78, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.479, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.189, algorithmic cost ~ 178, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(960), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.041929850336937e-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(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.189, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.407, algorithmic cost ~ 641, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.407, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.292, algorithmic cost ~ 1454, 2-norm = 8 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.292, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.052, algorithmic cost ~ 4646, 2-norm = 17 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1119), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.60129637762614e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.052, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.32, algorithmic cost ~ 176, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(948), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 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(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.32, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.414, algorithmic cost ~ 641, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + 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.414, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.231, algorithmic cost ~ 1450, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1053), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.123305578333294e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.231, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.073, algorithmic cost ~ 4548, 2-norm = 8 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.073, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.028, algorithmic cost ~ 472, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(981), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8134175707144757e-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(2), + ks_level: DecompositionLevelCount(10), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.028, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.315, algorithmic cost ~ 1450, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1053), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.123305578333294e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.315, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.045, algorithmic cost ~ 4536, 2-norm = 4 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1110), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.038278019865525e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.045, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.336, algorithmic cost ~ 1450, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1053), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.123305578333294e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.336, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.059, algorithmic cost ~ 3512, 2-norm = 2 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.059, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.08, algorithmic cost ~ 3429, 2-norm = 1 +pub const V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.08, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs new file mode 100644 index 0000000000..4904553328 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -0,0 +1,159 @@ +use crate::core_crypto::prelude::*; +use crate::shortint::ciphertext::MaxNoiseLevel; +use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; +use crate::shortint::parameters::{CarryModulus, MessageModulus}; +// Group 2 + +// p-fail = 2^-64.545, algorithmic cost ~ 62, 2-norm = 3 +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(718), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.62974076167165e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -64.545, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.725, algorithmic cost ~ 82, 2-norm = 5 +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(836), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.433444883863949e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.725, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-64.367, algorithmic cost ~ 657, 2-norm = 9 +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + 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.367, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// Group 3 + +// p-fail = 2^-68.192, algorithmic cost ~ 64, 2-norm = 3 +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(768), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.1098369627275701e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -68.192, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.655, algorithmic cost ~ 79, 2-norm = 5 +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(837), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3747142481837397e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + 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.655, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-64.372, algorithmic cost ~ 641, 2-norm = 9 +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(978), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.962875621642539e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + 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.372, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/mod.rs new file mode 100644 index 0000000000..c5bc259b27 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/mod.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/mod.rs new file mode 100644 index 0000000000..0081721424 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/mod.rs @@ -0,0 +1,2 @@ +pub mod gaussian; +pub mod tuniform; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/mod.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/mod.rs new file mode 100644 index 0000000000..55c2d9ab42 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/mod.rs @@ -0,0 +1 @@ +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs new file mode 100644 index 0000000000..acceed2e21 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -0,0 +1,24 @@ +use crate::core_crypto::prelude::*; +use crate::shortint::ciphertext::MaxNoiseLevel; +use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; +use crate::shortint::parameters::{CarryModulus, MessageModulus}; +pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + 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.59, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: true, +}; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/mod.rs new file mode 100644 index 0000000000..174d7fd627 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/server_key/tests/parameterized_test.rs b/tfhe/src/shortint/server_key/tests/parameterized_test.rs index ff7008df66..6289e3537c 100644 --- a/tfhe/src/shortint/server_key/tests/parameterized_test.rs +++ b/tfhe/src/shortint/server_key/tests/parameterized_test.rs @@ -48,12 +48,12 @@ macro_rules! create_parameterized_test{ V0_11_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 }); }; } @@ -75,8 +75,8 @@ macro_rules! create_parameterized_test{ create_parameterized_test!($name { V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 }); }; } diff --git a/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs b/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs index 231c3e3e22..5080aad3c4 100644 --- a/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs +++ b/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs @@ -57,12 +57,12 @@ macro_rules! create_parameterized_test_bivariate_pbs_compliant{ V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 }); }; } @@ -84,8 +84,8 @@ macro_rules! create_parameterized_test_bivariate_pbs_compliant{ create_parameterized_test!($name { V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 }); }; }