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:
parent
f22c357a34
commit
497d24178f
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user