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

Milan Zamazal mzamazal at redhat.com
Fri Aug 16 15:40:45 CEST 2024


Kieran Bingham <kieran.bingham at ideasonboard.com> writes:

> 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?

It happens to me too, with clang 18.1.6 on Fedora 40.

> 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