From 91c10b66c23178e27bbff0e9173570c63e342736 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Tue, 31 Aug 2021 11:46:39 +0200 Subject: uhd: math: Add a sign() function We've been having issues with moving locations of Boost headers for this function, and it's simple enough to implement ourselves. --- host/include/uhd/utils/math.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'host/include') diff --git a/host/include/uhd/utils/math.hpp b/host/include/uhd/utils/math.hpp index becc256f1..4918ddf2e 100644 --- a/host/include/uhd/utils/math.hpp +++ b/host/include/uhd/utils/math.hpp @@ -263,6 +263,21 @@ inline IntegerType gcd(IntegerType x, IntegerType y) return _bmint::gcd(x, y); } +//! Returns the sign of x +// +// Note: This is equivalent to the Boost.Math version, but without the +// dependency. +// +// Returns +1 for positive arguments, -1 for negative arguments, and 0 if x is +// zero. +template +inline constexpr int sign(T x) +{ + // Note: If T is unsigned, then this will compile with a warning. Should + // we need that, expand the template logic. + return (T(0) < x) - (x < T(0)); +} + } // namespace math } // namespace uhd -- cgit v1.2.3