Skip to content

Commit

Permalink
math: optimize sinh and cosh
Browse files Browse the repository at this point in the history
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
erifan01 authored and griesemer committed Feb 27, 2018
1 parent 486caa2 commit ed6c6c9
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/math/sinh.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.