diff --git a/.gitignore b/.gitignore index 02bcc5a34..38f476d8a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ Manifest.toml coverage/ .DS_store +dev diff --git a/Project.toml b/Project.toml index 8903beeac..0288447ba 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "KernelFunctions" uuid = "ec8451be-7e33-11e9-00cf-bbf324bd1392" -version = "0.10.45" +version = "0.10.46" [deps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" diff --git a/src/basekernels/matern.jl b/src/basekernels/matern.jl index c050cad0d..cb051ee0f 100644 --- a/src/basekernels/matern.jl +++ b/src/basekernels/matern.jl @@ -37,14 +37,16 @@ MaternKernel(; nu::Real=1.5, ν::Real=nu, metric=Euclidean()) = MaternKernel(ν, @functor MaternKernel -@inline function kappa(k::MaternKernel, d::Real) - result = _matern(only(k.ν), d) - return ifelse(iszero(d), one(result), result) -end +@inline kappa(k::MaternKernel, d::Real) = _matern(only(k.ν), d) function _matern(ν::Real, d::Real) - y = sqrt(2ν) * d - return exp((one(d) - ν) * logtwo - loggamma(ν) + ν * log(y) + log(besselk(ν, y))) + if iszero(d) + return one(d) + else + y = sqrt(2ν) * d + b = log(besselk(ν, y)) + return exp((one(d) - ν) * oftype(y, logtwo) - loggamma(ν) + ν * log(y) + b) + end end metric(k::MaternKernel) = k.metric