From: erifan01 Date: Tue, 26 Dec 2017 01:49:37 +0000 (+0000) Subject: math: optimize sinh and cosh X-Git-Tag: go1.11beta1~1436 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ed6c6c9c11496ed8e458f6e0731103126ce60223;p=gostls13.git 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/85477 Reviewed-by: Robert Griesemer --- diff --git a/src/math/sinh.go b/src/math/sinh.go index 30bbc0661e..39e7c2047a 100644 --- a/src/math/sinh.go +++ b/src/math/sinh.go @@ -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 }