ipa: raspberry: replace abs() with std::abs()

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@rothemail.net>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Nicholas Roth 2022-10-27 22:17:22 -05:00 committed by Kieran Bingham
parent 6a2f971035
commit e1e6c1b2f6

View file

@ -6,6 +6,7 @@
*/ */
#include <cassert> #include <cassert>
#include <cmath>
#include <stdexcept> #include <stdexcept>
#include "pwl.h" #include "pwl.h"
@ -168,7 +169,7 @@ Pwl Pwl::compose(Pwl const &other, const double eps) const
while (thisSpan != (int)points_.size() - 1) { while (thisSpan != (int)points_.size() - 1) {
double dx = points_[thisSpan + 1].x - points_[thisSpan].x, double dx = points_[thisSpan + 1].x - points_[thisSpan].x,
dy = points_[thisSpan + 1].y - points_[thisSpan].y; dy = points_[thisSpan + 1].y - points_[thisSpan].y;
if (abs(dy) > eps && if (std::abs(dy) > eps &&
otherSpan + 1 < (int)other.points_.size() && otherSpan + 1 < (int)other.points_.size() &&
points_[thisSpan + 1].y >= points_[thisSpan + 1].y >=
other.points_[otherSpan + 1].x + eps) { other.points_[otherSpan + 1].x + eps) {
@ -181,7 +182,7 @@ Pwl Pwl::compose(Pwl const &other, const double eps) const
points_[thisSpan].y) * points_[thisSpan].y) *
dx / dy; dx / dy;
thisY = other.points_[++otherSpan].x; thisY = other.points_[++otherSpan].x;
} else if (abs(dy) > eps && otherSpan > 0 && } else if (std::abs(dy) > eps && otherSpan > 0 &&
points_[thisSpan + 1].y <= points_[thisSpan + 1].y <=
other.points_[otherSpan - 1].x - eps) { other.points_[otherSpan - 1].x - eps) {
/* /*