From 73f6846d622382a1c2da510e220d033c1146986d Mon Sep 17 00:00:00 2001 From: Fabien Spindler Date: Fri, 3 Jan 2025 11:31:39 +0100 Subject: [PATCH] Fix warning: comparing floating point with == or != is unsafe Warning detected on Fedora 25 ci --- modules/core/test/image-with-dataset/testImageFilter.cpp | 5 +++-- modules/core/test/math/catchParticleFilter.cpp | 3 ++- .../tutorial-pf-curve-fitting-all.cpp | 3 ++- .../tutorial-pf-curve-fitting-pf.cpp | 3 ++- tutorial/particle-filter-curve-fitting/vpTutoCommonData.h | 3 ++- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/core/test/image-with-dataset/testImageFilter.cpp b/modules/core/test/image-with-dataset/testImageFilter.cpp index 7ff6088d91..1434dbdc50 100644 --- a/modules/core/test/image-with-dataset/testImageFilter.cpp +++ b/modules/core/test/image-with-dataset/testImageFilter.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -538,7 +539,7 @@ int main(int argc, const char *argv[]) } double median = vpImageFilter::median(I_median); double expectedMedian = 4.; - test = (median == expectedMedian); + test = vpMath::equal(median, expectedMedian); std::cout << "(median (=" << median << ") == expectedMedian(" << expectedMedian << "))? " << test << std::endl; if (!test) { @@ -558,7 +559,7 @@ int main(int argc, const char *argv[]) std::vector median_rgba = vpImageFilter::median(I_median_rgba); std::vector expected_median_rgba = { 4.f, 8.f, 12.f }; for (unsigned int i = 0; i < 3; i++) { - bool test_local = (median_rgba[i] == expected_median_rgba[i]); + bool test_local = vpMath::equal(median_rgba[i], expected_median_rgba[i]); test &= test_local; std::cout << "(median_rgba[" << i << "] (=" << median_rgba[i] << ") == expected_median_rgba[" << i << "] ( " << expected_median_rgba[i] << "))? " << test_local << std::endl; } diff --git a/modules/core/test/math/catchParticleFilter.cpp b/modules/core/test/math/catchParticleFilter.cpp index 8a4c4f1607..2cb8871261 100644 --- a/modules/core/test/math/catchParticleFilter.cpp +++ b/modules/core/test/math/catchParticleFilter.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include @@ -386,7 +387,7 @@ class vpAverageFunctor initPoints.push_back(pt); } } - else if (nbPoints == 1.) { + else if (vpMath::equal(nbPoints, 1.)) { vpParabolaModel curve(particles[i], m_height, m_width); double u = static_cast(m_width) / 2.; double v = curve.eval(u); diff --git a/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-all.cpp b/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-all.cpp index 7ec4a7cb5d..7f09a63f90 100644 --- a/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-all.cpp +++ b/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-all.cpp @@ -37,6 +37,7 @@ // ViSP includes #include #include +#include #include #include @@ -395,7 +396,7 @@ class vpTutoAverageFunctor initPoints.push_back(pt); } } - else if (nbPoints == 1.) { + else if (vpMath::equal(nbPoints, 1.)) { // The weight of the particle make it have only one control point // We sample it at the middle of the image vpTutoParabolaModel curve(particles[i], m_height, m_width); diff --git a/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-pf.cpp b/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-pf.cpp index 3afc244d2e..bcdcb02ecd 100644 --- a/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-pf.cpp +++ b/tutorial/particle-filter-curve-fitting/tutorial-pf-curve-fitting-pf.cpp @@ -32,6 +32,7 @@ #include #include +#include #include #include #include @@ -391,7 +392,7 @@ class vpTutoAverageFunctor initPoints.push_back(pt); } } - else if (nbPoints == 1.) { + else if (vpMath::equal(nbPoints, 1.)) { // The weight of the particle make it have only one control point // We sample it at the middle of the image vpTutoParabolaModel curve(particles[i], m_height, m_width); diff --git a/tutorial/particle-filter-curve-fitting/vpTutoCommonData.h b/tutorial/particle-filter-curve-fitting/vpTutoCommonData.h index 01d422a96c..4b414aec4b 100644 --- a/tutorial/particle-filter-curve-fitting/vpTutoCommonData.h +++ b/tutorial/particle-filter-curve-fitting/vpTutoCommonData.h @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -266,7 +267,7 @@ typedef struct vpTutoCommonData #if defined(VISP_HAVE_DISPLAY) const int horOffset = 20, vertOffset = 25; std::string skeletonTitle("Skeletonized image ("); - skeletonTitle += (m_ratioSaltPepperNoise == 0 ? "without" : std::to_string(static_cast(m_ratioSaltPepperNoise * 100.)) + "%"); + skeletonTitle += (vpMath::equal(m_ratioSaltPepperNoise, 0.) ? "without" : std::to_string(static_cast(m_ratioSaltPepperNoise * 100.)) + "%"); skeletonTitle += " noise)"; m_displayOrig = VISP_NAMESPACE_ADDRESSING vpDisplayFactory::createDisplay(m_I_orig, horOffset, vertOffset, "Original image"); m_displaySegmented = VISP_NAMESPACE_ADDRESSING vpDisplayFactory::createDisplay(m_I_segmented, 2 * horOffset + m_I_orig.getWidth(), vertOffset, "Segmented image");