diff --git a/matrix/src/lib.rs b/matrix/src/lib.rs index 5b35000..1a226af 100644 --- a/matrix/src/lib.rs +++ b/matrix/src/lib.rs @@ -146,7 +146,9 @@ impl PartialEq for Matrix { return false; } for col_idx in 0..self.matrix[row_idx].len() { - if !relative_eq!(self.matrix[row_idx][col_idx], _rhs.matrix[row_idx][col_idx]) { + if !relative_eq!( + self.matrix[row_idx][col_idx], + _rhs.matrix[row_idx][col_idx]) { return false; } } @@ -535,6 +537,24 @@ mod tests { } + fn assert_matrix_eq(_lhs: &Matrix, _rhs: &Matrix, max_relative: f32) -> bool { + if _lhs.matrix.len() != _rhs.matrix.len() { + return false; + } + + for row_idx in 0.._lhs.matrix.len() { + if _lhs.matrix[row_idx].len() != _rhs.matrix[row_idx].len() { + return false; + } + for col_idx in 0.._lhs.matrix[row_idx].len() { + assert_relative_eq!( _lhs.matrix[row_idx][col_idx], + _rhs.matrix[row_idx][col_idx], + max_relative = max_relative); + } + } + true + } + #[test] fn inverse() { let m = Matrix::from_array([ @@ -558,6 +578,6 @@ mod tests { [-0.52256, -0.81392, -0.30075, 0.30639], ]); - assert_eq!(expected, b); + assert_matrix_eq(&expected, &b, 0.0001); } }