Commit 7eed848a authored by Mohit Agarwal's avatar Mohit Agarwal Committed by Robert Griesemer

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/31370Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
parent 97b04152
......@@ -133,6 +133,8 @@ func Gamma(x float64) float64 {
switch {
case isNegInt(x) || IsInf(x, -1) || IsNaN(x):
return NaN()
case IsInf(x, 1):
return Inf(1)
case x == 0:
if Signbit(x) {
return Inf(-1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment