From 1124fa300bfe92732765725d504b2711cc25008d Mon Sep 17 00:00:00 2001 From: Thanabodee Charoenpiriyakij Date: Sun, 17 Dec 2017 16:11:14 +0700 Subject: [PATCH] math: use Abs rather than if x < 0 { x = -x } MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the benchmark result base on darwin with amd64 architecture: name old time/op new time/op delta Cos 10.2ns ± 2% 10.3ns ± 3% +1.18% (p=0.032 n=10+10) Cosh 25.3ns ± 3% 24.6ns ± 2% -3.00% (p=0.000 n=10+10) Hypot 6.40ns ± 2% 6.19ns ± 3% -3.36% (p=0.000 n=10+10) HypotGo 7.16ns ± 3% 6.54ns ± 2% -8.66% (p=0.000 n=10+10) J0 66.0ns ± 2% 63.7ns ± 1% -3.42% (p=0.000 n=9+10) Fixes #21812 Change-Id: I2b88fbdfc250cd548f8f08b44ce2eb172dcacf43 Reviewed-on: https://go-review.googlesource.com/84437 Reviewed-by: Giovanni Bajo Reviewed-by: Brad Fitzpatrick Reviewed-by: Keith Randall Run-TryBot: Giovanni Bajo TryBot-Result: Gobot Gobot --- src/math/hypot.go | 7 +------ src/math/j0.go | 4 +--- src/math/sin.go | 4 +--- src/math/sinh.go | 4 +--- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/math/hypot.go b/src/math/hypot.go index 2087cb05b3..c7f19d4d38 100644 --- a/src/math/hypot.go +++ b/src/math/hypot.go @@ -26,12 +26,7 @@ func hypot(p, q float64) float64 { case IsNaN(p) || IsNaN(q): return NaN() } - if p < 0 { - p = -p - } - if q < 0 { - q = -q - } + p, q = Abs(p), Abs(q) if p < q { p, q = q, p } diff --git a/src/math/j0.go b/src/math/j0.go index fe26791175..5523fc34a0 100644 --- a/src/math/j0.go +++ b/src/math/j0.go @@ -99,9 +99,7 @@ func J0(x float64) float64 { return 1 } - if x < 0 { - x = -x - } + x = Abs(x) if x >= 2 { s, c := Sincos(x) ss := s - c diff --git a/src/math/sin.go b/src/math/sin.go index 7a75a5f63d..929cac34ec 100644 --- a/src/math/sin.go +++ b/src/math/sin.go @@ -131,9 +131,7 @@ func cos(x float64) float64 { // make argument positive sign := false - if x < 0 { - x = -x - } + x = Abs(x) j := int64(x * M4PI) // integer part of x/(Pi/4), as integer for tests on the phase angle y := float64(j) // integer part of x/(Pi/4), as float diff --git a/src/math/sinh.go b/src/math/sinh.go index 2bdd7b1205..30bbc0661e 100644 --- a/src/math/sinh.go +++ b/src/math/sinh.go @@ -71,9 +71,7 @@ func sinh(x float64) float64 { func Cosh(x float64) float64 func cosh(x float64) float64 { - if x < 0 { - x = -x - } + x = Abs(x) if x > 21 { return Exp(x) / 2 }