From e43f4f7ef98dc9fa324e35b09f0447ce7af46fed Mon Sep 17 00:00:00 2001 From: conrad Date: Mon, 23 Mar 2026 15:23:14 +1000 Subject: [PATCH] fix corner case in is_zero(): explicitly handle nan --- include/armadillo_bits/SpBase_meat.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/armadillo_bits/SpBase_meat.hpp b/include/armadillo_bits/SpBase_meat.hpp index c8a5796e..5de07cab 100644 --- a/include/armadillo_bits/SpBase_meat.hpp +++ b/include/armadillo_bits/SpBase_meat.hpp @@ -554,8 +554,8 @@ SpBase::is_zero(const typename get_pod_type::resul const T val_real = access::tmp_real(val); const T val_imag = access::tmp_imag(val); - if(eop_aux::arma_abs(val_real) > tol) { return false; } - if(eop_aux::arma_abs(val_imag) > tol) { return false; } + if( (eop_aux::arma_abs(val_real) > tol) || arma_isnan(val_real) ) { return false; } + if( (eop_aux::arma_abs(val_imag) > tol) || arma_isnan(val_imag) ) { return false; } ++it; } @@ -564,7 +564,9 @@ SpBase::is_zero(const typename get_pod_type::resul { while(it != it_end) { - if(eop_aux::arma_abs(*it) > tol) { return false; } + const elem_type val = (*it); + + if( (eop_aux::arma_abs(val) > tol) || arma_isnan(val) ) { return false; } ++it; }