hypercube 0.1.0

an implimentation of hyper cube
Documentation
#![feature(test)]

extern crate test;

use hypercube::graph::{Lemma1, Lemma2, NodeToNode, NodeToSet};
use hypercube::HyperCube;
use test::Bencher;

#[bench]
fn hyper_cube_lemma1_64bit(b: &mut Bencher) {
    let dim = 64;

    let graph = HyperCube::new(dim);

    let d = 0xffff_ffff_0000_0000;

    b.iter(|| graph.lemma1(dim, d));
}

#[bench]
fn hyper_cube_lemma2_64bit(b: &mut Bencher) {
    let dim = 64;

    let graph = HyperCube::new(dim);

    let s = 0x0000_0000_ffff_ffff;
    let d = 0xffff_ffff_0000_0000;

    b.iter(|| graph.lemma2(s, d));
}

#[bench]
fn hyper_cube_node_to_set_64bit(b: &mut Bencher) {
    let dim = 64;

    let graph = HyperCube::new(dim);

    let s = 0x0000_0000_ffff_ffff;
    let mut d = vec![];

    for i in 0..64 {
        d.push(1 << i);
    }

    b.iter(|| graph.node_to_set(s, &d));
}

#[bench]
fn hyper_cube_node_to_node_64bit(b: &mut Bencher) {
    let dim = 64;

    let graph = HyperCube::new(dim);

    let s = 0x0000_0000_ffff_ffff;
    let d = 0xffff_ffff_0000_0000;
    b.iter(|| graph.node_to_node(s, d));
}