lpn 0.2.0

Software to study attacks on the Learning Parity with Noise problem
Documentation
#![feature(test)]

extern crate test;

use rand::prelude::*;

use test::Bencher;

use lpn::lf1::{fwht, parfwht};

const BITS: u32 = 10;

#[bench]
fn fwht_speed(b: &mut Bencher) {
    let mut majority_counter = vec![0; 2usize.pow(BITS)];
    let rng = &mut rand::thread_rng();
    majority_counter.iter_mut().for_each(|el| {
        *el = (rng).gen::<i64>() % 2i64.pow(16);
    });

    b.iter(|| {
        fwht(&mut majority_counter.clone(), BITS);
    });
}

#[bench]
fn parfwht_speed(b: &mut Bencher) {
    let mut majority_counter = vec![0; 2usize.pow(BITS)];
    let rng = &mut rand::thread_rng();
    majority_counter.iter_mut().for_each(|el| {
        *el = (rng).gen::<i64>() % 2i64.pow(16);
    });

    b.iter(|| parfwht(&mut majority_counter.clone(), BITS));
}