chore(shortint): update default parameters

The default parameters are now offering a security level of 132
bits and uses a p-fail of 2**-64.
This commit is contained in:
David Testé
2024-06-12 13:57:21 +02:00
committed by David Testé
parent ddf236ecbb
commit 179fbfc9bb
50 changed files with 1329 additions and 14885 deletions

View File

@@ -8,7 +8,7 @@ int main(void) {
// Note that simply changing parameters like this does not yield secure parameters
// Its only done for the example / tests
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
assert(params.encryption_key_choice == ShortintEncryptionKeyChoiceBig);
int status;

View File

@@ -20,7 +20,7 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut rng = thread_rng();
let params =
tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
let config = tfhe::ConfigBuilder::with_custom_parameters(params, None);
let client_key = tfhe::ClientKey::generate(config.clone());

View File

@@ -456,7 +456,7 @@ test('hlapi_compact_ciphertext_list', (t) => {
});
test('hlapi_compact_ciphertext_list_with_proof', (t) => {
const block_params = new ShortintParameters(ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40);
const block_params = new ShortintParameters(ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64);
let config = TfheConfigBuilder.default()
.use_custom_parameters(block_params)
.build();

View File

@@ -236,33 +236,33 @@ expose_as_shortint_pbs_parameters!(
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS,
// CPK TUniform
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
// Aliases to remove eventually
PARAM_MESSAGE_1_CARRY_0,
PARAM_MESSAGE_1_CARRY_1,

View File

@@ -545,13 +545,13 @@ impl ProvenCompactCiphertextList {
mod tests {
use crate::integer::ciphertext::CompactCiphertextList;
use crate::integer::{ClientKey, CompactPublicKey, RadixCiphertext, ServerKey};
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::zk::{CompactPkeCrs, ZkComputeLoad};
use rand::random;
#[test]
fn test_zk_compact_ciphertext_list_encryption_ci_run_filter() {
let params = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
let params = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
let num_blocks = 4usize;
let modulus = (params.message_modulus.0 as u64)

View File

@@ -289,33 +289,33 @@ expose_predefined_parameters! {
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS,
// CPK TUniform
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
// Aliases to remove eventually
PARAM_MESSAGE_1_CARRY_0,
PARAM_MESSAGE_1_CARRY_1,

View File

@@ -138,14 +138,14 @@ impl ProvenCompactCiphertextList {
#[cfg(test)]
mod tests {
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::shortint::{ClientKey, CompactPublicKey};
use crate::zk::{CompactPkeCrs, ZkComputeLoad};
use rand::random;
#[test]
fn test_zk_ciphertext_encryption_ci_run_filter() {
let params = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
let params = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
let crs = CompactPkeCrs::from_shortint_params(params, 4).unwrap();
let cks = ClientKey::new(params);
@@ -173,7 +173,7 @@ mod tests {
#[test]
fn test_zk_compact_ciphertext_list_encryption_ci_run_filter() {
let params = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40;
let params = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
let crs = CompactPkeCrs::from_shortint_params(params, 512).unwrap();
let cks = ClientKey::new(params);

View File

@@ -1,4 +1 @@
pub mod p_fail_2_minus_128;
pub mod p_fail_2_minus_40;
pub mod p_fail_2_minus_64;
pub mod p_fail_2_minus_80;

View File

@@ -1,831 +0,0 @@
// p-fail = 2^-128.66, algorithmic cost ~ 43, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(672),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.286028434081198e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
pbs_base_log: DecompositionBaseLog(8),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.66,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.979, algorithmic cost ~ 67, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(747),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.243822162983204e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
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: -128.979,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.731, algorithmic cost ~ 159, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(832),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.7199410092071574e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(7),
log2_p_fail: -128.731,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.61, algorithmic cost ~ 533, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(861),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.0076360729975834e-06,
)),
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(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -128.61,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.299, algorithmic cost ~ 1229, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(893),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.58562986578297e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -128.299,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.023, algorithmic cost ~ 2812, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(992),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.002347771770493e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -129.023,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.002, algorithmic cost ~ 8216, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1049),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.147337615981593e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -128.002,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.001, algorithmic cost ~ 23457, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1108),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.0605140006339514e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(8),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -128.001,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.015, algorithmic cost ~ 67, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(747),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.243822162983204e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
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: -129.015,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.567, algorithmic cost ~ 158, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(831),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.7519462898958826e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.567,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.335, algorithmic cost ~ 367, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(870),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.535688986373291e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -129.335,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.209, algorithmic cost ~ 1229, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(893),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.58562986578297e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(17),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -128.209,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.13, algorithmic cost ~ 2784, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(982),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.0825006021235635e-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(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -130.13,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.072, algorithmic cost ~ 8177, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1044),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.451274578348382e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -128.072,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.054, algorithmic cost ~ 22748, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1088),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.533420012934815e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -128.054,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.735, algorithmic cost ~ 158, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(831),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.7519462898958826e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.735,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.149, algorithmic cost ~ 364, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(862),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.892281597331368e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.149,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.654, algorithmic cost ~ 1229, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(893),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.58562986578297e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -128.654,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.104, algorithmic cost ~ 2781, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(981),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.1026441625312829e-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(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -129.104,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.655, algorithmic cost ~ 6370, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1068),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.21720499179022e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -128.655,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.564, algorithmic cost ~ 18485, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1106),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.100350077569213e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -128.564,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.264, algorithmic cost ~ 364, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(862),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.892281597331368e-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(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -130.264,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.13, algorithmic cost ~ 866, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1007),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.827272631435386e-08,
)),
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(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.13,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.197, algorithmic cost ~ 2781, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(981),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.1026441625312829e-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(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -130.197,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.657, algorithmic cost ~ 6245, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1047),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.2655610277767573e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -128.657,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.964, algorithmic cost ~ 18419, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1102),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.1845675257707936e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -129.964,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.952, algorithmic cost ~ 850, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(988),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.691360089410839e-08,
)),
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(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.952,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.268, algorithmic cost ~ 2781, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(981),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.1026441625312829e-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(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -130.268,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.546, algorithmic cost ~ 6233, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1045),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.388225264421953e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -129.546,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.852, algorithmic cost ~ 18402, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1101),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.2066103841909869e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -129.852,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.286, algorithmic cost ~ 2781, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(981),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.1026441625312829e-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(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -130.286,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.771, algorithmic cost ~ 6227, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1044),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.451274578348382e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.771,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.068, algorithmic cost ~ 14200, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1111),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.0034475992168526e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -128.068,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.048, algorithmic cost ~ 6227, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1044),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.451274578348382e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.048,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.54, algorithmic cost ~ 14098, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1103),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.162927355420996e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -129.54,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.133, algorithmic cost ~ 14073, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1101),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.2066103841909869e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.133,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,95 +0,0 @@
// p-fail = 2^-197.193, algorithmic cost ~ 87, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(7),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -197.193,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-160.917, algorithmic cost ~ 260, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
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(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -160.917,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-139.627, algorithmic cost ~ 3355, 2-norm = 9
pub const 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(
3.1529322391500584e-16,
)),
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(23),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -139.627,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-134.119, algorithmic cost ~ 20401, 2-norm = 17
pub const 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(
3.1529322391500584e-16,
)),
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(13),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -134.119,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,831 +0,0 @@
// p-fail = 2^-40.755, algorithmic cost ~ 35, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(624),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(256),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.96193534738532e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
pbs_base_log: DecompositionBaseLog(8),
pbs_level: DecompositionLevelCount(2),
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: -40.755,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.51, algorithmic cost ~ 54, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(708),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.6920407568805268e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
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: -40.51,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.026, algorithmic cost ~ 68, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(759),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.607570143466592e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
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: -40.026,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.328, algorithmic cost ~ 161, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(847),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.3043826430106891e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -40.328,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.059, algorithmic cost ~ 538, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(870),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.535688986373291e-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: -40.059,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.372, algorithmic cost ~ 1243, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(903),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.6451505410272586e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -40.372,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.115, algorithmic cost ~ 3682, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(990),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.340502872240508e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -40.115,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.007, algorithmic cost ~ 8925, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1085),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.620626123216454e-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(8),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -40.007,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.082, algorithmic cost ~ 44, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(693),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.231101665299365e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
pbs_base_log: DecompositionBaseLog(8),
pbs_level: DecompositionLevelCount(2),
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: -40.082,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.097, algorithmic cost ~ 68, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(759),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.607570143466592e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.097,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.129, algorithmic cost ~ 160, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(840),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.4840743649535557e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -40.129,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.068, algorithmic cost ~ 538, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(870),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.535688986373291e-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: -40.068,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.197, algorithmic cost ~ 1242, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(902),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.73158917241699e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -40.197,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.468, algorithmic cost ~ 2826, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(997),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.209554798100223e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -40.468,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.014, algorithmic cost ~ 8297, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1025),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.899107815351972e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -40.014,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.102, algorithmic cost ~ 68, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(759),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.607570143466592e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.102,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.496, algorithmic cost ~ 160, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(840),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.4840743649535557e-06,
)),
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(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.496,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.213, algorithmic cost ~ 371, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(878),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.365134701760727e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.213,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.246, algorithmic cost ~ 1242, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(902),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.73158917241699e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -40.246,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.292, algorithmic cost ~ 2809, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(991),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.169866695821157e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -40.292,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.173, algorithmic cost ~ 8281, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1023),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.083132953850712e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -40.173,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.62, algorithmic cost ~ 160, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(840),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.4840743649535557e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.62,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.243, algorithmic cost ~ 368, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(872),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.226670638405535e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.243,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.255, algorithmic cost ~ 1242, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(902),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.73158917241699e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.255,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.226, algorithmic cost ~ 2807, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(990),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.340502872240508e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -40.226,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.105, algorithmic cost ~ 6526, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1048),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.205904405936845e-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(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -40.105,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.389, algorithmic cost ~ 368, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(871),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.379755483470793e-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: -40.389,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.085, algorithmic cost ~ 893, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(964),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.5085454358100435e-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(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.085,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.326, algorithmic cost ~ 2807, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(990),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.340502872240508e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.326,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.015, algorithmic cost ~ 6335, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1062),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.47656233645343e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -40.015,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.308, algorithmic cost ~ 860, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1000),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.76779754710308e-08,
)),
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(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.308,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.352, algorithmic cost ~ 2807, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(990),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.340502872240508e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.352,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.14, algorithmic cost ~ 6311, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1058),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.6661108851744016e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.14,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.358, algorithmic cost ~ 2807, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(990),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.340502872240508e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.358,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.132, algorithmic cost ~ 6305, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1057),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.715722835102037e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.132,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.232, algorithmic cost ~ 6305, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1057),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.715722835102037e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.232,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,95 +0,0 @@
// p-fail = 2^-61.868, algorithmic cost ~ 57, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
pbs_base_log: DecompositionBaseLog(18),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(9),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -61.868,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-41.695, algorithmic cost ~ 117, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(24),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(8),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -41.695,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-48.683, algorithmic cost ~ 889, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-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: -48.683,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-43.888, algorithmic cost ~ 20133, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
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(23),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -43.888,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,92 +1,92 @@
// p-fail = 2^-69.3, algorithmic cost ~ 74, 2-norm = 3
// p-fail = 2^-64.829, algorithmic cost ~ 74, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
1.339775301998614e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(8),
ks_base_log: DecompositionBaseLog(7),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -69.3,
log2_p_fail: -64.829,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-66.833, algorithmic cost ~ 122, 2-norm = 5
// p-fail = 2^-68.524, algorithmic cost ~ 130, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
1.339775301998614e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(22),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
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: -66.833,
log2_p_fail: -68.524,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-68.78, algorithmic cost ~ 1980, 2-norm = 9
// p-fail = 2^-87.517, algorithmic cost ~ 3355, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
2.845267479601915e-15,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(18),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(10),
ks_base_log: DecompositionBaseLog(20),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -68.78,
log2_p_fail: -87.517,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-72.884, algorithmic cost ~ 20133, 2-norm = 17
// p-fail = 2^-134.119, algorithmic cost ~ 20401, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
2.845267479601915e-15,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(13),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(24),
ks_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(13),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -72.884,
log2_p_fail: -134.119,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};

View File

@@ -1,831 +0,0 @@
// p-fail = 2^-80.049, algorithmic cost ~ 41, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(683),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(256),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.682821145455988e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
pbs_base_log: DecompositionBaseLog(8),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.049,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.118, algorithmic cost ~ 61, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(803),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.9357792504909956e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
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: -80.118,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.082, algorithmic cost ~ 76, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(781),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.4043577651404615e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(7),
log2_p_fail: -80.082,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.097, algorithmic cost ~ 265, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(863),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.711565298549587e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -80.097,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.488, algorithmic cost ~ 1192, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(909),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.1586883623255596e-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: -80.488,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.016, algorithmic cost ~ 2727, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(940),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.348183651116047e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -80.016,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.211, algorithmic cost ~ 7997, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1021),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.27407062680997e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -80.211,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.739, algorithmic cost ~ 22309, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1067),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.2584635394536597e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -80.739,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.129, algorithmic cost ~ 61, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(803),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.9357792504909956e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.129,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.038, algorithmic cost ~ 76, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(780),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.486315637981604e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(24),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.038,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.011, algorithmic cost ~ 202, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(844),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.3785633212699611e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(9),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -80.011,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.614, algorithmic cost ~ 1192, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(909),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.1586883623255596e-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: -80.614,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.367, algorithmic cost ~ 2715, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(936),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.527906485727494e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -81.367,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.716, algorithmic cost ~ 7989, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1020),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.372212429278534e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -81.716,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.26, algorithmic cost ~ 18267, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1076),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.9131453186756372e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -80.26,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.083, algorithmic cost ~ 76, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(780),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.486315637981604e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.083,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.037, algorithmic cost ~ 186, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(866),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.188984659930854e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.037,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.045, algorithmic cost ~ 980, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(927),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.984187648179355e-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: -80.045,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.022, algorithmic cost ~ 2712, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(935),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.574946678500066e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(16),
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: -80.022,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.589, algorithmic cost ~ 6120, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1026),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.809608883986922e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -80.589,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.163, algorithmic cost ~ 17927, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1056),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.7662579820314513e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -80.163,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.01, algorithmic cost ~ 186, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(863),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.711565298549587e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.01,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.219, algorithmic cost ~ 823, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(921),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.3332627166887524e-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: -80.219,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.573, algorithmic cost ~ 2712, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(935),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.574946678500066e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -80.573,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.669, algorithmic cost ~ 6090, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1021),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.27407062680997e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -80.669,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.527, algorithmic cost ~ 17893, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1054),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.8701669032989807e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -80.527,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.127, algorithmic cost ~ 815, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(912),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.9349087806215726e-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: -81.127,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.598, algorithmic cost ~ 2712, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(935),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.574946678500066e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.598,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.308, algorithmic cost ~ 6084, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1020),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.372212429278534e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -81.308,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.695, algorithmic cost ~ 14098, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1103),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.162927355420996e-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(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -80.695,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.412, algorithmic cost ~ 1924, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1021),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.27407062680997e-08,
)),
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(5),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.412,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.137, algorithmic cost ~ 6078, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1019),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.472180489693452e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.137,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.097, algorithmic cost ~ 13814, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1059),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.617405266903232e-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(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -81.097,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.147, algorithmic cost ~ 6078, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1019),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.472180489693452e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.147,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.893, algorithmic cost ~ 13762, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1055),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.817733505144395e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.893,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.035, algorithmic cost ~ 13749, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1054),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.8701669032989807e-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(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -81.035,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,95 +0,0 @@
// p-fail = 2^-197.193, algorithmic cost ~ 87, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(7),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -197.193,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-160.917, algorithmic cost ~ 260, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
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(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -160.917,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-89.572, algorithmic cost ~ 2014, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.990272175010415e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(18),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(2),
ks_level: DecompositionLevelCount(11),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -89.572,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-84.164, algorithmic cost ~ 20133, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
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(24),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -84.164,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,8 +1,8 @@
use crate::shortint::parameters::classic::compact_pk::gaussian::p_fail_2_minus_40::{
use crate::shortint::parameters::classic::compact_pk::gaussian::p_fail_2_minus_64::{
ks_pbs, pbs_ks,
};
use crate::shortint::ClassicPBSParameters;
pub use tuniform::p_fail_2_minus_40::ks_pbs::*;
pub use tuniform::p_fail_2_minus_64::ks_pbs::*;
pub mod gaussian;
pub mod tuniform;
@@ -44,84 +44,84 @@ pub const ALL_PARAMETER_VEC_COMPACT_PK: [ClassicPBSParameters; 32] = [
// Aliases, to be deprecated in subsequent versions once we e.g. have the "parameter builder"
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64;
pub const DEFAULT_COMPACT_PK: ClassicPBSParameters = PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS;

View File

@@ -1,4 +1 @@
pub mod p_fail_2_minus_128;
pub mod p_fail_2_minus_40;
pub mod p_fail_2_minus_64;
pub mod p_fail_2_minus_80;

View File

@@ -1,687 +0,0 @@
// p-fail = 2^-128.796, algorithmic cost ~ 56, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(738),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(49),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.796,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.641, algorithmic cost ~ 70, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(786),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(47),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
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: -129.641,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.162, algorithmic cost ~ 166, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(871),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(7),
log2_p_fail: -130.162,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.02, algorithmic cost ~ 557, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(900),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -129.02,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.036, algorithmic cost ~ 1283, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(932),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -129.036,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.245, algorithmic cost ~ 2923, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1031),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -128.245,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.177, algorithmic cost ~ 8530, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1089),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -129.177,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.289, algorithmic cost ~ 24431, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1154),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(8),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -128.289,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.679, algorithmic cost ~ 70, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(786),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(47),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
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: -129.679,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.257, algorithmic cost ~ 166, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(870),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -130.257,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.908, algorithmic cost ~ 384, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(909),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -128.908,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.711, algorithmic cost ~ 1283, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(932),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(17),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -129.711,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.892, algorithmic cost ~ 2892, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1020),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -128.892,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.567, algorithmic cost ~ 8483, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1083),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -128.567,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.199, algorithmic cost ~ 23557, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1141),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -128.199,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.438, algorithmic cost ~ 166, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(870),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -130.438,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.314, algorithmic cost ~ 380, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(901),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
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: -129.314,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.187, algorithmic cost ~ 1283, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(932),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -130.187,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.697, algorithmic cost ~ 2889, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1019),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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.697,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.438, algorithmic cost ~ 6621, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1110),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -128.438,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.609, algorithmic cost ~ 19137, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1145),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -128.609,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.271, algorithmic cost ~ 380, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(900),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
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: -129.271,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.512, algorithmic cost ~ 902, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1049),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.512,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.946, algorithmic cost ~ 2889, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1019),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -128.946,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.694, algorithmic cost ~ 6478, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1086),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -128.694,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.657, algorithmic cost ~ 19054, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1140),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -128.657,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.349, algorithmic cost ~ 884, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1027),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.349,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.127, algorithmic cost ~ 2889, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1019),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -129.127,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.156, algorithmic cost ~ 6460, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1083),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -128.156,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.653, algorithmic cost ~ 19037, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1139),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -128.653,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.172, algorithmic cost ~ 2889, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1019),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.172,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.298, algorithmic cost ~ 6460, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1083),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -129.298,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.767, algorithmic cost ~ 14712, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1151),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -128.767,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.587, algorithmic cost ~ 6460, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1083),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.587,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.123, algorithmic cost ~ 14584, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1141),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.123,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.104, algorithmic cost ~ 14571, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1140),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -130.104,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,79 +0,0 @@
// p-fail = 2^-192.263, algorithmic cost ~ 87, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(7),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -192.263,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-155.189, algorithmic cost ~ 268, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -155.189,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-136.486, algorithmic cost ~ 3355, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(22),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -136.486,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-138.309, algorithmic cost ~ 20401, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_TUNIFORM_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(14),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -138.309,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,687 +0,0 @@
// p-fail = 2^-40.16, algorithmic cost ~ 37, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(672),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(256),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(50),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
pbs_base_log: DecompositionBaseLog(7),
pbs_level: DecompositionLevelCount(2),
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: -40.16,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.07, algorithmic cost ~ 57, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(746),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(48),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
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: -40.07,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.316, algorithmic cost ~ 71, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(799),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(47),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
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: -40.316,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.107, algorithmic cost ~ 169, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(886),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -40.107,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.208, algorithmic cost ~ 562, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(909),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
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(4),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -40.208,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.488, algorithmic cost ~ 1297, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(942),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -40.488,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.217, algorithmic cost ~ 3828, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1029),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -40.217,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.004, algorithmic cost ~ 10590, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1063),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -40.004,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.072, algorithmic cost ~ 57, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(746),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(48),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
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: -40.072,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.393, algorithmic cost ~ 71, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(799),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(47),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.393,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.321, algorithmic cost ~ 167, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(879),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -40.321,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.217, algorithmic cost ~ 562, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(909),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
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(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -40.217,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.367, algorithmic cost ~ 1295, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(941),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -40.367,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.232, algorithmic cost ~ 2937, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1036),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -40.232,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.431, algorithmic cost ~ 8621, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1065),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
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(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -40.431,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.398, algorithmic cost ~ 71, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(799),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(47),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.398,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.029, algorithmic cost ~ 167, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(878),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -40.029,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.377, algorithmic cost ~ 387, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(918),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
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: -40.377,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.382, algorithmic cost ~ 1295, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(941),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -40.382,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.345, algorithmic cost ~ 2920, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1030),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -40.345,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.182, algorithmic cost ~ 8592, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1097),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -40.182,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.139, algorithmic cost ~ 167, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(878),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -40.139,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.28, algorithmic cost ~ 384, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(911),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
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: -40.28,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.285, algorithmic cost ~ 1295, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(941),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(13),
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: -40.285,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.332, algorithmic cost ~ 2917, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1029),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -40.332,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.021, algorithmic cost ~ 6794, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1091),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -40.021,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.492, algorithmic cost ~ 384, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(910),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(44),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -40.492,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.068, algorithmic cost ~ 935, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1010),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.068,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.352, algorithmic cost ~ 2917, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1029),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.352,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.28, algorithmic cost ~ 6579, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1103),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -40.28,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.077, algorithmic cost ~ 894, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1039),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.077,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.464, algorithmic cost ~ 2917, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1029),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.464,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.295, algorithmic cost ~ 6549, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1098),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(64),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.295,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.47, algorithmic cost ~ 2917, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1029),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
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(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.47,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.339, algorithmic cost ~ 6543, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1097),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(128),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.339,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.058, algorithmic cost ~ 6537, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1096),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.058,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,79 +0,0 @@
// p-fail = 2^-56.089, algorithmic cost ~ 57, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(27),
pbs_base_log: DecompositionBaseLog(18),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(8),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -56.089,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-55.72, algorithmic cost ~ 122, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(21),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -55.72,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-41.82, algorithmic cost ~ 1108, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
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(19),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(1),
ks_level: DecompositionLevelCount(20),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -41.82,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-82.73, algorithmic cost ~ 20133, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_TUNIFORM_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(10),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(26),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -82.73,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,687 +0,0 @@
// p-fail = 2^-80.129, algorithmic cost ~ 45, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(709),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(49),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
pbs_base_log: DecompositionBaseLog(7),
pbs_level: DecompositionLevelCount(2),
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: -80.129,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.064, algorithmic cost ~ 65, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(856),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
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: -80.064,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.14, algorithmic cost ~ 81, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(832),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(7),
log2_p_fail: -80.14,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.065, algorithmic cost ~ 347, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(872),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(1),
ks_level: DecompositionLevelCount(17),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -80.065,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.231, algorithmic cost ~ 1241, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(947),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
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(4),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -80.231,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.821, algorithmic cost ~ 2840, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(979),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -80.821,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.659, algorithmic cost ~ 8302, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1060),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -81.659,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.659, algorithmic cost ~ 23125, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1106),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -80.659,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.06, algorithmic cost ~ 65, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(856),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(21),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.06,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.124, algorithmic cost ~ 81, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(830),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.124,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.066, algorithmic cost ~ 347, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(872),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(1),
ks_level: DecompositionLevelCount(17),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -80.066,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.361, algorithmic cost ~ 1241, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(947),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
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(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -80.361,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.2, algorithmic cost ~ 2825, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(974),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -81.2,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.629, algorithmic cost ~ 8287, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1058),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -81.629,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.136, algorithmic cost ~ 18946, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1116),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -80.136,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.147, algorithmic cost ~ 81, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(830),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(46),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.147,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.001, algorithmic cost ~ 268, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(877),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(1),
ks_level: DecompositionLevelCount(17),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.001,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.374, algorithmic cost ~ 1241, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(947),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
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(4),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -80.374,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.329, algorithmic cost ~ 2822, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(973),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
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: -80.329,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.344, algorithmic cost ~ 6352, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1065),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
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(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -81.344,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.232, algorithmic cost ~ 18589, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1095),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -81.232,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.046, algorithmic cost ~ 267, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(873),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(1),
ks_level: DecompositionLevelCount(17),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.046,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.032, algorithmic cost ~ 857, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(960),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -80.032,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.419, algorithmic cost ~ 2822, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(973),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -80.419,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.454, algorithmic cost ~ 6317, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1059),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -80.454,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.341, algorithmic cost ~ 18538, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1092),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
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: -80.341,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.676, algorithmic cost ~ 848, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(950),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(43),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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: -80.676,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.497, algorithmic cost ~ 2822, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(973),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
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: -80.497,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.207, algorithmic cost ~ 6311, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1058),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -81.207,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.574, algorithmic cost ~ 14609, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1143),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(38),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -80.574,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.154, algorithmic cost ~ 2001, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1062),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.154,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.091, algorithmic cost ~ 6305, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1057),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
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(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.091,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.558, algorithmic cost ~ 14309, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1097),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -80.558,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.196, algorithmic cost ~ 6305, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1057),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(40),
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(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.196,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.918, algorithmic cost ~ 14257, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1093),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
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(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.918,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.865, algorithmic cost ~ 14244, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1092),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(39),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(14),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.865,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,79 +0,0 @@
// p-fail = 2^-192.263, algorithmic cost ~ 87, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(7),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -192.263,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-94.996, algorithmic cost ~ 260, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(22),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(6),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -94.996,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-88.256, algorithmic cost ~ 3355, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(20),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -88.256,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-84.739, algorithmic cost ~ 20133, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_TUNIFORM_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(13),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(25),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -84.739,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,5 +1,2 @@
pub mod compact_pk;
pub mod p_fail_2_minus_128;
pub mod p_fail_2_minus_40;
pub mod p_fail_2_minus_64;
pub mod p_fail_2_minus_80;

View File

@@ -1,869 +0,0 @@
// p-fail = 2^-129.522, algorithmic cost ~ 40, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(692),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.2726188072598936e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
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: -129.522,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.979, algorithmic cost ~ 67, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(747),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.243822162983204e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
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: -128.979,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.657, algorithmic cost ~ 96, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(754),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.245660187519409e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(7),
log2_p_fail: -129.657,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-130.26, algorithmic cost ~ 321, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(816),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.3100922770371144e-06,
)),
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(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(15),
log2_p_fail: -130.26,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.016, algorithmic cost ~ 744, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(873),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.076382410715912e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -128.016,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.338, algorithmic cost ~ 1702, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(944),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.1812383054912934e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -129.338,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.439, algorithmic cost ~ 5022, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(995),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.517930223927578e-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: -128.439,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.275, algorithmic cost ~ 14157, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1080),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.7771292509780004e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -128.275,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.015, algorithmic cost ~ 67, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(747),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.243822162983204e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
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: -129.015,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.098, algorithmic cost ~ 96, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(753),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.380490037401049e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.098,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.586, algorithmic cost ~ 222, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(845),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.3533791553518106e-06,
)),
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(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -128.586,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.213, algorithmic cost ~ 744, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(873),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.076382410715912e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -128.213,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.358, algorithmic cost ~ 1689, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(937),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.48172564268615e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -129.358,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.01, algorithmic cost ~ 5012, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(993),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.837889152830665e-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: -129.01,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.653, algorithmic cost ~ 11642, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1083),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.681501686282244e-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(8),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -128.653,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.189, algorithmic cost ~ 96, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(753),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.380490037401049e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.189,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.221, algorithmic cost ~ 221, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(841),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.4569626795741467e-06,
)),
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(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.221,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.232, algorithmic cost ~ 744, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(873),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.076382410715912e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -128.232,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.54, algorithmic cost ~ 1687, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(936),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.527906485727494e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -128.54,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.439, algorithmic cost ~ 3856, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1032),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.305923848218434e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -129.439,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.042, algorithmic cost ~ 11255, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1060),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.5695894230463044e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -128.042,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.585, algorithmic cost ~ 221, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(841),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.4569626795741467e-06,
)),
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(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.585,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.88, algorithmic cost ~ 515, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(925),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.096282659344759e-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: -128.88,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.021, algorithmic cost ~ 1687, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(936),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.527906485727494e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(17),
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: -128.021,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.439, algorithmic cost ~ 3822, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1023),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.083132953850712e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -128.439,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.705, algorithmic cost ~ 11223, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1057),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.715722835102037e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -128.705,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.07, algorithmic cost ~ 509, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(913),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.863024236709095e-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: -129.07,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.813, algorithmic cost ~ 1687, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(936),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.527906485727494e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.813,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.64, algorithmic cost ~ 3818, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1022),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.1777217194509186e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -129.64,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.108, algorithmic cost ~ 8924, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1116),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
9.150788507221534e-09,
)),
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(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -128.108,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.181, algorithmic cost ~ 1219, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1005),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.083725405883707e-08,
)),
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(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.181,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.307, algorithmic cost ~ 3814, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1021),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.27407062680997e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -128.307,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.223, algorithmic cost ~ 8640, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1063),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.4313194696038835e-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(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -129.223,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-128.32, algorithmic cost ~ 3814, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1021),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.27407062680997e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -128.32,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.449, algorithmic cost ~ 8599, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1058),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.6661108851744016e-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(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -129.449,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-129.706, algorithmic cost ~ 8591, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1057),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.715722835102037e-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(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -129.706,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WITH_CARRY_PARAMETERS_VEC: [ClassicPBSParameters; 36] = [
PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128,
PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128,
];
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1 +0,0 @@
pub mod ks_pbs;

View File

@@ -1,869 +0,0 @@
// p-fail = 2^-40.126, algorithmic cost ~ 29, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(695),
glwe_dimension: GlweDimension(5),
polynomial_size: PolynomialSize(256),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.1503288827085764e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.449096324925789e-10,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.126,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.569, algorithmic cost ~ 41, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(702),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.889967064728197e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
pbs_base_log: DecompositionBaseLog(18),
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: -40.569,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.026, algorithmic cost ~ 68, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(759),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.607570143466592e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
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: -40.026,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.074, algorithmic cost ~ 97, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(764),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.025673585415336e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
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: -40.074,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.02, algorithmic cost ~ 324, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(825),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.9568800418143656e-06,
)),
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(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -40.02,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.108, algorithmic cost ~ 752, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(882),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.841506595511918e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -40.108,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.388, algorithmic cost ~ 2237, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(948),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0261620265864796e-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(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -40.388,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.041, algorithmic cost ~ 5158, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1022),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.1777217194509186e-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(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -40.041,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.147, algorithmic cost ~ 41, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(699),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.9974501253932986e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
pbs_base_log: DecompositionBaseLog(18),
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: -40.147,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.097, algorithmic cost ~ 68, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(759),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.607570143466592e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.097,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.05, algorithmic cost ~ 97, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(761),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.36835566258815e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -40.05,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.039, algorithmic cost ~ 242, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(869),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.694524155962315e-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(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -40.039,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.402, algorithmic cost ~ 752, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(882),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.841506595511918e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -40.402,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.044, algorithmic cost ~ 1716, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(952),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.8821109768913407e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -40.044,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.375, algorithmic cost ~ 5067, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1004),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.21554191512647e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -40.375,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.102, algorithmic cost ~ 68, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(759),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.607570143466592e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.102,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.281, algorithmic cost ~ 97, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(761),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.36835566258815e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.281,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.2, algorithmic cost ~ 224, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(853),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.1677815109751845e-06,
)),
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(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.2,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.432, algorithmic cost ~ 752, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(882),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.841506595511918e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -40.432,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.114, algorithmic cost ~ 1709, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(948),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0261620265864796e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -40.114,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.577, algorithmic cost ~ 5062, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1003),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.349811313366648e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -40.577,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.315, algorithmic cost ~ 97, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(761),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.36835566258815e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.315,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.244, algorithmic cost ~ 223, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(850),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.2341936370541013e-06,
)),
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: -40.244,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.437, algorithmic cost ~ 752, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(882),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.841506595511918e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.437,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.451, algorithmic cost ~ 1709, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(948),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0261620265864796e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -40.451,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.031, algorithmic cost ~ 3912, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1047),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.2655610277767573e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -40.031,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.042, algorithmic cost ~ 223, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(849),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.2571599559956785e-06,
)),
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: -40.042,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.102, algorithmic cost ~ 527, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(893),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
5.58562986578297e-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(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.102,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.019, algorithmic cost ~ 1707, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(947),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0638655780656257e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.019,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.383, algorithmic cost ~ 3867, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1035),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.07422150515931e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -40.383,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.09, algorithmic cost ~ 519, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(931),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.77202526552345e-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(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.09,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.034, algorithmic cost ~ 1707, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(947),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0638655780656257e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.034,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.43, algorithmic cost ~ 3859, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1033),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.2272614473324486e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -40.43,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.038, algorithmic cost ~ 1707, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(947),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.0638655780656257e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.038,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.168, algorithmic cost ~ 3856, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1032),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.305923848218434e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -40.168,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-40.231, algorithmic cost ~ 3856, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1032),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.305923848218434e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -40.231,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WITH_CARRY_PARAMETERS_VEC: [ClassicPBSParameters; 36] = [
PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M40,
PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M40,
];
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1,2 +0,0 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1 +1,2 @@
pub mod ks_pbs;
pub mod pbs_ks;

View File

@@ -1,100 +1,100 @@
// p-fail = 2^-40.286, algorithmic cost ~ 47, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
// p-fail = 2^-64.089, algorithmic cost ~ 68, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(798),
glwe_dimension: GlweDimension(3),
lwe_dimension: LweDimension(886),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.2192861177056265e-06,
1.4490264961242091e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(18),
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: -40.286,
log2_p_fail: -64.089,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-40.448, algorithmic cost ~ 109, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
// p-fail = 2^-64.219, algorithmic cost ~ 125, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(886),
lwe_dimension: LweDimension(951),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.3551061035236e-07,
4.7209178960699193e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
2.845267479601915e-15,
)),
pbs_base_log: DecompositionBaseLog(23),
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(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -40.448,
log2_p_fail: -64.219,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-40.271, algorithmic cost ~ 869, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
// p-fail = 2^-64.015, algorithmic cost ~ 1252, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1040),
lwe_dimension: LweDimension(1123),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(8192),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.715424637458287e-08,
2.4278258762638764e-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(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(1),
ks_level: DecompositionLevelCount(22),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -40.271,
log2_p_fail: -64.015,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-40.098, algorithmic cost ~ 4674, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M40: ClassicPBSParameters =
// p-fail = 2^-64.67, algorithmic cost ~ 13517, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1251),
lwe_dimension: LweDimension(1289),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.594193407931982e-10,
1.3847362925087773e-09,
)),
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(5),
ks_level: DecompositionLevelCount(5),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -40.098,
log2_p_fail: -64.67,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
pub const WITH_CARRY_PARAMETERS_VEC_PBS_KS: [ClassicPBSParameters; 4] = [
PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M40,
PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M40,
PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M40,
PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M40,
PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64,
PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64,
PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64,
PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64,
];
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;

View File

@@ -1,869 +0,0 @@
// p-fail = 2^-80.462, algorithmic cost ~ 38, 2-norm = 1
pub const PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(710),
glwe_dimension: GlweDimension(6),
polynomial_size: PolynomialSize(256),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.630783646854603e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
pbs_base_log: DecompositionBaseLog(18),
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: -80.462,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.039, algorithmic cost ~ 49, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(761),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.36835566258815e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
pbs_base_log: DecompositionBaseLog(18),
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: -80.039,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.082, algorithmic cost ~ 76, 2-norm = 7
pub const PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(781),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.4043577651404615e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(7),
log2_p_fail: -80.082,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.003, algorithmic cost ~ 156, 2-norm = 15
pub const PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(845),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.3533791553518106e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
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: -80.003,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.01, algorithmic cost ~ 437, 2-norm = 31
pub const PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(875),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.783992381732945e-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(1),
ks_level: DecompositionLevelCount(18),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(31),
log2_p_fail: -80.01,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.762, algorithmic cost ~ 1651, 2-norm = 63
pub const PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(916),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.6551543814839554e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(63),
log2_p_fail: -80.762,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.654, algorithmic cost ~ 4911, 2-norm = 127
pub const PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(973),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.2778894093759152e-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(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(127),
log2_p_fail: -80.654,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.455, algorithmic cost ~ 13607, 2-norm = 255
pub const PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1038),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.8549870964324064e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
max_noise_level: MaxNoiseLevel::new(255),
log2_p_fail: -80.455,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.041, algorithmic cost ~ 46, 2-norm = 1
pub const PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(746),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
8.39722616978446e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.966608917163306e-12,
)),
pbs_base_log: DecompositionBaseLog(18),
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: -80.041,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.062, algorithmic cost ~ 76, 2-norm = 2
pub const PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(780),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.486315637981604e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.062,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.033, algorithmic cost ~ 110, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(841),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.4569626795741467e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
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: -80.033,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.033, algorithmic cost ~ 437, 2-norm = 10
pub const PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(875),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.783992381732945e-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(1),
ks_level: DecompositionLevelCount(18),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(10),
log2_p_fail: -80.033,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.883, algorithmic cost ~ 1648, 2-norm = 21
pub const PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(914),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.7924529094279635e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(21),
log2_p_fail: -81.883,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.373, algorithmic cost ~ 3874, 2-norm = 42
pub const PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1037),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.926722082348923e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(42),
log2_p_fail: -80.373,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.054, algorithmic cost ~ 11064, 2-norm = 85
pub const PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1042),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.580914771260141e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
max_noise_level: MaxNoiseLevel::new(85),
log2_p_fail: -81.054,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.083, algorithmic cost ~ 76, 2-norm = 1
pub const PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(780),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.486315637981604e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.083,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.037, algorithmic cost ~ 108, 2-norm = 2
pub const PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(849),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.2571599559956785e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.037,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.035, algorithmic cost ~ 437, 2-norm = 4
pub const PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(875),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.783992381732945e-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(1),
ks_level: DecompositionLevelCount(18),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -80.035,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.442, algorithmic cost ~ 1646, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(913),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.863024236709095e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -80.442,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.18, algorithmic cost ~ 3747, 2-norm = 18
pub const PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1003),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.349811313366648e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(18),
log2_p_fail: -81.18,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.832, algorithmic cost ~ 10969, 2-norm = 36
pub const PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1033),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.2272614473324486e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
max_noise_level: MaxNoiseLevel::new(36),
log2_p_fail: -80.832,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.02, algorithmic cost ~ 107, 2-norm = 1
pub const PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(846),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
1.3286550642109384e-06,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.1529322391500584e-16,
)),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.02,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.035, algorithmic cost ~ 437, 2-norm = 2
pub const PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(875),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.783992381732945e-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(1),
ks_level: DecompositionLevelCount(18),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.035,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.528, algorithmic cost ~ 1646, 2-norm = 4
pub const PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(913),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.863024236709095e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -80.528,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.589, algorithmic cost ~ 3736, 2-norm = 8
pub const PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1000),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.76779754710308e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -81.589,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.259, algorithmic cost ~ 10958, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1032),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.305923848218434e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(7),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -81.259,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.035, algorithmic cost ~ 437, 2-norm = 1
pub const PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(875),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(4096),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.783992381732945e-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(1),
ks_level: DecompositionLevelCount(18),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.035,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.544, algorithmic cost ~ 1646, 2-norm = 2
pub const PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(913),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.863024236709095e-07,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.544,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.719, algorithmic cost ~ 3732, 2-norm = 4
pub const PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(999),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.912343516701649e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -80.719,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.368, algorithmic cost ~ 8469, 2-norm = 8
pub const PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1042),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.580914771260141e-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(8),
max_noise_level: MaxNoiseLevel::new(8),
log2_p_fail: -80.368,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.934, algorithmic cost ~ 1153, 2-norm = 1
pub const PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(926),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.0397184848746404e-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(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -80.934,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.739, algorithmic cost ~ 3732, 2-norm = 2
pub const PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(999),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.912343516701649e-08,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
2.168404344971009e-19,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.739,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.253, algorithmic cost ~ 8404, 2-norm = 4
pub const PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1034),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.150036083777197e-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(4),
max_noise_level: MaxNoiseLevel::new(4),
log2_p_fail: -81.253,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.05, algorithmic cost ~ 3732, 2-norm = 1
pub const PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(999),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(32768),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
7.912343516701649e-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(4),
ks_level: DecompositionLevelCount(5),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -81.05,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-80.86, algorithmic cost ~ 8388, 2-norm = 2
pub const PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1032),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.305923848218434e-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(2),
max_noise_level: MaxNoiseLevel::new(2),
log2_p_fail: -80.86,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
// p-fail = 2^-81.638, algorithmic cost ~ 8388, 2-norm = 1
pub const PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M80: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1032),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
4.305923848218434e-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(256),
carry_modulus: CarryModulus(1),
max_noise_level: MaxNoiseLevel::new(1),
log2_p_fail: -81.638,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WITH_CARRY_PARAMETERS_VEC: [ClassicPBSParameters; 36] = [
PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M80,
PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M80,
];
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -1 +0,0 @@
pub mod ks_pbs;

View File

@@ -30,7 +30,7 @@ pub use super::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel};
pub use super::PBSOrder;
pub use crate::core_crypto::commons::parameters::EncryptionKeyChoice;
pub use crate::shortint::parameters::classic::compact_pk::*;
use crate::shortint::parameters::classic::p_fail_2_minus_40::{ks_pbs, pbs_ks};
use crate::shortint::parameters::classic::p_fail_2_minus_64::{ks_pbs, pbs_ks};
pub use compact_public_key_only::CompactCiphertextListExpansionKind;
#[cfg(tarpaulin)]
pub use coverage_parameters::*;
@@ -698,85 +698,85 @@ pub fn get_parameters_from_message_and_carry(
// Aliases, to be deprecated in subsequent versions once we e.g. have the "parameter builder"
pub const PARAM_MESSAGE_1_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_5_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_6_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_7_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_5_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_6_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_5_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_7_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_7_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_8_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M40;
ks_pbs::PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M40;
pbs_ks::PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_0: ClassicPBSParameters = PARAM_MESSAGE_1_CARRY_0_KS_PBS;
pub const PARAM_MESSAGE_1_CARRY_1: ClassicPBSParameters = PARAM_MESSAGE_1_CARRY_1_KS_PBS;

View File

@@ -1,9 +1,6 @@
//! #Warning experimental
pub mod p_fail_2_minus_128;
pub mod p_fail_2_minus_40;
pub mod p_fail_2_minus_64;
pub mod p_fail_2_minus_80;
use super::CiphertextConformanceParams;
pub use crate::core_crypto::commons::dispersion::StandardDev;
@@ -13,8 +10,8 @@ pub use crate::core_crypto::commons::parameters::{
};
use crate::core_crypto::prelude::{LweCiphertextParameters, MsDecompressionType};
use crate::shortint::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel};
use crate::shortint::parameters::p_fail_2_minus_40::ks_pbs::*;
use crate::shortint::parameters::p_fail_2_minus_40::ks_pbs_gpu::*;
use crate::shortint::parameters::p_fail_2_minus_64::ks_pbs::*;
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, EncryptionKeyChoice, LweBskGroupingFactor, MessageModulus,
};
@@ -104,17 +101,17 @@ pub const ALL_MULTI_BIT_PARAMETER_VEC: [MultiBitPBSParameters; 6] = [
// Convenience aliases
pub const PARAM_MULTI_BIT_MESSAGE_1_CARRY_1_GROUP_2_KS_PBS: MultiBitPBSParameters =
PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40;
PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS: MultiBitPBSParameters =
PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40;
PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MULTI_BIT_MESSAGE_3_CARRY_3_GROUP_2_KS_PBS: MultiBitPBSParameters =
PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40;
PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MULTI_BIT_MESSAGE_1_CARRY_1_GROUP_3_KS_PBS: MultiBitPBSParameters =
PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40;
PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_PBS: MultiBitPBSParameters =
PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40;
PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MULTI_BIT_MESSAGE_3_CARRY_3_GROUP_3_KS_PBS: MultiBitPBSParameters =
PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40;
PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const DEFAULT_MULTI_BIT_GROUP_2: MultiBitPBSParameters =
PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS;
pub const DEFAULT_MULTI_BIT_GROUP_3: MultiBitPBSParameters =

View File

@@ -1 +0,0 @@
pub mod ks_pbs;

View File

@@ -1,2 +1 @@
pub mod ks_pbs;
pub mod ks_pbs_gpu;

View File

@@ -1 +0,0 @@
pub mod ks_pbs;

View File

@@ -240,7 +240,7 @@ async function compressedCompactPublicKeyTest256BitOnConfig(config) {
async function compactPublicKeyZeroKnowledge() {
let block_params = new ShortintParameters(
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
);
let config = TfheConfigBuilder.default()
@@ -492,7 +492,7 @@ async function compressedServerKeyBenchMessage2Carry2() {
async function compactPublicKeyZeroKnowledgeBench() {
let block_params = new ShortintParameters(
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M40,
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
);
let config = TfheConfigBuilder.default()