lpn 0.1.2

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

mod stgen {
    use crate::test::Bencher;
    use lpn::codes::*;
    use m4ri_rust::friendly::*;

    fn get_code() -> StGenCode<'static> {
        let codes: Vec<&dyn BinaryCode> = vec![
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
            &HammingCode7_4,
        ];
        StGenCode::new(codes, 5, 100, 4, 1)
    }

    #[bench]
    fn stgen_encode(b: &mut Bencher) {
        let code = get_code();

        b.iter(|| {
            let i = BinVector::random(code.dimension());
            code.encode(&i)
        });
    }

    #[bench]
    fn decode(b: &mut Bencher) {
        let code = get_code();

        b.iter(|| {
            let i = BinVector::random(code.length());
            code.decode_to_message(&i).unwrap()
        });
    }
}