[libcamera-devel] [PATCH v5 06/10] ipa: raspberry: replace abs() with std::abs()
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Oct 28 12:27:32 CEST 2022
Quoting Nicholas Roth via libcamera-devel (2022-10-28 04:17:22)
> From: Nicholas Roth <nicholas at rothemail.net>
>
> pwl.cpp uses abs() instead of std::abs(), which causes unexpected
> behavior in the Clang compiler used for Android. Replace with
> C++-standard absolute value function std::abs(), which supports
> double-precision absolute values in a standard way.
>
> Signed-off-by: Nicholas Roth <nicholas at rothemail.net>
>From Jacopo on v1:
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
And from me:
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Though we really might have to do a bit of extra validation here:
https://stackoverflow.com/questions/21392627/abs-vs-stdabs-what-does-the-reference-say
Seems a bit worrying.
Naush - any idea here?
> ---
> src/ipa/raspberrypi/controller/pwl.cpp | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/ipa/raspberrypi/controller/pwl.cpp b/src/ipa/raspberrypi/controller/pwl.cpp
> index c59f5fa1..70c2e24b 100644
> --- a/src/ipa/raspberrypi/controller/pwl.cpp
> +++ b/src/ipa/raspberrypi/controller/pwl.cpp
> @@ -6,6 +6,7 @@
> */
>
> #include <cassert>
> +#include <cmath>
> #include <stdexcept>
>
> #include "pwl.h"
> @@ -168,7 +169,7 @@ Pwl Pwl::compose(Pwl const &other, const double eps) const
> while (thisSpan != (int)points_.size() - 1) {
> double dx = points_[thisSpan + 1].x - points_[thisSpan].x,
> dy = points_[thisSpan + 1].y - points_[thisSpan].y;
> - if (abs(dy) > eps &&
> + if (std::abs(dy) > eps &&
> otherSpan + 1 < (int)other.points_.size() &&
> points_[thisSpan + 1].y >=
> other.points_[otherSpan + 1].x + eps) {
> @@ -181,7 +182,7 @@ Pwl Pwl::compose(Pwl const &other, const double eps) const
> points_[thisSpan].y) *
> dx / dy;
> thisY = other.points_[++otherSpan].x;
> - } else if (abs(dy) > eps && otherSpan > 0 &&
> + } else if (std::abs(dy) > eps && otherSpan > 0 &&
> points_[thisSpan + 1].y <=
> other.points_[otherSpan - 1].x - eps) {
> /*
> --
> 2.34.1
>
More information about the libcamera-devel
mailing list