chore: update parameters with mean reduction technique

- parameters checked visually with 1.1 for those who differ, all seems ok
This commit is contained in:
Arthur Meyre
2025-09-12 13:51:28 +02:00
parent a257849c66
commit 1ab3022df8
16 changed files with 2383 additions and 308 deletions

View File

@@ -1,11 +1,9 @@
use crate::shortint::parameters::{
current_params, ClassicPBSParameters, CompactPublicKeyEncryptionParameters,
CompressionParameters, MultiBitPBSParameters, NoiseSquashingParameters,
ShortintKeySwitchingParameters,
CompressionParameters, MultiBitPBSParameters, NoiseSquashingCompressionParameters,
NoiseSquashingParameters, ShortintKeySwitchingParameters,
};
use crate::shortint::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs_gpu::V1_4_PARAM_MULTI_BIT_GROUP_4_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
use crate::shortint::parameters::v1_4::V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
use current_params::classic::gaussian::p_fail_2_minus_128::ks_pbs::{
V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128,
V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128,
@@ -18,6 +16,7 @@ use current_params::key_switching::p_fail_2_minus_128::ks_pbs::{
V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
};
use current_params::key_switching::p_fail_2_minus_128::ks_pbs_gpu::V1_4_PARAM_MULTI_BIT_GROUP_4_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
use current_params::list_compression::p_fail_2_minus_128::{
V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128,
@@ -47,13 +46,12 @@ use current_params::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::{
V1_4_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
V1_4_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64,
};
use current_params::noise_squashing::p_fail_2_minus_128::V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
use super::current_params::{
use current_params::noise_squashing::p_fail_2_minus_128::{
V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
V1_4_NOISE_SQUASHING_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
};
use super::NoiseSquashingCompressionParameters;
// Aliases

View File

@@ -1,13 +1,105 @@
use crate::shortint::parameters::ClassicPBSParameters;
/// p-fail = 2^-139.952, algorithmic cost ~ 78, 2-norm = 3
/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(0.0000207432665142053)
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
/// p-fail = 2^-129.632, algorithmic cost ~ 130, 2-norm = 5
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140242017242477)
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
/// p-fail = 2^-276.943, algorithmic cost ~ 3355, 2-norm = 9
/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(4.04169957228641E-8)
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
/// p-fail = 2^-273.01, algorithmic cost ~ 20401, 2-norm = 17
/// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(2.56297356349261E-9)
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128;
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev,
};
/// p-fail = 2^-140.214, algorithmic cost ~ 78, 2-norm = 3
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.339775301998614e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -140.214,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-129.856, algorithmic cost ~ 130, 2-norm = 5
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.339775301998614e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -129.856,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-277.205, algorithmic cost ~ 3355, 2-norm = 9
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601915e-15,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(24),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -277.205,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-273.265, algorithmic cost ~ 20401, 2-norm = 17
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601915e-15,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(16),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -273.265,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};

View File

@@ -1,17 +1,105 @@
use crate::shortint::parameters::ClassicPBSParameters;
/// p-fail = 2^-128.181, algorithmic cost ~ 70, 2-norm = 3
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000226994502138943)
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize, StandardDev,
};
/// p-fail = 2^-128.4, algorithmic cost ~ 70, 2-norm = 3
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128;
/// p-fail = 2^-128.163, algorithmic cost ~ 128, 2-norm = 5
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141892645707080)
ClassicPBSParameters {
lwe_dimension: LweDimension(914),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.938614855855138e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -128.4,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-128.05, algorithmic cost ~ 128, 2-norm = 5
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128;
/// p-fail = 2^-128.674, algorithmic cost ~ 2030, 2-norm = 9
/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(8.83211431719384E-8)
ClassicPBSParameters {
lwe_dimension: LweDimension(978),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.962875621642539e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -128.05,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-128.729, algorithmic cost ~ 2030, 2-norm = 9
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128;
/// p-fail = 2^-129.799, algorithmic cost ~ 13785, 2-norm = 17
/// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.47094548750703E-9)
ClassicPBSParameters {
lwe_dimension: LweDimension(1106),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.255365915886752e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -128.729,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-129.855, algorithmic cost ~ 13785, 2-norm = 17
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128;
ClassicPBSParameters {
lwe_dimension: LweDimension(1267),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0240196581361536e-09,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(9),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -129.855,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};

View File

@@ -1,17 +1,89 @@
use crate::shortint::parameters::ClassicPBSParameters;
/// p-fail = 2^-144.044, algorithmic cost ~ 67, 2-norm = 3
/// Average number of encryptions of 0s ~ 15, peak noise ~ Variance(0.0000201396668936698)
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension,
MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize,
};
/// p-fail = 2^-144.322, algorithmic cost ~ 67, 2-norm = 3
pub const V1_4_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128;
/// p-fail = 2^-129.358, algorithmic cost ~ 113, 2-norm = 5
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955)
ClassicPBSParameters {
lwe_dimension: LweDimension(879),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -144.322,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-129.581, algorithmic cost ~ 113, 2-norm = 5
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
/// p-fail = 2^-128.771, algorithmic cost ~ 900, 2-norm = 9
/// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.82526029096167E-8)
ClassicPBSParameters {
lwe_dimension: LweDimension(918),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -129.581,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-128.992, algorithmic cost ~ 900, 2-norm = 9
pub const V1_4_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128;
/// p-fail = 2^-141.493, algorithmic cost ~ 11860, 2-norm = 17
/// Average number of encryptions of 0s ~ 31, peak noise ~ Variance(5.00776611824111E-9)
ClassicPBSParameters {
lwe_dimension: LweDimension(1077),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -128.992,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};
/// p-fail = 2^-141.559, algorithmic cost ~ 11860, 2-norm = 17
pub const V1_4_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
crate::shortint::parameters::v1_1::V1_1_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128;
ClassicPBSParameters {
lwe_dimension: LweDimension(1117),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -141.559,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};

View File

@@ -1,4 +1,8 @@
use crate::shortint::parameters::CompactPublicKeyEncryptionParameters;
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, CompactCiphertextListExpansionKind,
CompactPublicKeyEncryptionParameters, DynamicDistribution, LweDimension, MessageModulus,
SupportedCompactPkeZkScheme,
};
/// This parameter set should be used when doing zk proof of public key encryption
pub const V1_4_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
@@ -13,10 +17,50 @@ pub const V1_4_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
CompactPublicKeyEncryptionParameters =
V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2:
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
encryption_lwe_dimension: LweDimension(2048),
encryption_noise_distribution: DynamicDistribution::new_t_uniform(17),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
zk_scheme: SupportedCompactPkeZkScheme::V2,
}
.validate();
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2:
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
encryption_lwe_dimension: LweDimension(2048),
encryption_noise_distribution: DynamicDistribution::new_t_uniform(17),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
zk_scheme: SupportedCompactPkeZkScheme::V2,
}
.validate();
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
pub const V1_4_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
encryption_lwe_dimension: LweDimension(1024),
encryption_noise_distribution: DynamicDistribution::new_t_uniform(43),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
zk_scheme: SupportedCompactPkeZkScheme::V1,
}
.validate();
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: CompactPublicKeyEncryptionParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
pub const V1_4_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters {
encryption_lwe_dimension: LweDimension(2048),
encryption_noise_distribution: DynamicDistribution::new_t_uniform(17),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting,
zk_scheme: SupportedCompactPkeZkScheme::V1,
}
.validate();

View File

@@ -1,13 +1,75 @@
use crate::shortint::parameters::KeySwitch32PBSParameters;
use crate::core_crypto::prelude::DynamicDistribution;
use crate::shortint::parameters::{
CiphertextModulus32, KeySwitch32PBSParameters, ModulusSwitchType, StandardDev,
};
use crate::shortint::prelude::{
DecompositionBaseLog, DecompositionLevelCount, GlweDimension, LweDimension, PolynomialSize,
};
use crate::shortint::{CarryModulus, CiphertextModulus, MaxNoiseLevel, MessageModulus};
// Gaussian parameters set with pfail 2^-64
pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_GAUSSIAN_2M64: KeySwitch32PBSParameters =
crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_GAUSSIAN_2M64;
KeySwitch32PBSParameters {
lwe_dimension: LweDimension(804),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.963599673924788e-6,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.8452674713391114e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(8),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -64.0,
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21),
ciphertext_modulus: CiphertextModulus::new_native(),
modulus_switch_noise_reduction_params: ModulusSwitchType::Standard,
};
// TUniform parameters set with pfail 2^-64
pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M64: KeySwitch32PBSParameters =
crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M64;
KeySwitch32PBSParameters {
lwe_dimension: LweDimension(839),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(4),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -64.0,
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21),
ciphertext_modulus: CiphertextModulus::new_native(),
modulus_switch_noise_reduction_params: ModulusSwitchType::Standard,
};
// TUniform parameters set with pfail 2^-128
pub const V1_4_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters =
crate::shortint::parameters::v1_3::V1_3_HPU_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128;
KeySwitch32PBSParameters {
lwe_dimension: LweDimension(879),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(8),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -128.0,
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new(1 << 21),
ciphertext_modulus: CiphertextModulus::new_native(),
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};

View File

@@ -33,16 +33,35 @@ pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M
/// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters
/// arriving under the big key, requires a KS + PBS to get to the big key
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
ShortintKeySwitchingParameters =
V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2;
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2:
ShortintKeySwitchingParameters = ShortintKeySwitchingParameters {
ks_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(24),
destination_key: EncryptionKeyChoice::Big,
};
pub const V1_4_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
pub const V1_4_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
ShortintKeySwitchingParameters =
V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
/// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters
/// arriving under the small key, requires a PBS to get to the big key
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
ShortintKeySwitchingParameters = ShortintKeySwitchingParameters {
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(4),
destination_key: EncryptionKeyChoice::Small,
};
/// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters
/// arriving under the big key, requires a KS + PBS to get to the big key
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: ShortintKeySwitchingParameters = crate::shortint::parameters::v1_3::V1_3_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1;
pub const V1_4_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1:
ShortintKeySwitchingParameters = ShortintKeySwitchingParameters {
ks_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(24),
destination_key: EncryptionKeyChoice::Big,
};

View File

@@ -0,0 +1,26 @@
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, CiphertextModulus32, DecompositionBaseLog,
DecompositionLevelCount, DynamicDistribution, GlweDimension, KeySwitch32PBSParameters,
LweDimension, MaxNoiseLevel, MessageModulus, ModulusSwitchType, PolynomialSize,
};
/// p-fail = 2^-129.581, algorithmic cost ~ 113, 2-norm = 5
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters =
KeySwitch32PBSParameters {
lwe_dimension: LweDimension(918),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(13),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(17),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -129.581,
post_keyswitch_ciphertext_modulus: CiphertextModulus32::new_native(),
ciphertext_modulus: CiphertextModulus::new_native(),
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
};

View File

@@ -1,6 +0,0 @@
use crate::shortint::parameters::KeySwitch32PBSParameters;
// p-fail = 2^-129.358, algorithmic cost ~ 113, 2-norm = 5
// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955)
pub const V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128: KeySwitch32PBSParameters =
crate::shortint::parameters::v1_3::V1_3_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128;

View File

@@ -1,15 +1,64 @@
use crate::shortint::parameters::CompressionParameters;
use crate::shortint::parameters::{
CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount,
DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev,
};
/// p-fail = 2^-129.053, algorithmic cost ~ 41458
/// p-fail = 2^-129.275, algorithmic cost ~ 41458
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters =
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(3),
packing_ks_base_log: DecompositionBaseLog(4),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
};
/// p-fail = 2^-129.053, algorithmic cost ~ 41458
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
/// p-fail = 2^-129.275, algorithmic cost ~ 41458
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
CompressionParameters = CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(3),
packing_ks_base_log: DecompositionBaseLog(4),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
};
/// p-fail = 2^-128.0, algorithmic cost ~ 42199
/// p-fail = 2^-128.218, algorithmic cost ~ 42199
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters =
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(2),
packing_ks_base_log: DecompositionBaseLog(6),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(
StandardDev(1.339775301998614e-07),
),
};
/// p-fail = 2^-128.0, algorithmic cost ~ 42199
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128;
/// p-fail = 2^-128.218, algorithmic cost ~ 42199
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128:
CompressionParameters = CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(2),
packing_ks_base_log: DecompositionBaseLog(6),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.339775301998614e-07,
)),
};

View File

@@ -1,15 +1,64 @@
use crate::shortint::parameters::CompressionParameters;
use crate::shortint::parameters::{
CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount,
DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev,
};
/// p-fail = 2^-72.052, algorithmic cost ~ 42700
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters =
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(2),
packing_ks_base_log: DecompositionBaseLog(6),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
};
/// p-fail = 2^-72.052, algorithmic cost ~ 42700
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64:
CompressionParameters = CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(2),
packing_ks_base_log: DecompositionBaseLog(6),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43),
};
/// p-fail = 2^-64.174, algorithmic cost ~ 58234
pub const V1_4_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters =
crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
CompressionParameters {
br_level: DecompositionLevelCount(2),
br_base_log: DecompositionBaseLog(15),
packing_ks_level: DecompositionLevelCount(2),
packing_ks_base_log: DecompositionBaseLog(6),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(
StandardDev(1.339775301998614e-07),
),
};
/// p-fail = 2^-64.174, algorithmic cost ~ 58234
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters = crate::shortint::parameters::v1_3::V1_3_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const V1_4_COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64:
CompressionParameters = CompressionParameters {
br_level: DecompositionLevelCount(1),
br_base_log: DecompositionBaseLog(23),
packing_ks_level: DecompositionLevelCount(2),
packing_ks_base_log: DecompositionBaseLog(6),
packing_ks_polynomial_size: PolynomialSize(256),
packing_ks_glwe_dimension: GlweDimension(4),
lwe_per_glwe: LweCiphertextCount(256),
storage_log_modulus: CiphertextModulusLog(12),
packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.339775301998614e-07,
)),
};

View File

@@ -1,4 +1,4 @@
//! FHE Parameters as they were defined in TFHE-rs 1.3.
//! FHE Parameters as they were defined in TFHE-rs 1.4.
//!
//! These parameters may be used for backward compatibility.
@@ -10,7 +10,6 @@ pub mod list_compression;
pub mod meta;
pub mod multi_bit;
pub mod noise_squashing;
pub use classic::compact_pk::gaussian::p_fail_2_minus_128::ks_pbs::*;
pub use classic::compact_pk::gaussian::p_fail_2_minus_128::pbs_ks::*;
pub use classic::compact_pk::gaussian::p_fail_2_minus_64::ks_pbs::*;
@@ -43,9 +42,6 @@ pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::*;
pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*;
pub use noise_squashing::p_fail_2_minus_128::*;
#[cfg(feature = "hpu")]
pub use hpu::*;
use crate::shortint::parameters::{
ClassicPBSParameters, CompactPublicKeyEncryptionParameters, CompressionParameters,
KeySwitch32PBSParameters, MetaParameters, MultiBitPBSParameters,
@@ -1580,6 +1576,12 @@ pub const VEC_ALL_MULTI_BIT_PBS_PARAMETERS: [(&MultiBitPBSParameters, &str); 240
),
];
/// All [`KeySwitch32PBSParameters`] in this module.
pub const VEC_ALL_KEY_SWITCH32_PBS_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 1] = [(
&V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128,
"V1_4_PARAM_MESSAGE_2_CARRY_2_KS32_PBS_TUNIFORM_2M128",
)];
/// All [`CompressionParameters`] in this module.
pub const VEC_ALL_COMPRESSION_PARAMETERS: [(&CompressionParameters, &str); 8] = [
(
@@ -1725,6 +1727,8 @@ pub const VEC_ALL_KS32_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 1] = [(
#[cfg(feature = "hpu")]
pub mod hpu;
#[cfg(feature = "hpu")]
pub use hpu::*;
#[cfg(feature = "hpu")]
pub const VEC_ALL_HPU_PARAMETERS: [(&KeySwitch32PBSParameters, &str); 3] = [

View File

@@ -1,13 +1,35 @@
use crate::shortint::parameters::noise_squashing::NoiseSquashingClassicParameters;
use crate::shortint::parameters::{
CarryModulus, CoreCiphertextModulus, DecompositionBaseLog, DecompositionLevelCount,
DynamicDistribution, GlweDimension, MessageModulus, ModulusSwitchType,
DynamicDistribution, GlweDimension, LweCiphertextCount, MessageModulus, ModulusSwitchType,
NoiseSquashingCompressionParameters, NoiseSquashingParameters, PolynomialSize,
};
pub const V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingParameters = crate::shortint::parameters::v1_3::V1_3_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
pub const V1_4_NOISE_SQUASHING_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
NoiseSquashingParameters = NoiseSquashingParameters::Classic(NoiseSquashingClassicParameters {
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(30),
decomp_base_log: DecompositionBaseLog(24),
decomp_level_count: DecompositionLevelCount(3),
modulus_switch_noise_reduction_params: ModulusSwitchType::CenteredMeanNoiseReduction,
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CoreCiphertextModulus::<u128>::new_native(),
});
pub const V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: NoiseSquashingCompressionParameters = crate::shortint::parameters::v1_3::V1_3_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
pub const V1_4_NOISE_SQUASHING_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
NoiseSquashingCompressionParameters = NoiseSquashingCompressionParameters {
packing_ks_level: DecompositionLevelCount(1),
packing_ks_base_log: DecompositionBaseLog(61),
packing_ks_polynomial_size: PolynomialSize(1024),
packing_ks_glwe_dimension: GlweDimension(6),
lwe_per_glwe: LweCiphertextCount(128),
packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(3),
ciphertext_modulus: CoreCiphertextModulus::<u128>::new_native(),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
};
pub const V1_4_NOISE_SQUASHING_PARAM_GPU_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:
NoiseSquashingParameters = NoiseSquashingParameters::Classic(NoiseSquashingClassicParameters {

View File

@@ -7,7 +7,7 @@ pub use super::ciphertext::{Ciphertext, CompressedCiphertext, PBSOrder};
pub use super::client_key::ClientKey;
pub use super::gen_keys;
pub use super::key_switching_key::KeySwitchingKey;
pub use super::parameters::current_params::V1_4_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128;
pub use super::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs::V1_4_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128;
pub use super::parameters::{
CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog,
DecompositionLevelCount, EncryptionKeyChoice, GlweDimension, LweDimension, MaxNoiseLevel,