25_normalize_vector/
25_normalize_vector.rs1use matten::Tensor;
9
10fn l2_norm(v: &Tensor) -> f64 {
12 v.as_slice().iter().map(|x| x * x).sum::<f64>().sqrt()
13}
14
15fn normalize(v: &Tensor) -> Tensor {
17 let norm = l2_norm(v);
18 v / norm
19}
20
21fn main() {
22 let v = Tensor::from_vec(vec![3.0, 4.0]);
23 println!("v = {:?}", v.as_slice());
24 println!("‖v‖ = {}", l2_norm(&v)); let u = normalize(&v);
27 println!("norm(v) = {:?}", u.as_slice()); let norm_u = l2_norm(&u);
30 println!("‖norm(v)‖ = {norm_u:.6}"); assert!((norm_u - 1.0).abs() < 1e-10, "unit vector check failed");
32 println!("Unit vector check: OK");
33}