p3-util 0.6.2

A collection of utility functions and tools for low-level operations, such as bit manipulation and array transformations.
Documentation
use core::hint::black_box;

use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
use p3_util::reverse_slice_index_bits;
use rand::rngs::SmallRng;
use rand::{RngExt, SeedableRng};

fn bench_reverse_slice_index_bits(c: &mut Criterion) {
    let mut group = c.benchmark_group("reverse_slice_index_bits");
    let mut rng = SmallRng::seed_from_u64(1);
    for log_size in [1, 3, 5, 8, 16, 24, 26] {
        let size = 1 << log_size;
        group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
            let mut data: Vec<u64> = (0..size).map(|_| rng.random()).collect();
            b.iter(|| {
                reverse_slice_index_bits(black_box(&mut data));
            });
        });
    }
    group.finish();
}

criterion_group!(benches, bench_reverse_slice_index_bits);
criterion_main!(benches);