bilby 0.3.0

A high-performance numerical quadrature (integration) library for Rust
Documentation
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};

use bilby::{ClenshawCurtis, GaussHermite, GaussJacobi, GaussLaguerre, GaussLegendre};

fn bench_gl_newton(c: &mut Criterion) {
    let mut group = c.benchmark_group("gl_newton");
    for n in [10, 50, 100] {
        group.bench_with_input(BenchmarkId::from_parameter(n), &n, |b, &n| {
            b.iter(|| GaussLegendre::new(n).unwrap());
        });
    }
    group.finish();
}

fn bench_gl_bogaert(c: &mut Criterion) {
    let mut group = c.benchmark_group("gl_bogaert");
    for n in [200, 1_000, 10_000, 100_000] {
        group.bench_with_input(BenchmarkId::from_parameter(n), &n, |b, &n| {
            b.iter(|| GaussLegendre::new(n).unwrap());
        });
    }
    group.finish();
}

fn bench_golub_welsch(c: &mut Criterion) {
    let mut group = c.benchmark_group("golub_welsch");
    group.bench_function("jacobi_n50", |b| {
        b.iter(|| GaussJacobi::new(50, 0.5, 0.5).unwrap());
    });
    group.bench_function("hermite_n50", |b| {
        b.iter(|| GaussHermite::new(50).unwrap());
    });
    group.bench_function("laguerre_n50", |b| {
        b.iter(|| GaussLaguerre::new(50, 0.0).unwrap());
    });
    group.finish();
}

fn bench_clenshaw_curtis(c: &mut Criterion) {
    let mut group = c.benchmark_group("clenshaw_curtis");
    for n in [33, 65, 129] {
        group.bench_with_input(BenchmarkId::from_parameter(n), &n, |b, &n| {
            b.iter(|| ClenshawCurtis::new(n).unwrap());
        });
    }
    group.finish();
}

criterion_group!(
    benches,
    bench_gl_newton,
    bench_gl_bogaert,
    bench_golub_welsch,
    bench_clenshaw_curtis,
);
criterion_main!(benches);