use lager::{Matrix, Vector}; #[test] fn add_3x1_vectors_elementwise() { let vec1: Vector = Vector::new([[1.0], [2.0], [3.0]]); let vec2: Vector = Vector::new([[11.0], [21.0], [31.0]]); let res = vec1 + vec2; let expected: Vector = Vector::new([[12.0], [23.0], [34.0]]); assert!(res.isclose(&expected)); } #[test] fn multiply_3x1_vectors_elementwise() { let vec1: Vector = Vector::new([[1.0], [2.0], [3.0]]); let vec2: Vector = Vector::new([[11.0], [21.0], [31.0]]); let res: Vector = vec1 * vec2; let expected: Vector = Vector::new([[11.0], [42.0], [93.0]]); assert!(res.isclose(&expected)); } #[test] fn multiply_3x3_matrix_with_3x1_vector() { let mtx = Matrix::new([[1.0, 0.0, -2.0], [0.0, 3.0, -1.0], [1.0, 2.0, 1.0]]); let vec: Vector = Vector::new([[3.0], [-1.0], [4.0]]); let res: Vector = mtx.mul(&vec); let expected: Vector = Vector::new([[-5.0], [-7.0], [5.0]]); assert!(res.isclose(&expected)); }