1
0
mirror of https://github.com/golang/go synced 2024-11-17 00:14:50 -07:00

math: use Abs in Mod rather than if x < 0 { x = -x}

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>
This commit is contained in:
Plekhanov Maxim 2017-12-21 02:14:55 +03:00 committed by Brad Fitzpatrick
parent f22c357a34
commit 497d24178f

View 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