Skip to main content

save_load_demo/
save_load_demo.rs

1//! CLI demo: encode values → save to disk → load → decode
2//! Run with: cargo run --example save_load_demo
3
4use hybrid_phi::core::hybrid_phi_inverse;
5use hybrid_phi::quantized_memory::phi_quantized_encode;
6use hybrid_phi::storage::{save_quantized, load_quantized};
7use std::path::Path;
8
9fn main() {
10    let values = [-1000.0, -1.0, 0.0, 1.0, 42.0, 123.456, 999.99];
11    let n = 10;
12    let step = 0.01;
13    let path = Path::new("phi_memory.bin");
14
15    // Encode & quantize
16    let encoded: Vec<f64> = values
17        .iter()
18        .map(|&w| phi_quantized_encode(w, n, step))
19        .collect();
20
21    // Save to disk
22    save_quantized(&encoded, &path).expect("save failed");
23    println!("Saved {} entries to {:?}", encoded.len(), path);
24
25    // Load from disk
26    let loaded = load_quantized(&path).expect("load failed");
27    println!("Loaded {} entries from disk\n", loaded.len());
28
29    println!(
30        "{:<10} {:>12} {:>12} {:>12}",
31        "original", "quantized", "recovered", "error"
32    );
33
34    for ((&w, &q), r) in values.iter().zip(loaded.iter()).zip(loaded.iter().map(|&q| hybrid_phi_inverse(q, n))) {
35        let err = (w - r).abs();
36        println!(
37            "{:<10.3} {:>12.6} {:>12.6} {:>12.3e}",
38            w, q, r, err
39        );
40    }
41
42    // Optionally: remove file after demo
43    let _ = std::fs::remove_file(path);
44}