lpn 0.2.0

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

use lpn::{
    bkw::partition_reduce,
    lf1::xor_reduce,
    oracle::{LpnOracle, MAX_K},
};
use test::Bencher;

const LARGE_K: u32 = (MAX_K - 10) as u32;

#[bench]
fn bench_oracle_right_size_k(b: &mut Bencher) {
    let oracle = LpnOracle::new(LARGE_K, 1.0 / 8.0);

    b.iter(|| oracle.clone().get_samples(100_000))
}

#[bench]
fn bench_oracle_undersized_k(b: &mut Bencher) {
    let oracle = LpnOracle::new(10 as u32, 1.0 / 8.0);

    b.iter(|| oracle.clone().get_samples(100_000))
}

#[bench]
fn bench_partition_reduce(b: &mut Bencher) {
    let mut oracle = LpnOracle::new(LARGE_K, 1.0 / 8.0);
    oracle.get_samples(100_000);

    b.iter(|| partition_reduce(&mut (oracle.clone()), 7));
}
#[bench]
fn bench_xor_reduce(b: &mut Bencher) {
    let mut oracle = LpnOracle::new(LARGE_K, 1.0 / 8.0);
    oracle.get_samples(10_000);

    b.iter(|| xor_reduce(&mut (oracle.clone()), 8));
}