Skip to content

Commit f56296a

Browse files
fredrikekresimonbyrne
authored andcommitted
special functions for missing (#103)
* special functions for missing * add build log to .gitignore
1 parent be73d81 commit f56296a

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
*.jl.*.cov
33
*.jl.mem
44
deps/deps.jl
5+
deps/build.log
56
deps/downloads
67
deps/usr
78
deps/src

src/SpecialFunctions.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,17 @@ include("sincosint.jl")
7676
include("gamma.jl")
7777
include("deprecated.jl")
7878

79+
@static if isdefined(Base, :missing)
80+
for f in (:digamma, :erf, :erfc, :erfcinv, :erfcx, :erfi, :erfinv,
81+
:eta, :gamma, :invdigamma, :lfactorial, :lgamma, :trigamma)
82+
@eval $(f)(::Missing) = missing
83+
end
84+
for f in (:beta, :lbeta)
85+
@eval $(f)(::Number, ::Missing) = missing
86+
@eval $(f)(::Missing, ::Number) = missing
87+
@eval $(f)(::Missing, ::Missing) = missing
88+
end
89+
polygamma(m::Integer, x::Missing) = missing
90+
end
91+
7992
end # module

test/runtests.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,3 +641,18 @@ end
641641

642642
@test beta(big(1.0),big(1.2)) beta(1.0,1.2) rtol=4*eps()
643643
end
644+
645+
@static if isdefined(Base, :missing)
646+
@testset "missing data" begin
647+
for f in (digamma, erf, erfc, erfcinv, erfcx, erfi, erfinv, eta, gamma,
648+
invdigamma, lfactorial, lgamma, trigamma)
649+
@test f(missing) === missing
650+
end
651+
for f in (beta, lbeta)
652+
@test f(1.0, missing) === missing
653+
@test f(missing, 1.0) === missing
654+
@test f(missing, missing) === missing
655+
end
656+
@test polygamma(4, missing) === missing
657+
end
658+
end

0 commit comments

Comments
 (0)