use matten::Tensor;
fn l2_norm(v: &Tensor) -> f64 {
v.as_slice().iter().map(|x| x * x).sum::<f64>().sqrt()
}
fn normalize(v: &Tensor) -> Tensor {
let norm = l2_norm(v);
v / norm
}
fn main() {
let v = Tensor::from_vec(vec![3.0, 4.0]);
println!("v = {:?}", v.as_slice());
println!("‖v‖ = {}", l2_norm(&v));
let u = normalize(&v);
println!("norm(v) = {:?}", u.as_slice());
let norm_u = l2_norm(&u);
println!("‖norm(v)‖ = {norm_u:.6}"); assert!((norm_u - 1.0).abs() < 1e-10, "unit vector check failed");
println!("Unit vector check: OK");
}