diff --git a/matrix/Matrix.hpp b/matrix/Matrix.hpp index b9c3895197..1026874637 100644 --- a/matrix/Matrix.hpp +++ b/matrix/Matrix.hpp @@ -507,6 +507,17 @@ public: return min_val; } + bool isAllNan() const { + const Matrix &self = *this; + bool result = true; + for (size_t i = 0; i < M; i++) { + for (size_t j = 0; j < N; j++) { + result = result && isnan(self(i, j)); + } + } + return result; + } + }; template diff --git a/test/matrixAssignment.cpp b/test/matrixAssignment.cpp index 994af85c9a..96bda28aeb 100644 --- a/test/matrixAssignment.cpp +++ b/test/matrixAssignment.cpp @@ -30,6 +30,7 @@ int main() for(int i=0; i<9; i++) { TEST(isnan(m_nan.data()[i])); } + TEST(m_nan.isAllNan()); float data2d[3][3] = { {1, 2, 3}, @@ -40,6 +41,7 @@ int main() for(int i=0; i<9; i++) { TEST(fabs(data[i] - m2.data()[i]) < FLT_EPSILON); } + TEST(!m2.isAllNan()); float data_times_2[9] = {2, 4, 6, 8, 10, 12, 14, 16, 18}; Matrix3f m3(data_times_2);