put decomposer in main.rs in different file

This commit is contained in:
Janmajaya Mall
2024-06-04 15:42:13 +05:30
parent 4a0d96d7a4
commit ccee110b34
8 changed files with 170 additions and 76 deletions

View File

@@ -160,7 +160,7 @@ where
}
}
trait BoolEncoding {
pub(super) trait BoolEncoding {
type Element;
fn true_el(&self) -> Self::Element;
fn false_el(&self) -> Self::Element;
@@ -210,7 +210,7 @@ where
}
}
struct BoolPbsInfo<M: Matrix, Ntt, RlweModOp, LweModOp> {
pub(super) struct BoolPbsInfo<M: Matrix, Ntt, RlweModOp, LweModOp> {
auto_decomposer: DefaultDecomposer<M::MatElement>,
rlwe_rgsw_decomposer: (
DefaultDecomposer<M::MatElement>,
@@ -305,7 +305,15 @@ where
_phantom: PhantomData<M>,
}
impl<M: Matrix, NttOp, RlweModOp, LweModOp> BoolEvaluator<M, NttOp, RlweModOp, LweModOp> {}
impl<M: Matrix, NttOp, RlweModOp, LweModOp> BoolEvaluator<M, NttOp, RlweModOp, LweModOp> {
pub(super) fn parameters(&self) -> &BoolParameters<M::MatElement> {
&self.pbs_info.parameters
}
pub(super) fn pbs_info(&self) -> &BoolPbsInfo<M, NttOp, RlweModOp, LweModOp> {
&self.pbs_info
}
}
impl<M: Matrix, NttOp, RlweModOp, LweModOp> BoolEvaluator<M, NttOp, RlweModOp, LweModOp>
where
@@ -1687,7 +1695,7 @@ mod tests {
>::new(MP_BOOL_PARAMS);
let (parties, collective_pk, _, _, server_key_eval, ideal_client_key) =
_multi_party_all_keygen(&bool_evaluator, 64);
_multi_party_all_keygen(&bool_evaluator, 2);
let mut m0 = true;
let mut m1 = false;

View File

@@ -1,5 +1,6 @@
pub(crate) mod evaluator;
pub(crate) mod keys;
pub mod noise;
pub(crate) mod parameters;
pub type FheBool = Vec<u64>;

View File

@@ -319,22 +319,58 @@ pub(crate) const MP_BOOL_PARAMS: BoolParameters<u64> = BoolParameters::<u64> {
lwe_decomposer_base: DecompostionLogBase(4),
lwe_decomposer_count: DecompositionCount(5),
rlrg_decomposer_base: DecompostionLogBase(12),
rlrg_decomposer_count: (DecompositionCount(2), DecompositionCount(2)),
rlrg_decomposer_count: (DecompositionCount(5), DecompositionCount(5)),
rgrg_decomposer_base: DecompostionLogBase(12),
rgrg_decomposer_count: (DecompositionCount(5), DecompositionCount(4)),
rgrg_decomposer_count: (DecompositionCount(5), DecompositionCount(5)),
auto_decomposer_base: DecompostionLogBase(12),
auto_decomposer_count: DecompositionCount(5),
g: 5,
w: 10,
};
// pub(crate) const SMALL_MP_BOOL_PARAMS: BoolParameters<u64> =
// BoolParameters::<u64> { rlwe_q:
// CiphertextModulus::new_non_native(36028797018820609), lwe_q:
// CiphertextModulus::new_non_native(1 << 20), br_q: 1 << 11,
// rlwe_n: PolynomialSize(1 << 11),
// lwe_n: LweDimension(600),
// lwe_decomposer_base: DecompostionLogBase(4),
// lwe_decomposer_count: DecompositionCount(5),
// rlrg_decomposer_base: DecompostionLogBase(11),
// rlrg_decomposer_count: (DecompositionCount(2), DecompositionCount(2)),
// rgrg_decomposer_base: DecompostionLogBase(11),
// rgrg_decomposer_count: (DecompositionCount(5), DecompositionCount(4)),
// auto_decomposer_base: DecompostionLogBase(11),
// auto_decomposer_count: DecompositionCount(2),
// g: 5,
// w: 10,
// };
pub(crate) const SMALL_MP_BOOL_PARAMS: BoolParameters<u64> = BoolParameters::<u64> {
rlwe_q: CiphertextModulus::new_non_native(36028797018820609),
lwe_q: CiphertextModulus::new_non_native(1 << 20),
br_q: 1 << 11,
rlwe_n: PolynomialSize(1 << 11),
lwe_n: LweDimension(500),
lwe_decomposer_base: DecompostionLogBase(4),
lwe_decomposer_count: DecompositionCount(5),
rlrg_decomposer_base: DecompostionLogBase(11),
rlrg_decomposer_count: (DecompositionCount(5), DecompositionCount(5)),
rgrg_decomposer_base: DecompostionLogBase(11),
rgrg_decomposer_count: (DecompositionCount(5), DecompositionCount(5)),
auto_decomposer_base: DecompostionLogBase(11),
auto_decomposer_count: DecompositionCount(5),
g: 5,
w: 10,
};
#[cfg(test)]
mod tests {
use crate::utils::generate_prime;
#[test]
fn find_prime() {
let bits = 61;
let bits = 55;
let ring_size = 1 << 11;
let prime = generate_prime(bits, ring_size * 2, 1 << bits).unwrap();
dbg!(prime);