Skip to content
Permalink
Browse files

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 <gri@golang.org>
  • Loading branch information...
erifan authored and griesemer committed Dec 26, 2017
1 parent 486caa2 commit ed6c6c9c11496ed8e458f6e0731103126ce60223
Showing with 6 additions and 4 deletions.
  1. +6 −4 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
}

0 comments on commit ed6c6c9

Please sign in to comment.
You can’t perform that action at this time.