use ohsl::matrix::Mat64; #[test] fn norms() { let mut a = Mat64::new( 2, 2, 1.0 ); a[(0,1)] = -7.0; a[(1,0)] = -2.0; a[(1,1)] = -3.0; assert_eq!( a.norm_1(), 10.0 ); assert_eq!( a.norm_inf(), 8.0 ); let rounded_to_3dp = (a.norm_p( 2.0 ) * 1000.0).round() / 1000.0; assert_eq!( rounded_to_3dp, 7.937 ); let difference = a.norm_frob() - 7.937; assert!( difference.abs() < 1e-3 ); assert_eq!( a.norm_max(), 7.0 ); } #[test] fn determinant() { let mut a = Mat64::new( 2, 2, 4.0 ); a[(0,1)] = 3.0; a[(1,0)] = 6.0; a[(1,1)] = 3.0; let det = a.determinant(); assert_eq!( det, -6.0 ); } #[test] fn inverse() { let mut a = Mat64::new( 2, 2, 4.0 ); a[(0,1)] = 3.0; a[(1,0)] = 6.0; a[(1,1)] = 3.0; let inv = a.inverse(); assert_eq!( inv[(0,0)], -0.5 ); assert_eq!( inv[(0,1)], 0.5 ); assert_eq!( inv[(1,0)], 1.0 ); assert_eq!( inv[(1,1)], -2.0/3.0 ); }