From 25e3fd1eec496b8aa12ba11d79339659bd3d41b3 Mon Sep 17 00:00:00 2001 From: Zachary Ferguson Date: Tue, 8 Sep 2026 11:32:01 -0400 Subject: [PATCH] Treat float conversion as an error using -Werror=float-conversion - Fix barrier.cpp float conversion - Fix edge_edge_mollifier.hpp float conversion --- cmake/ipc_toolkit/ipc_toolkit_warnings.cmake | 2 +- src/ipc/barrier/barrier.cpp | 7 +++++++ src/ipc/distance/edge_edge_mollifier.hpp | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cmake/ipc_toolkit/ipc_toolkit_warnings.cmake b/cmake/ipc_toolkit/ipc_toolkit_warnings.cmake index edd7c2401..22928c570 100644 --- a/cmake/ipc_toolkit/ipc_toolkit_warnings.cmake +++ b/cmake/ipc_toolkit/ipc_toolkit_warnings.cmake @@ -36,7 +36,7 @@ else() # -Wconversion -Werror=enum-conversion - -Wfloat-conversion + -Werror=float-conversion # Disable these errors for now, because they are too noisy # -Wno-sign-conversion # -Wno-shorten-64-to-32 diff --git a/src/ipc/barrier/barrier.cpp b/src/ipc/barrier/barrier.cpp index 49ad52121..38221d975 100644 --- a/src/ipc/barrier/barrier.cpp +++ b/src/ipc/barrier/barrier.cpp @@ -17,6 +17,7 @@ namespace ipc { template T barrier(const T d, const T dhat) { + using namespace ipc::numext; // log // b(d) = -(d-d̂)²ln(d / d̂) return select_lazy( d <= T(0), [&] { return infinity(); }, // @@ -26,6 +27,7 @@ template T barrier(const T d, const T dhat) template T barrier_first_derivative(const T d, const T dhat) { + using namespace ipc::numext; // log // b(d) = -(d - d̂)²ln(d / d̂) // b'(d) = -2(d - d̂)ln(d / d̂) - (d-d̂)²(1 / d) // = (d - d̂) * (-2ln(d/d̂) - (d - d̂) / d) @@ -39,6 +41,7 @@ template T barrier_first_derivative(const T d, const T dhat) template T barrier_second_derivative(const T d, const T dhat) { + using namespace ipc::numext; // log return select_lazy( d <= T(0), [&] { return T(0); }, // d < dhat, @@ -54,6 +57,7 @@ template T barrier_second_derivative(const T d, const T dhat) template T ClampedLogSqBarrier::operator()(const T d, const T dhat) const { + using namespace ipc::numext; // log // b(d) = (d-d̂)²ln²(d / d̂) return select_lazy( d <= T(0), [&] { return infinity(); }, // @@ -68,6 +72,7 @@ T ClampedLogSqBarrier::operator()(const T d, const T dhat) const template T ClampedLogSqBarrier::first_derivative(const T d, const T dhat) const { + using namespace ipc::numext; // log // b(d) = (d - d̂)²ln²(d / d̂) // b'(d) = 2 (d - d̂) ln²(d / d̂) + 2 (d - d̂)² ln(d / d̂) / d // = 2 (d - d̂) ln(d / d̂) [ln(d / d̂) + (d - d̂) / d] @@ -86,6 +91,7 @@ T ClampedLogSqBarrier::first_derivative(const T d, const T dhat) const template T ClampedLogSqBarrier::second_derivative(const T d, const T dhat) const { + using namespace ipc::numext; // log return select_lazy( d <= T(0), [&] { return T(0); }, // d < dhat, @@ -133,6 +139,7 @@ T CubicBarrier::second_derivative(const T d, const T dhat) const template T TwoStageBarrier::operator()(const T d, const T dhat) const { + using namespace ipc::numext; // log return select_lazy( d <= T(0), [&] { return infinity(); }, // d < T(0.5) * dhat, diff --git a/src/ipc/distance/edge_edge_mollifier.hpp b/src/ipc/distance/edge_edge_mollifier.hpp index d3a20cddc..670a7b18d 100644 --- a/src/ipc/distance/edge_edge_mollifier.hpp +++ b/src/ipc/distance/edge_edge_mollifier.hpp @@ -45,6 +45,7 @@ template inline T edge_edge_mollifier(const T x, const T eps_x) template inline T edge_edge_mollifier_gradient(const T x, const T eps_x) { + using namespace ipc::numext; // fma return select_lazy( x < eps_x, [&] {