From d4c08a3d9ac6caaa8b247874d15304c810eac831 Mon Sep 17 00:00:00 2001 From: Ishwar Bhati Date: Tue, 9 Sep 2025 17:14:41 -0700 Subject: [PATCH 1/2] Add functions to check NaN values in data span --- include/svs/lib/misc.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/svs/lib/misc.h b/include/svs/lib/misc.h index 7ebe48a5..f08ae8e8 100644 --- a/include/svs/lib/misc.h +++ b/include/svs/lib/misc.h @@ -443,4 +443,20 @@ template constexpr T bitmask(T lo, T hi) { using DefaultPredicate = std::function; +/// +/// Returns true if at least one element of the span is NaN. +/// +template +bool contains_nan(std::span data) { + return std::ranges::any_of(data, [](T v) { return std::isnan(v); }); +} + +/// +/// Returns true if all elements of the span are NaN. +/// +template +bool all_nan(std::span data) { + return std::ranges::all_of(data, [](T v) { return std::isnan(v); }); +} + } // namespace svs::lib From 65f66aa54b13113d4f4932b0eb0b6985fcbb4522 Mon Sep 17 00:00:00 2001 From: Ishwar Bhati Date: Wed, 10 Sep 2025 07:04:37 -0700 Subject: [PATCH 2/2] Use std any_of/all_of instead of ranges --- include/svs/lib/misc.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/svs/lib/misc.h b/include/svs/lib/misc.h index f08ae8e8..6a38a2e0 100644 --- a/include/svs/lib/misc.h +++ b/include/svs/lib/misc.h @@ -448,7 +448,7 @@ using DefaultPredicate = std::function; /// template bool contains_nan(std::span data) { - return std::ranges::any_of(data, [](T v) { return std::isnan(v); }); + return std::any_of(data.begin(), data.end(), [](T v) { return std::isnan(v); }); } /// @@ -456,7 +456,7 @@ bool contains_nan(std::span data) { /// template bool all_nan(std::span data) { - return std::ranges::all_of(data, [](T v) { return std::isnan(v); }); + return std::all_of(data.begin(), data.end(), [](T v) { return std::isnan(v); }); } } // namespace svs::lib