[PATCH] ipa/rpi/controller: Use fabs for calculating absolute values

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Aug 15 11:51:38 CEST 2024


Hi Maarten,

Thank you for highlighting this. I'm curious that it hasn't come up in
our builds yet! What version of clang are you using?

Quoting Maarten Lankhorst (2024-08-15 10:37:15)
> I was getting the following error in clang:
> ../src/ipa/rpi/controller/rpi/awb.cpp:508:6: error: using integer absolute value function 'abs' when argument is of floating point type [-Werror,-Wabsolute-value]
>         if (abs(denominator) > eps) {
>             ^
> ../src/ipa/rpi/controller/rpi/awb.cpp:508:6: note: use function 'std::abs' instead

Is there a preference against the recommended std::abs?

>         if (abs(denominator) > eps) {
>             ^~~
>             std::abs
> 
> Signed-off-by: Maarten Lankhorst <dev at lankhorst.se>
> ---
>  src/ipa/rpi/controller/rpi/awb.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/ipa/rpi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
> index f45525bc..c5750c84 100644
> --- a/src/ipa/rpi/controller/rpi/awb.cpp
> +++ b/src/ipa/rpi/controller/rpi/awb.cpp
> @@ -505,7 +505,7 @@ static double interpolateQuadatric(ipa::Pwl::Point const &a, ipa::Pwl::Point con
>         const double eps = 1e-3;
>         ipa::Pwl::Point ca = c - a, ba = b - a;
>         double denominator = 2 * (ba.y() * ca.x() - ca.y() * ba.x());
> -       if (abs(denominator) > eps) {
> +       if (fabs(denominator) > eps) {
>                 double numerator = ba.y() * ca.x() * ca.x() - ca.y() * ba.x() * ba.x();
>                 double result = numerator / denominator + a.x();
>                 return std::max(a.x(), std::min(c.x(), result));
> -- 
> 2.39.2
>


More information about the libcamera-devel mailing list