use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; use math::{modulus::prime::Prime,dft::ntt::Table}; use math::dft::DFT; fn forward_inplace(c: &mut Criterion) { fn runner(prime_instance: Prime, nth_root: u64) -> Box { let ntt_table: Table = Table::::new(prime_instance, nth_root); let mut a: Vec = vec![0; (nth_root >> 1) as usize]; for i in 0..a.len(){ a[i] = i as u64; } Box::new(move || { ntt_table.forward_inplace::(&mut a) }) } let mut b: criterion::BenchmarkGroup<'_, criterion::measurement::WallTime> = c.benchmark_group("forward_inplace"); for log_nth_root in 11..18 { let prime_instance: Prime = Prime::::new(0x1fffffffffe00001, 1); let runners = [ ("prime", { runner(prime_instance, 1<, nth_root: u64) -> Box { let ntt_table: Table = Table::::new(prime_instance, nth_root); let mut a: Vec = vec![0; (nth_root >> 1) as usize]; for i in 0..a.len(){ a[i] = i as u64; } Box::new(move || { ntt_table.forward_inplace_lazy(&mut a) }) } let mut b: criterion::BenchmarkGroup<'_, criterion::measurement::WallTime> = c.benchmark_group("forward_inplace_lazy"); for log_nth_root in 11..17 { let prime_instance: Prime = Prime::::new(0x1fffffffffe00001, 1); let runners = [ ("prime", { runner(prime_instance, 1<, nth_root: u64) -> Box { let ntt_table: Table = Table::::new(prime_instance, nth_root); let mut a: Vec = vec![0; (nth_root >> 1) as usize]; for i in 0..a.len(){ a[i] = i as u64; } Box::new(move || { ntt_table.backward_inplace::(&mut a) }) } let mut b: criterion::BenchmarkGroup<'_, criterion::measurement::WallTime> = c.benchmark_group("backward_inplace"); for log_nth_root in 11..18 { let prime_instance: Prime = Prime::::new(0x1fffffffffe00001, 1); let runners = [ ("prime", { runner(prime_instance, 1<, nth_root: u64) -> Box { let ntt_table: Table = Table::::new(prime_instance, nth_root); let mut a: Vec = vec![0; (nth_root >> 1) as usize]; for i in 0..a.len(){ a[i] = i as u64; } Box::new(move || { ntt_table.backward_inplace::(&mut a) }) } let mut b: criterion::BenchmarkGroup<'_, criterion::measurement::WallTime> = c.benchmark_group("backward_inplace_lazy"); for log_nth_root in 11..17 { let prime_instance: Prime = Prime::::new(0x1fffffffffe00001, 1); let runners = [ ("prime", { runner(prime_instance, 1<