Fix glwe/test_fft64/encrypt_sk for case k_pt < basek

This commit is contained in:
Janmajaya Mall
2025-07-04 17:32:19 +05:30
parent c4a517e9c3
commit 30b5edc536

View File

@@ -8,8 +8,10 @@ use crate::{FourierGLWECiphertext, FourierGLWESecret, GLWECiphertext, GLWEPlaint
fn encrypt_sk() {
let log_n: usize = 8;
(1..4).for_each(|rank| {
println!("test encrypt_sk rank: {}", rank);
test_encrypt_sk(log_n, 8, 54, 30, 3.2, rank);
[2, 10, 30].iter().for_each(|k_pt| {
println!("test encrypt_sk rank: {}, k_pt: {k_pt}", rank);
test_encrypt_sk(log_n, 8, 54, *k_pt, 3.2, rank);
});
});
}
@@ -51,12 +53,21 @@ fn test_encrypt_sk(log_n: usize, basek: usize, k_ct: usize, k_pt: usize, sigma:
let sk_dft: FourierGLWESecret<Vec<u8>, FFT64> = FourierGLWESecret::from(&module, &sk);
let mut data_want: Vec<i64> = vec![0i64; module.n()];
data_want
.iter_mut()
.for_each(|x| *x = source_xa.next_i64() & 0xFF);
pt.data.encode_vec_i64(0, basek, k_pt, &data_want, 10);
if k_pt < 64 {
let pt_max = 1 << k_pt;
data_want.iter_mut().for_each(|x| {
let v = source_xa.next_u64n(pt_max, pt_max - 1);
*x = if v >= pt_max / 2 {
-((pt_max - v) as i64)
} else {
v as i64
};
});
} else {
data_want.iter_mut().for_each(|x| *x = source_xa.next_i64());
}
pt.data
.encode_vec_i64(0, basek, k_pt, &data_want, std::cmp::min(k_pt, 64));
ct.encrypt_sk(
&module,
@@ -83,7 +94,7 @@ fn test_encrypt_sk(log_n: usize, basek: usize, k_ct: usize, k_pt: usize, sigma:
let b_scaled = (*b as f64) / scale;
assert!(
(*a as f64 - b_scaled).abs() < 0.1,
"{} {}",
"a={} b={}",
*a as f64,
b_scaled
)