From 497d24178fdc321a037150656d51bec40f93e6d6 Mon Sep 17 00:00:00 2001 From: Plekhanov Maxim Date: Thu, 21 Dec 2017 02:14:55 +0300 Subject: [PATCH] math: use Abs in Mod rather than if x < 0 { x = -x} MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit goos: linux goarch: amd64 pkg: math name old time/op new time/op delta Mod 64.7ns ± 2% 63.7ns ± 2% -1.52% (p=0.003 n=8+10) Change-Id: I851bec0fd6c223dab73e4a680b7393d49e81a0e8 Reviewed-on: https://go-review.googlesource.com/c/85095 Reviewed-by: Brad Fitzpatrick --- src/math/mod.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/math/mod.go b/src/math/mod.go index e1a414e5f9c..7efc018a5da 100644 --- a/src/math/mod.go +++ b/src/math/mod.go @@ -24,16 +24,12 @@ func mod(x, y float64) float64 { if y == 0 || IsInf(x, 0) || IsNaN(x) || IsNaN(y) { return NaN() } - if y < 0 { - y = -y - } + y = Abs(y) yfr, yexp := Frexp(y) - sign := false r := x if x < 0 { r = -x - sign = true } for r >= y { @@ -43,7 +39,7 @@ func mod(x, y float64) float64 { } r = r - Ldexp(y, rexp-yexp) } - if sign { + if x < 0 { r = -r } return r