Skip to content

Commit f009284

Browse files
author
Will Tebbutt
committed
Use struct rather than closue
1 parent b73051c commit f009284

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/basekernels/polynomial.jl

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,26 +86,30 @@ function Functors.functor(::Type{<:PolynomialKernel}, x)
8686
return (c=x.c,), reconstruct_polynomialkernel
8787
end
8888

89-
@noinline __make_polynomial_kappa(degree) = (c::Real, xᵀy::Real) -> (xᵀy + c)^degree
89+
struct _PolynomialKappa
90+
degree::Int
91+
end
92+
93+
::_PolynomialKappa)(c::Real, xᵀy::Real) = (xᵀy + c)^κ.degree
9094

91-
kappa::PolynomialKernel, xᵀy::Real) = __make_polynomial_kappa.degree)(only.c), xᵀy)
95+
kappa::PolynomialKernel, xᵀy::Real) = _PolynomialKappa.degree)(only.c), xᵀy)
9296

9397
metric(::PolynomialKernel) = DotProduct()
9498

9599
function kernelmatrix(k::PolynomialKernel, x::AbstractVector, y::AbstractVector)
96-
return __make_polynomial_kappa(k.degree).(only(k.c), pairwise(metric(k), x, y))
100+
return _PolynomialKappa(k.degree).(only(k.c), pairwise(metric(k), x, y))
97101
end
98102

99103
function kernelmatrix(k::PolynomialKernel, x::AbstractVector)
100-
return __make_polynomial_kappa(k.degree).(only(k.c), pairwise(metric(k), x))
104+
return _PolynomialKappa(k.degree).(only(k.c), pairwise(metric(k), x))
101105
end
102106

103107
function kernelmatrix_diag(k::PolynomialKernel, x::AbstractVector, y::AbstractVector)
104-
return __make_polynomial_kappa(k.degree).(only(k.c), colwise(metric(k), x, y))
108+
return _PolynomialKappa(k.degree).(only(k.c), colwise(metric(k), x, y))
105109
end
106110

107111
function kernelmatrix_diag(k::PolynomialKernel, x::AbstractVector)
108-
return __make_polynomial_kappa(k.degree).(only(k.c), colwise(metric(k), x))
112+
return _PolynomialKappa(k.degree).(only(k.c), colwise(metric(k), x))
109113
end
110114

111115
function Base.show(io::IO, κ::PolynomialKernel)

0 commit comments

Comments
 (0)