poulpy/poulpy-hal/src/reference/fft64/mod.rs
poulpy-hal/src/reference/fft64/mod.rsRaw
1pub mod convolution;
2pub mod reim;
3pub mod reim4;
4pub mod svp;
5pub mod vec_znx_big;
6pub mod vec_znx_dft;
7pub mod vmp;
8
9pub(crate) fn assert_approx_eq_slice(a: &[f64], b: &[f64], tol: f64) {
10 assert_eq!(a.len(), b.len(), "Slices have different lengths");
11
12 for (i, (x, y)) in a.iter().zip(b.iter()).enumerate() {
13 let diff: f64 = (x - y).abs();
14 let scale: f64 = x.abs().max(y.abs()).max(1.0);
15 assert!(
16 diff <= tol * scale,
17 "Difference at index {}: left={} right={} rel_diff={} > tol={}",
18 i,
19 x,
20 y,
21 diff / scale,
22 tol
23 );
24 }
25}