|
@ -161,13 +161,10 @@ where |
|
|
|
|
|
|
|
|
let mut scratch_space = M::R::zeros(ring_size);
|
|
|
let mut scratch_space = M::R::zeros(ring_size);
|
|
|
|
|
|
|
|
|
println!("START KSK...");
|
|
|
|
|
|
izip!(ksk.iter_rows_mut(), gadget_vec.iter()).for_each(|(e_ksk, beta)| {
|
|
|
izip!(ksk.iter_rows_mut(), gadget_vec.iter()).for_each(|(e_ksk, beta)| {
|
|
|
// sample a_i
|
|
|
// sample a_i
|
|
|
RandomFillUniformInModulus::random_fill(p_rng, q, e_ksk.as_mut());
|
|
|
RandomFillUniformInModulus::random_fill(p_rng, q, e_ksk.as_mut());
|
|
|
|
|
|
|
|
|
println!("{:?}", e_ksk.as_ref());
|
|
|
|
|
|
|
|
|
|
|
|
// a_i * s + e + beta u
|
|
|
// a_i * s + e + beta u
|
|
|
nttop.forward(e_ksk.as_mut());
|
|
|
nttop.forward(e_ksk.as_mut());
|
|
|
modop.elwise_mul_mut(e_ksk.as_mut(), s_poly_eval.as_ref());
|
|
|
modop.elwise_mul_mut(e_ksk.as_mut(), s_poly_eval.as_ref());
|
|
@ -181,7 +178,6 @@ where |
|
|
// a_i * s + e + \beta * u
|
|
|
// a_i * s + e + \beta * u
|
|
|
modop.elwise_add_mut(e_ksk.as_mut(), scratch_space.as_ref());
|
|
|
modop.elwise_add_mut(e_ksk.as_mut(), scratch_space.as_ref());
|
|
|
});
|
|
|
});
|
|
|
println!("...END");
|
|
|
|
|
|
|
|
|
|
|
|
ksk
|
|
|
ksk
|
|
|
}
|
|
|
}
|
|
@ -217,11 +213,9 @@ where |
|
|
|
|
|
|
|
|
let mut scratch_space = M::R::zeros(ring_size);
|
|
|
let mut scratch_space = M::R::zeros(ring_size);
|
|
|
|
|
|
|
|
|
println!("START KSK 0 ENC...");
|
|
|
|
|
|
izip!(zero_encs.iter_rows_mut()).for_each(|(e_zero)| {
|
|
|
izip!(zero_encs.iter_rows_mut()).for_each(|(e_zero)| {
|
|
|
// sample a_i
|
|
|
// sample a_i
|
|
|
RandomFillUniformInModulus::random_fill(p_rng, q, e_zero.as_mut());
|
|
|
RandomFillUniformInModulus::random_fill(p_rng, q, e_zero.as_mut());
|
|
|
println!("{:?}", e_zero.as_ref());
|
|
|
|
|
|
|
|
|
|
|
|
// a_i * s + e
|
|
|
// a_i * s + e
|
|
|
nttop.forward(e_zero.as_mut());
|
|
|
nttop.forward(e_zero.as_mut());
|
|
@ -231,7 +225,6 @@ where |
|
|
RandomFillGaussianInModulus::random_fill(rng, q, scratch_space.as_mut());
|
|
|
RandomFillGaussianInModulus::random_fill(rng, q, scratch_space.as_mut());
|
|
|
modop.elwise_add_mut(e_zero.as_mut(), scratch_space.as_ref());
|
|
|
modop.elwise_add_mut(e_zero.as_mut(), scratch_space.as_ref());
|
|
|
});
|
|
|
});
|
|
|
println!("...END");
|
|
|
|
|
|
|
|
|
|
|
|
zero_encs
|
|
|
zero_encs
|
|
|
}
|
|
|
}
|