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>
case IsNaN(p) || IsNaN(q):
return NaN()
}
- if p < 0 {
- p = -p
- }
- if q < 0 {
- q = -q
- }
+ p, q = Abs(p), Abs(q)
if p < q {
p, q = q, p
}
return 1
}
- if x < 0 {
- x = -x
- }
+ x = Abs(x)
if x >= 2 {
s, c := Sincos(x)
ss := s - c
// make argument positive
sign := false
- if x < 0 {
- x = -x
- }
+ x = Abs(x)
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
func Cosh(x float64) float64
func cosh(x float64) float64 {
- if x < 0 {
- x = -x
- }
+ x = Abs(x)
if x > 21 {
return Exp(x) / 2
}