use commonware_math::{fields::goldilocks::F, poly::Interpolator}; use commonware_utils::{ordered::BiMap, Faults, N3f1, TryFromIterator}; use core::num::NonZeroU32; use criterion::{criterion_group, criterion_main, Criterion}; fn bench_interpolator_creation(c: &mut Criterion) { for &n in &[4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096] { let t = N3f1::quorum(n); let total = NonZeroU32::new(n).unwrap(); let points = BiMap::try_from_iter((0..t).map(|i| (i, i + 1))) .expect("points should be in bijection"); let label = format!( "{module}::interpolator_creation/n={n}", module = module_path!() ); c.bench_function(&label, |b| { b.iter(|| { let _: Interpolator = Interpolator::roots_of_unity(total, points.clone()); }); }); } } criterion_group!(benches, bench_interpolator_creation,); criterion_main!(benches);