Skip to content

Commit d425983

Browse files
authored
Fix Matern Grads (JuliaGaussianProcesses#478)
* gitignore dev folder * Fix up matern * Bump patch * Avoid promotion with irrational
1 parent ba7b37c commit d425983

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
Manifest.toml
44
coverage/
55
.DS_store
6+
dev

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "KernelFunctions"
22
uuid = "ec8451be-7e33-11e9-00cf-bbf324bd1392"
3-
version = "0.10.45"
3+
version = "0.10.46"
44

55
[deps]
66
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"

src/basekernels/matern.jl

+8-6
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,16 @@ MaternKernel(; nu::Real=1.5, ν::Real=nu, metric=Euclidean()) = MaternKernel(ν,
3737

3838
@functor MaternKernel
3939

40-
@inline function kappa(k::MaternKernel, d::Real)
41-
result = _matern(only(k.ν), d)
42-
return ifelse(iszero(d), one(result), result)
43-
end
40+
@inline kappa(k::MaternKernel, d::Real) = _matern(only(k.ν), d)
4441

4542
function _matern::Real, d::Real)
46-
y = sqrt(2ν) * d
47-
return exp((one(d) - ν) * logtwo - loggamma(ν) + ν * log(y) + log(besselk(ν, y)))
43+
if iszero(d)
44+
return one(d)
45+
else
46+
y = sqrt(2ν) * d
47+
b = log(besselk(ν, y))
48+
return exp((one(d) - ν) * oftype(y, logtwo) - loggamma(ν) + ν * log(y) + b)
49+
end
4850
end
4951

5052
metric(k::MaternKernel) = k.metric

0 commit comments

Comments
 (0)