From ed6c6c9c11496ed8e458f6e0731103126ce60223 Mon Sep 17 00:00:00 2001 From: erifan01 Date: Tue, 26 Dec 2017 01:49:37 +0000 Subject: [PATCH] math: optimize sinh and cosh MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/math/sinh.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 } -- 2.48.1