diff --git a/include/armadillo_bits/SpMat_meat.hpp b/include/armadillo_bits/SpMat_meat.hpp index 161b75bf..ec08ac8c 100644 --- a/include/armadillo_bits/SpMat_meat.hpp +++ b/include/armadillo_bits/SpMat_meat.hpp @@ -3575,8 +3575,12 @@ SpMat::is_symmetric(const typename get_pod_type::result tol) cons if(norm_A == T(0)) { return true; } + if(arma_isnan(norm_A)) { return false; } + const T norm_A_Ast = as_scalar( arma::max(sum(abs(A - A.st()), 1), 0) ); + if(arma_isnan(norm_A_Ast)) { return false; } + return ( (norm_A_Ast / norm_A) <= tol ); } @@ -3621,8 +3625,12 @@ SpMat::is_hermitian(const typename get_pod_type::result tol) cons if(norm_A == T(0)) { return true; } + if(arma_isnan(norm_A)) { return false; } + const T norm_A_At = as_scalar( arma::max(sum(abs(A - A.t()), 1), 0) ); + if(arma_isnan(norm_A_At)) { return false; } + return ( (norm_A_At / norm_A) <= tol ); }