mirror of
https://github.com/golang/go
synced 2024-11-19 15:24:46 -07:00
math: use Abs rather than if x < 0 { x = -x }
This is the benchmark result base on darwin with amd64 architecture: name old time/op new time/op delta Cos 10.2ns ± 2% 10.3ns ± 3% +1.18% (p=0.032 n=10+10) Cosh 25.3ns ± 3% 24.6ns ± 2% -3.00% (p=0.000 n=10+10) Hypot 6.40ns ± 2% 6.19ns ± 3% -3.36% (p=0.000 n=10+10) HypotGo 7.16ns ± 3% 6.54ns ± 2% -8.66% (p=0.000 n=10+10) J0 66.0ns ± 2% 63.7ns ± 1% -3.42% (p=0.000 n=9+10) Fixes #21812 Change-Id: I2b88fbdfc250cd548f8f08b44ce2eb172dcacf43 Reviewed-on: https://go-review.googlesource.com/84437 Reviewed-by: Giovanni Bajo <rasky@develer.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Giovanni Bajo <rasky@develer.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
71984fd6ab
commit
1124fa300b
@ -26,12 +26,7 @@ func hypot(p, q float64) float64 {
|
|||||||
case IsNaN(p) || IsNaN(q):
|
case IsNaN(p) || IsNaN(q):
|
||||||
return NaN()
|
return NaN()
|
||||||
}
|
}
|
||||||
if p < 0 {
|
p, q = Abs(p), Abs(q)
|
||||||
p = -p
|
|
||||||
}
|
|
||||||
if q < 0 {
|
|
||||||
q = -q
|
|
||||||
}
|
|
||||||
if p < q {
|
if p < q {
|
||||||
p, q = q, p
|
p, q = q, p
|
||||||
}
|
}
|
||||||
|
@ -99,9 +99,7 @@ func J0(x float64) float64 {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if x < 0 {
|
x = Abs(x)
|
||||||
x = -x
|
|
||||||
}
|
|
||||||
if x >= 2 {
|
if x >= 2 {
|
||||||
s, c := Sincos(x)
|
s, c := Sincos(x)
|
||||||
ss := s - c
|
ss := s - c
|
||||||
|
@ -131,9 +131,7 @@ func cos(x float64) float64 {
|
|||||||
|
|
||||||
// make argument positive
|
// make argument positive
|
||||||
sign := false
|
sign := false
|
||||||
if x < 0 {
|
x = Abs(x)
|
||||||
x = -x
|
|
||||||
}
|
|
||||||
|
|
||||||
j := int64(x * M4PI) // integer part of x/(Pi/4), as integer for tests on the phase angle
|
j := int64(x * M4PI) // integer part of x/(Pi/4), as integer for tests on the phase angle
|
||||||
y := float64(j) // integer part of x/(Pi/4), as float
|
y := float64(j) // integer part of x/(Pi/4), as float
|
||||||
|
@ -71,9 +71,7 @@ func sinh(x float64) float64 {
|
|||||||
func Cosh(x float64) float64
|
func Cosh(x float64) float64
|
||||||
|
|
||||||
func cosh(x float64) float64 {
|
func cosh(x float64) float64 {
|
||||||
if x < 0 {
|
x = Abs(x)
|
||||||
x = -x
|
|
||||||
}
|
|
||||||
if x > 21 {
|
if x > 21 {
|
||||||
return Exp(x) / 2
|
return Exp(x) / 2
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user