use num::complex::Complex;
use polylog::{Li2, Li3, Li4, Li5, Li6, Li};
use criterion::*;
fn bench_real_li2(c: &mut Criterion) {
let mut group = c.benchmark_group("li2(x)");
group.bench_function("x=0.25_f32", |b| b.iter(|| black_box(0.25_f32).li2()));
group.bench_function("x=0.25_f64", |b| b.iter(|| black_box(0.25_f64).li2()));
group.finish();
}
fn bench_complex_li2(c: &mut Criterion) {
let mut group = c.benchmark_group("li2(z)");
group.bench_function("z=0.25_f32+0.25_f32i", |b| b.iter(|| black_box(Complex::new(0.25_f32, 0.25_f32)).li2()));
group.bench_function("z=-0.7_f32+0.7_f32i" , |b| b.iter(|| black_box(Complex::new(-0.7_f32, 0.7_f32)).li2()));
group.bench_function("z=0.25_f64+0.25_f64i", |b| b.iter(|| black_box(Complex::new(0.25_f64, 0.25_f64)).li2()));
group.bench_function("z=-0.7_f64+0.7_f64i" , |b| b.iter(|| black_box(Complex::new(-0.7_f64, 0.7_f64)).li2()));
group.finish();
}
fn bench_real_li3(c: &mut Criterion) {
let mut group = c.benchmark_group("li3(x)");
group.bench_function("x=0.25", |b| b.iter(|| black_box(0.25_f64).li3()));
group.bench_function("x=-0.5", |b| b.iter(|| black_box(-0.5_f64).li3()));
group.finish();
}
fn bench_complex_li3(c: &mut Criterion) {
let mut group = c.benchmark_group("li3(z)");
group.bench_function("z=0.25+0.25i", |b| b.iter(|| black_box(Complex::new(0.25_f64, 0.25_f64)).li3()));
group.bench_function("z=-0.7+0.7i" , |b| b.iter(|| black_box(Complex::new(-0.7_f64, 0.7_f64)).li3()));
group.finish();
}
fn bench_real_li4(c: &mut Criterion) {
let mut group = c.benchmark_group("li4(x)");
group.bench_function("x=0.5" , |b| b.iter(|| black_box(0.25_f64).li4()));
group.bench_function("x=-0.5", |b| b.iter(|| black_box(-0.5_f64).li4()));
group.finish();
}
fn bench_complex_li4(c: &mut Criterion) {
let mut group = c.benchmark_group("li4(z)");
group.bench_function("z=0.25+0.25i", |b| b.iter(|| black_box(Complex::new(0.25_f64, 0.25_f64)).li4()));
group.bench_function("z=-0.7+0.7i" , |b| b.iter(|| black_box(Complex::new(-0.7_f64, 0.7_f64)).li4()));
group.finish();
}
fn bench_complex_li5(c: &mut Criterion) {
let mut group = c.benchmark_group("li5(z)");
group.bench_function("z=0.25+0.25i", |b| b.iter(|| black_box(Complex::new(0.25_f64, 0.25_f64)).li5()));
group.bench_function("z=-0.7+0.7i" , |b| b.iter(|| black_box(Complex::new(-0.7_f64, 0.7_f64)).li5()));
group.finish();
}
fn bench_complex_li6(c: &mut Criterion) {
let mut group = c.benchmark_group("li6(z)");
group.bench_function("z=0.25+0.25i", |b| b.iter(|| black_box(Complex::new(0.25_f64, 0.25_f64)).li6()));
group.bench_function("z=-0.7+0.7i" , |b| b.iter(|| black_box(Complex::new(-0.7_f64, 0.7_f64)).li6()));
group.finish();
}
fn bench_real_li(c: &mut Criterion) {
let mut ni: Vec<_> = (-10..10).step_by(2).collect();
let n2 = vec![-10000, -1000, -100, 100, 1000, 1000_000];
ni.extend(n2);
let mut group = c.benchmark_group("li(n,x)");
for n in ni.into_iter() {
group.bench_function(format!("n={},x=0.2", n), |b| b.iter(|| black_box(0.2_f64).li(n)));
group.bench_function(format!("n={},x=0.8", n), |b| b.iter(|| black_box(0.8_f64).li(n)));
}
group.finish();
}
fn bench_complex_li(c: &mut Criterion) {
let mut ni: Vec<_> = (-10..10).step_by(2).collect();
let n2 = vec![-10000, -1000, -100, 100, 1000, 1000_000];
ni.extend(n2);
let mut group = c.benchmark_group("li(n,z)");
for n in ni.into_iter() {
group.bench_function(format!("n={},z=0.25+0.25i", n), |b| b.iter(|| black_box(Complex::new(0.25_f64, 0.25_f64)).li(n)));
group.bench_function(format!("n={},z=-0.7+0.7i" , n), |b| b.iter(|| black_box(Complex::new(-0.7_f64, 0.7_f64)).li(n)));
}
group.finish();
}
criterion_group!(benches,
bench_real_li2, bench_complex_li2,
bench_real_li3, bench_complex_li3,
bench_real_li4, bench_complex_li4,
bench_complex_li5,
bench_complex_li6,
bench_real_li,
bench_complex_li
);
criterion_main!(benches);