From c3f417aa1e55d9752670dd155f09ab5b476d248e Mon Sep 17 00:00:00 2001 From: Nick Wanninger Date: Fri, 5 Mar 2021 18:09:48 -0600 Subject: [PATCH] LibM: optimized (branchless) copysign --- Userland/Libraries/LibM/math.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Userland/Libraries/LibM/math.cpp b/Userland/Libraries/LibM/math.cpp index 115e5f5200..47ab3e537c 100644 --- a/Userland/Libraries/LibM/math.cpp +++ b/Userland/Libraries/LibM/math.cpp @@ -745,12 +745,11 @@ long double nexttowardl(long double, long double) NOEXCEPT double copysign(double x, double y) { - if (x < 0 && y < 0) - return x; - if (x >= 0 && y < 0) - return -x; - if (x < 0 && y >= 0) - return -x; - return x; + using Extractor = FloatExtractor; + Extractor ex, ey; + ex.d = x; + ey.d = y; + ex.sign = ey.sign; + return ex.d; } }