mirror of
https://github.com/golang/go
synced 2024-11-18 12:04:57 -07:00
math: speed up Gamma(+Inf)
Add special case for Gamma(+∞) which speeds it up: benchmark old ns/op new ns/op delta BenchmarkGamma-4 14.5 7.44 -48.69% The documentation for math.Gamma already specifies it as a special case: Gamma(+Inf) = +Inf The original C code that has been used as the reference implementation (as mentioned in the comments in gamma.go) also treats Gamma(+∞) as a special case: if( x == INFINITY ) return(x); Change-Id: Idac36e19192b440475aec0796faa2d2c7f8abe0b Reviewed-on: https://go-review.googlesource.com/31370 Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
97b04152bc
commit
7eed848a17
@ -133,6 +133,8 @@ func Gamma(x float64) float64 {
|
|||||||
switch {
|
switch {
|
||||||
case isNegInt(x) || IsInf(x, -1) || IsNaN(x):
|
case isNegInt(x) || IsInf(x, -1) || IsNaN(x):
|
||||||
return NaN()
|
return NaN()
|
||||||
|
case IsInf(x, 1):
|
||||||
|
return Inf(1)
|
||||||
case x == 0:
|
case x == 0:
|
||||||
if Signbit(x) {
|
if Signbit(x) {
|
||||||
return Inf(-1)
|
return Inf(-1)
|
||||||
|
Loading…
Reference in New Issue
Block a user