@@ -15,10 +15,43 @@ See also: [`ConstantKernel`](@ref)
1515"""
1616struct ZeroKernel <: SimpleKernel end
1717
18- kappa (κ :: ZeroKernel , d :: T ) where {T <: Real } = zero (T)
19-
18+ # SimpleKernel interface
19+ kappa ( :: ZeroKernel , :: Real ) = false
2020metric (:: ZeroKernel ) = Delta ()
2121
22+ # Optimizations
23+ (:: ZeroKernel )(x, y) = false
24+ kernelmatrix (:: ZeroKernel , x:: AbstractVector ) = Falses (length (x), length (x))
25+ function kernelmatrix (:: ZeroKernel , x:: AbstractVector , y:: AbstractVector )
26+ validate_inputs (x, y)
27+ return Falses (length (x), length (y))
28+ end
29+ function kernelmatrix! (K:: AbstractMatrix , :: ZeroKernel , x:: AbstractVector )
30+ validate_inplace_dims (K, x)
31+ return fill! (K, zero (eltype (K)))
32+ end
33+ function kernelmatrix! (
34+ K:: AbstractMatrix , :: ZeroKernel , x:: AbstractVector , y:: AbstractVector
35+ )
36+ validate_inplace_dims (K, x, y)
37+ return fill! (K, zero (eltype (K)))
38+ end
39+ kernelmatrix_diag (:: ZeroKernel , x:: AbstractVector ) = Falses (length (x))
40+ function kernelmatrix_diag (:: ZeroKernel , x:: AbstractVector , y:: AbstractVector )
41+ validate_inputs (x, y)
42+ return Falses (length (x))
43+ end
44+ function kernelmatrix_diag! (K:: AbstractVector , :: ZeroKernel , x:: AbstractVector )
45+ validate_inplace_dims (K, x)
46+ return fill! (K, zero (eltype (K)))
47+ end
48+ function kernelmatrix_diag! (
49+ K:: AbstractVector , :: ZeroKernel , x:: AbstractVector , y:: AbstractVector
50+ )
51+ validate_inplace_dims (K, x, y)
52+ return fill! (K, zero (eltype (K)))
53+ end
54+
2255Base. show (io:: IO , :: ZeroKernel ) = print (io, " Zero Kernel" )
2356
2457"""
73106
74107@functor ConstantKernel
75108
76- kappa (κ :: ConstantKernel , x :: Real ) = only (κ . c) * one (x)
77-
109+ # SimpleKernel interface
110+ kappa (κ :: ConstantKernel , :: Real ) = only (κ . c)
78111metric (:: ConstantKernel ) = Delta ()
79112
113+ # Optimizations
114+ (k:: ConstantKernel )(x, y) = only (k. c)
80115kernelmatrix (k:: ConstantKernel , x:: AbstractVector ) = Fill (only (k. c), length (x), length (x))
81-
82116function kernelmatrix (k:: ConstantKernel , x:: AbstractVector , y:: AbstractVector )
117+ validate_inputs (x, y)
83118 return Fill (only (k. c), length (x), length (y))
84119end
120+ function kernelmatrix! (K:: AbstractMatrix , k:: ConstantKernel , x:: AbstractVector )
121+ validate_inplace_dims (K, x)
122+ return fill! (K, only (k. c))
123+ end
124+ function kernelmatrix! (
125+ K:: AbstractMatrix , k:: ConstantKernel , x:: AbstractVector , y:: AbstractVector
126+ )
127+ validate_inplace_dims (K, x, y)
128+ return fill! (K, only (k. c))
129+ end
130+ kernelmatrix_diag (k:: ConstantKernel , x:: AbstractVector ) = Fill (only (k. c), length (x))
131+ function kernelmatrix_diag (k:: ConstantKernel , x:: AbstractVector , y:: AbstractVector )
132+ validate_inputs (x, y)
133+ return Fill (only (k. c), length (x))
134+ end
135+ function kernelmatrix_diag! (K:: AbstractVector , k:: ConstantKernel , x:: AbstractVector )
136+ validate_inplace_dims (K, x)
137+ return fill! (K, only (k. c))
138+ end
139+ function kernelmatrix_diag! (
140+ K:: AbstractVector , k:: ConstantKernel , x:: AbstractVector , y:: AbstractVector
141+ )
142+ validate_inplace_dims (K, x, y)
143+ return fill! (K, only (k. c))
144+ end
85145
86146Base. show (io:: IO , κ:: ConstantKernel ) = print (io, " Constant Kernel (c = " , only (κ. c), " )" )
0 commit comments