use candela::Tensor;
fn main() {
let raw = Tensor::from_vec(vec![10.0_f64, 20.0, 30.0, 40.0], &[4]);
let preprocessed = (raw - 2.0).cache();
assert!(preprocessed.get_cache().is_none());
let flow_a = (&preprocessed * 2.0).materialize();
assert_eq!(flow_a.data(), &[16.0, 36.0, 56.0, 76.0]);
println!("flow_a: {:?}", flow_a.data());
assert!(preprocessed.get_cache().is_some());
let flow_b = (&preprocessed + 100.0).materialize();
assert_eq!(flow_b.data(), &[108.0, 118.0, 128.0, 138.0]);
println!("flow_b: {:?}", flow_b.data());
let stored = preprocessed.get_cache().unwrap();
assert_eq!(stored.data(), &[8.0, 18.0, 28.0, 38.0]);
println!("cached intermediate: {:?}", stored.data());
}