Commit ed6c6c9c authored by erifan01's avatar erifan01 Committed by Robert Griesemer

math: optimize sinh and cosh

Improve performance by reducing unnecessary function calls

Benchmarks:

Tme    old time/op  new time/op  delta
Cosh-8   229ns ± 0%   138ns ± 0%  -39.74%  (p=0.008 n=5+5)
Sinh-8   231ns ± 0%   139ns ± 0%  -39.83%  (p=0.008 n=5+5)

Change-Id: Icab5485849bbfaafca8429d06b67c558101f4f3c
Reviewed-on: https://go-review.googlesource.com/85477Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
parent 486caa26
......@@ -45,10 +45,11 @@ func sinh(x float64) float64 {
var temp float64
switch true {
case x > 21:
temp = Exp(x) / 2
temp = Exp(x) * 0.5
case x > 0.5:
temp = (Exp(x) - Exp(-x)) / 2
ex := Exp(x)
temp = (ex - 1/ex) * 0.5
default:
sq := x * x
......@@ -73,7 +74,8 @@ func Cosh(x float64) float64
func cosh(x float64) float64 {
x = Abs(x)
if x > 21 {
return Exp(x) / 2
return Exp(x) * 0.5
}
return (Exp(x) + Exp(-x)) / 2
ex := Exp(x)
return (ex + 1/ex) * 0.5
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment