Matrix: add isAllFinite() to check if every element is finite

This commit is contained in:
Matthias Grob
2022-10-19 19:09:20 +02:00
parent f77d7d9413
commit 93de9567a5
2 changed files with 17 additions and 0 deletions
+15
View File
@@ -594,6 +594,21 @@ public:
return result;
}
bool isAllFinite() const
{
const Matrix<float, M, N> &self = *this;
for (size_t i = 0; i < M; i++) {
for (size_t j = 0; j < N; j++) {
if (!std::isfinite(self(i, j))) {
return false;
}
}
}
return true;
}
};
template<typename Type, size_t M, size_t N>
@@ -72,6 +72,7 @@ TEST(MatrixAssignmentTest, Assignment)
}
EXPECT_TRUE(m_nan.isAllNan());
EXPECT_FALSE(m_nan.isAllFinite());
float data2d[3][3] = {
{1, 2, 3},
@@ -87,6 +88,7 @@ TEST(MatrixAssignmentTest, Assignment)
}
EXPECT_FALSE(m2.isAllNan());
EXPECT_TRUE(m2.isAllFinite());
float data_times_2[9] = {2, 4, 6, 8, 10, 12, 14, 16, 18};
Matrix3f m3(data_times_2);