@@ -15,10 +15,43 @@ See also: [`ConstantKernel`](@ref)
15
15
"""
16
16
struct ZeroKernel <: SimpleKernel end
17
17
18
- kappa (κ :: ZeroKernel , d :: T ) where {T <: Real } = zero (T)
19
-
18
+ # SimpleKernel interface
19
+ kappa ( :: ZeroKernel , :: Real ) = false
20
20
metric (:: ZeroKernel ) = Delta ()
21
21
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
+
22
55
Base. show (io:: IO , :: ZeroKernel ) = print (io, " Zero Kernel" )
23
56
24
57
"""
73
106
74
107
@functor ConstantKernel
75
108
76
- kappa (κ :: ConstantKernel , x :: Real ) = only (κ . c) * one (x)
77
-
109
+ # SimpleKernel interface
110
+ kappa (κ :: ConstantKernel , :: Real ) = only (κ . c)
78
111
metric (:: ConstantKernel ) = Delta ()
79
112
113
+ # Optimizations
114
+ (k:: ConstantKernel )(x, y) = only (k. c)
80
115
kernelmatrix (k:: ConstantKernel , x:: AbstractVector ) = Fill (only (k. c), length (x), length (x))
81
-
82
116
function kernelmatrix (k:: ConstantKernel , x:: AbstractVector , y:: AbstractVector )
117
+ validate_inputs (x, y)
83
118
return Fill (only (k. c), length (x), length (y))
84
119
end
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
85
145
86
146
Base. show (io:: IO , κ:: ConstantKernel ) = print (io, " Constant Kernel (c = " , only (κ. c), " )" )
0 commit comments