paracletics-hypercube 0.1.0

General-purpose paracletic hyper cube compression toolkit.
Documentation
use paracletics_hypercube::compression::{Codec, compress_with, stats_with};
use paracletics_hypercube::datasets::{harmonic_wave, mixed_signal, pseudo_random, pulse_train};

fn main() {
    let datasets = vec![
        ("harmonic-wave", harmonic_wave(32 * 1024)),
        ("pulse-train", pulse_train(32 * 1024)),
        ("mixed-signal", mixed_signal(32 * 1024, 0x5EED_C0DE)),
        ("pseudo-random", pseudo_random(32 * 1024, 0x0BAD_5EED)),
    ];

    println!(
        "{:16} {:14} {:>10} {:>10} {:>8}",
        "dataset", "codec", "input", "output", "ratio"
    );
    println!("{}", "-".repeat(64));

    for (dataset_name, data) in &datasets {
        for codec in Codec::ALL {
            let compressed = compress_with(codec, data);
            let stats = stats_with(codec, data).expect("roundtrip stats");
            println!(
                "{:16} {:14} {:>10} {:>10} {:>8.3}",
                dataset_name,
                codec.name(),
                stats.input_bytes,
                compressed.len(),
                stats.ratio()
            );
        }
    }
}