swar 0.4.0

Perform operations in parallel on bit subslices in unsigned numbers
use rand::rngs::SmallRng;
use rand::{Rng, SeedableRng};
use swar::*;

#[test]
fn sum_weight() {
    let mut rng = SmallRng::from_seed([5; 16]);
    let numbers = rng
        .sample_iter(&rand::distributions::Standard)
        .take(100_000)
        .collect::<Vec<u128>>();
    for number in numbers {
        assert_eq!(
            number.count_ones(),
            Bits1(number)
                .sum_weight2()
                .sum_weight2()
                .sum_weight2()
                .sum_weight2()
                .sum_weight2()
                .sum_weight2()
                .sum_weight2()
                .0 as u32
        );
    }
}