use general_purpose_paracletic_hyper_cube::compression::{Codec, compress_with, stats_with};
use general_purpose_paracletic_hyper_cube::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()
);
}
}
}