diff --git a/evaluator/examples/multi_party.rs b/evaluator/examples/multi_party.rs index f8f6d14..9004736 100644 --- a/evaluator/examples/multi_party.rs +++ b/evaluator/examples/multi_party.rs @@ -2,10 +2,7 @@ use core::{array::from_fn, iter::repeat_with}; use itertools::{izip, Itertools}; use phantom_zone_evaluator::boolean::{ dev::MockBoolEvaluator, - fhew::{ - param::{I_4P, I_4P_60}, - prelude::*, - }, + fhew::{param::I_4P_40, prelude::*}, }; use pz::*; use rand::{rngs::StdRng, Rng, SeedableRng}; @@ -823,6 +820,8 @@ fn e2e(param: Param) { .collect_vec() ); + println!("Size: {:?}", bs_key_shares[0].len()); + timed!( "server: aggregate bootstrapping key shares", server.aggregate_bs_key_shares( @@ -991,19 +990,19 @@ fn e2e(param: Param) { fn main() { e2e::(Param { - param: I_4P_60, + param: I_4P_40, ring_packing_modulus: Some(Modulus::Prime(2305843009213554689)), ring_packing_auto_decomposition_param: DecompositionParam { log_base: 20, level: 1, }, }); - e2e::(Param { - param: I_4P, - ring_packing_modulus: None, - ring_packing_auto_decomposition_param: DecompositionParam { - log_base: 20, - level: 1, - }, - }); + // e2e::(Param { + // param: I_4P, + // ring_packing_modulus: None, + // ring_packing_auto_decomposition_param: DecompositionParam { + // log_base: 20, + // level: 1, + // }, + // }); } diff --git a/evaluator/src/boolean/evaluator/fhew/param.rs b/evaluator/src/boolean/evaluator/fhew/param.rs index 015322b..9104322 100644 --- a/evaluator/src/boolean/evaluator/fhew/param.rs +++ b/evaluator/src/boolean/evaluator/fhew/param.rs @@ -73,3 +73,40 @@ pub const I_4P_60: FhewBoolMpiParam = FhewBoolMpiParam { }, total_shares: 4, }; + +pub const I_4P_40: FhewBoolMpiParam = FhewBoolMpiParam { + param: FhewBoolParam { + message_bits: 2, + modulus: Modulus::PowerOfTwo(64), + ring_size: 512, + sk_distribution: SecretDistribution::Ternary(Ternary), + noise_distribution: NoiseDistribution::Gaussian(Gaussian(3.19)), + u_distribution: SecretDistribution::Ternary(Ternary), + auto_decomposition_param: DecompositionParam { + log_base: 18, + level: 1, + }, + rlwe_by_rgsw_decomposition_param: RgswDecompositionParam { + log_base: 18, + level_a: 1, + level_b: 1, + }, + lwe_modulus: Modulus::PowerOfTwo(18), + lwe_dimension: 250, + lwe_sk_distribution: SecretDistribution::Ternary(Ternary), + lwe_noise_distribution: NoiseDistribution::Gaussian(Gaussian(3.19)), + lwe_ks_decomposition_param: DecompositionParam { + log_base: 4, + level: 3, + }, + q: 512, + g: 5, + w: 10, + }, + rgsw_by_rgsw_decomposition_param: RgswDecompositionParam { + log_base: 15, + level_a: 3, + level_b: 3, + }, + total_shares: 4, +};