]> Cypherpunks repositories - gostls13.git/commitdiff
math: use Abs in Mod rather than if x < 0 { x = -x}
authorPlekhanov Maxim <kishtatix@gmail.com>
Wed, 20 Dec 2017 23:14:55 +0000 (02:14 +0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 4 Oct 2018 17:32:44 +0000 (17:32 +0000)
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 <bradfitz@golang.org>
src/math/mod.go

index e1a414e5f9cbace7374d13e6b3ce0e45c903c7e5..7efc018a5da2c9dd720464833f024acecf10d2bd 100644 (file)
@@ -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