Skip to content

Commit 4043879

Browse files
committed
Handle NaNs and Infs in gamma_inc
1 parent 51c5cd6 commit 4043879

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/gamma_inc.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,6 +791,10 @@ function _gamma_inc(a::Float64, x::Float64, ind::Integer)
791791
else
792792
return (1.0, 0.0)
793793
end
794+
elseif isnan(a) || isnan(x)
795+
return (a*x, a*x)
796+
elseif isinf(x)
797+
return (1.0, 0.0)
794798
end
795799

796800
if a >= 1.0

test/gamma_inc.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,17 @@
4444
@test gamma_inc(1.1, 1e3)[2] == 0.0
4545
@test gamma_inc(24.0, 1e-323)[1] == 0.0
4646
@test gamma_inc(6311.0, 6311.0*0.59999)[1] < 1e-300
47+
@test gamma_inc(0.5, Inf) == (1.0, 0.0)
48+
@test all(isnan, gamma_inc(NaN, 1.0))
49+
@test all(isnan, gamma_inc(1.0, NaN))
50+
@test all(isnan, gamma_inc(NaN, Inf))
4751
@test_throws DomainError gamma_inc(-1, 2, 2)
4852
@test_throws DomainError gamma_inc(0, 0, 1)
4953
@test_throws DomainError gamma_inc(7.098843361278083e33, 7.09884336127808e33)
5054
@test_throws DomainError gamma_inc(6.693195169205051e28, 6.693195169205049e28)
55+
@test_throws DomainError gamma_inc(NaN, -1.0)
56+
@test_throws DomainError gamma_inc(-1.0, NaN)
57+
@test_throws DomainError gamma_inc(1.0, -Inf)
5158
end
5259

5360
@testset "inverse of incomplete gamma ratios" begin

0 commit comments

Comments
 (0)