@@ -7,12 +7,7 @@ pub trait OperatorElkanKMeans: Operator {
7
7
type VectorNormalized : VectorOwned ;
8
8
9
9
fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) ;
10
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Self :: VectorNormalized ;
11
10
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 ;
12
- fn elkan_k_means_distance2 (
13
- lhs : <Self :: VectorNormalized as VectorOwned >:: Borrowed < ' _ > ,
14
- rhs : & [ Scalar < Self > ] ,
15
- ) -> F32 ;
16
11
}
17
12
18
13
impl OperatorElkanKMeans for BVecf32Cos {
@@ -22,17 +17,9 @@ impl OperatorElkanKMeans for BVecf32Cos {
22
17
vecf32:: l2_normalize ( vector)
23
18
}
24
19
25
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Vecf32Owned {
26
- bvecf32:: l2_normalize ( vector)
27
- }
28
-
29
20
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
30
21
vecf32:: dot ( lhs, rhs) . acos ( )
31
22
}
32
-
33
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ Scalar < Self > ] ) -> F32 {
34
- vecf32:: dot ( lhs. slice ( ) , rhs) . acos ( )
35
- }
36
23
}
37
24
38
25
impl OperatorElkanKMeans for BVecf32Dot {
@@ -42,17 +29,9 @@ impl OperatorElkanKMeans for BVecf32Dot {
42
29
vecf32:: l2_normalize ( vector)
43
30
}
44
31
45
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Vecf32Owned {
46
- bvecf32:: l2_normalize ( vector)
47
- }
48
-
49
32
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
50
33
vecf32:: dot ( lhs, rhs) . acos ( )
51
34
}
52
-
53
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ Scalar < Self > ] ) -> F32 {
54
- vecf32:: dot ( lhs. slice ( ) , rhs) . acos ( )
55
- }
56
35
}
57
36
58
37
impl OperatorElkanKMeans for BVecf32Jaccard {
@@ -62,37 +41,19 @@ impl OperatorElkanKMeans for BVecf32Jaccard {
62
41
vecf32:: l2_normalize ( vector)
63
42
}
64
43
65
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Vecf32Owned {
66
- Vecf32Owned :: new ( vector. to_vec ( ) )
67
- }
68
-
69
44
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
70
45
vecf32:: sl2 ( lhs, rhs) . sqrt ( )
71
46
}
72
-
73
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ Scalar < Self > ] ) -> F32 {
74
- vecf32:: sl2 ( lhs. slice ( ) , rhs) . sqrt ( )
75
- }
76
47
}
77
48
78
49
impl OperatorElkanKMeans for BVecf32L2 {
79
50
type VectorNormalized = Vecf32Owned ;
80
51
81
- fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) {
82
- vecf32:: l2_normalize ( vector)
83
- }
84
-
85
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Vecf32Owned {
86
- Vecf32Owned :: new ( vector. to_vec ( ) )
87
- }
52
+ fn elkan_k_means_normalize ( _: & mut [ Scalar < Self > ] ) { }
88
53
89
54
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
90
55
vecf32:: sl2 ( lhs, rhs) . sqrt ( )
91
56
}
92
-
93
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ Scalar < Self > ] ) -> F32 {
94
- vecf32:: sl2 ( lhs. slice ( ) , rhs) . sqrt ( )
95
- }
96
57
}
97
58
98
59
impl OperatorElkanKMeans for SVecf32Cos {
@@ -102,19 +63,9 @@ impl OperatorElkanKMeans for SVecf32Cos {
102
63
vecf32:: l2_normalize ( vector)
103
64
}
104
65
105
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> SVecf32Owned {
106
- let mut vector = vector. for_own ( ) ;
107
- svecf32:: l2_normalize ( & mut vector) ;
108
- vector
109
- }
110
-
111
66
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
112
67
vecf32:: dot ( lhs, rhs) . acos ( )
113
68
}
114
-
115
- fn elkan_k_means_distance2 ( lhs : Borrowed < ' _ , Self > , rhs : & [ Scalar < Self > ] ) -> F32 {
116
- svecf32:: dot_2 ( lhs, rhs) . acos ( )
117
- }
118
69
}
119
70
120
71
impl OperatorElkanKMeans for SVecf32Dot {
@@ -124,161 +75,86 @@ impl OperatorElkanKMeans for SVecf32Dot {
124
75
vecf32:: l2_normalize ( vector)
125
76
}
126
77
127
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> SVecf32Owned {
128
- let mut vector = vector. for_own ( ) ;
129
- svecf32:: l2_normalize ( & mut vector) ;
130
- vector
131
- }
132
-
133
78
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
134
79
vecf32:: dot ( lhs, rhs) . acos ( )
135
80
}
136
-
137
- fn elkan_k_means_distance2 ( lhs : Borrowed < ' _ , Self > , rhs : & [ Scalar < Self > ] ) -> F32 {
138
- svecf32:: dot_2 ( lhs, rhs) . acos ( )
139
- }
140
81
}
141
82
142
83
impl OperatorElkanKMeans for SVecf32L2 {
143
84
type VectorNormalized = Self :: VectorOwned ;
144
85
145
86
fn elkan_k_means_normalize ( _: & mut [ Scalar < Self > ] ) { }
146
87
147
- fn elkan_k_means_normalize2 ( vector : SVecf32Borrowed < ' _ > ) -> SVecf32Owned {
148
- vector. for_own ( )
149
- }
150
-
151
88
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
152
89
vecf32:: sl2 ( lhs, rhs) . sqrt ( )
153
90
}
154
-
155
- fn elkan_k_means_distance2 ( lhs : SVecf32Borrowed < ' _ > , rhs : & [ Scalar < Self > ] ) -> F32 {
156
- svecf32:: sl2_2 ( lhs, rhs) . sqrt ( )
157
- }
158
91
}
159
92
160
93
impl OperatorElkanKMeans for Vecf16Cos {
161
94
type VectorNormalized = Self :: VectorOwned ;
162
95
163
- fn elkan_k_means_normalize ( vector : & mut [ F16 ] ) {
96
+ fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) {
164
97
vecf16:: l2_normalize ( vector)
165
98
}
166
-
167
- fn elkan_k_means_normalize2 ( vector : Vecf16Borrowed < ' _ > ) -> Vecf16Owned {
168
- let mut vector = vector. for_own ( ) ;
169
- vecf16:: l2_normalize ( vector. slice_mut ( ) ) ;
170
- vector
171
- }
172
-
173
- fn elkan_k_means_distance ( lhs : & [ F16 ] , rhs : & [ F16 ] ) -> F32 {
99
+ fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
174
100
vecf16:: dot ( lhs, rhs) . acos ( )
175
101
}
176
-
177
- fn elkan_k_means_distance2 ( lhs : Vecf16Borrowed < ' _ > , rhs : & [ F16 ] ) -> F32 {
178
- vecf16:: dot ( lhs. slice ( ) , rhs) . acos ( )
179
- }
180
102
}
181
103
182
104
impl OperatorElkanKMeans for Vecf16Dot {
183
105
type VectorNormalized = Self :: VectorOwned ;
184
106
185
- fn elkan_k_means_normalize ( vector : & mut [ F16 ] ) {
107
+ fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) {
186
108
vecf16:: l2_normalize ( vector)
187
109
}
188
110
189
- fn elkan_k_means_normalize2 ( vector : Vecf16Borrowed < ' _ > ) -> Vecf16Owned {
190
- let mut vector = vector. for_own ( ) ;
191
- vecf16:: l2_normalize ( vector. slice_mut ( ) ) ;
192
- vector
193
- }
194
-
195
- fn elkan_k_means_distance ( lhs : & [ F16 ] , rhs : & [ F16 ] ) -> F32 {
111
+ fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
196
112
vecf16:: dot ( lhs, rhs) . acos ( )
197
113
}
198
-
199
- fn elkan_k_means_distance2 ( lhs : Vecf16Borrowed < ' _ > , rhs : & [ F16 ] ) -> F32 {
200
- vecf16:: dot ( lhs. slice ( ) , rhs) . acos ( )
201
- }
202
114
}
203
115
204
116
impl OperatorElkanKMeans for Vecf16L2 {
205
117
type VectorNormalized = Self :: VectorOwned ;
206
118
207
- fn elkan_k_means_normalize ( _: & mut [ F16 ] ) { }
208
-
209
- fn elkan_k_means_normalize2 ( vector : Vecf16Borrowed < ' _ > ) -> Vecf16Owned {
210
- vector. for_own ( )
211
- }
119
+ fn elkan_k_means_normalize ( _: & mut [ Scalar < Self > ] ) { }
212
120
213
- fn elkan_k_means_distance ( lhs : & [ F16 ] , rhs : & [ F16 ] ) -> F32 {
121
+ fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
214
122
vecf16:: sl2 ( lhs, rhs) . sqrt ( )
215
123
}
216
-
217
- fn elkan_k_means_distance2 ( lhs : Vecf16Borrowed < ' _ > , rhs : & [ F16 ] ) -> F32 {
218
- vecf16:: sl2 ( lhs. slice ( ) , rhs) . sqrt ( )
219
- }
220
124
}
221
125
222
126
impl OperatorElkanKMeans for Vecf32Cos {
223
127
type VectorNormalized = Self :: VectorOwned ;
224
128
225
- fn elkan_k_means_normalize ( vector : & mut [ F32 ] ) {
129
+ fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) {
226
130
vecf32:: l2_normalize ( vector)
227
131
}
228
132
229
- fn elkan_k_means_normalize2 ( vector : Vecf32Borrowed < ' _ > ) -> Vecf32Owned {
230
- let mut vector = vector. for_own ( ) ;
231
- vecf32:: l2_normalize ( vector. slice_mut ( ) ) ;
232
- vector
233
- }
234
-
235
- fn elkan_k_means_distance ( lhs : & [ F32 ] , rhs : & [ F32 ] ) -> F32 {
133
+ fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
236
134
vecf32:: dot ( lhs, rhs) . acos ( )
237
135
}
238
-
239
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ F32 ] ) -> F32 {
240
- vecf32:: dot ( lhs. slice ( ) , rhs) . acos ( )
241
- }
242
136
}
243
137
244
138
impl OperatorElkanKMeans for Vecf32Dot {
245
139
type VectorNormalized = Self :: VectorOwned ;
246
140
247
- fn elkan_k_means_normalize ( vector : & mut [ F32 ] ) {
141
+ fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) {
248
142
vecf32:: l2_normalize ( vector)
249
143
}
250
144
251
- fn elkan_k_means_normalize2 ( vector : Vecf32Borrowed < ' _ > ) -> Vecf32Owned {
252
- let mut vector = vector. for_own ( ) ;
253
- vecf32:: l2_normalize ( vector. slice_mut ( ) ) ;
254
- vector
255
- }
256
-
257
- fn elkan_k_means_distance ( lhs : & [ F32 ] , rhs : & [ F32 ] ) -> F32 {
145
+ fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
258
146
vecf32:: dot ( lhs, rhs) . acos ( )
259
147
}
260
-
261
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ F32 ] ) -> F32 {
262
- vecf32:: dot ( lhs. slice ( ) , rhs) . acos ( )
263
- }
264
148
}
265
149
266
150
impl OperatorElkanKMeans for Vecf32L2 {
267
151
type VectorNormalized = Self :: VectorOwned ;
268
152
269
- fn elkan_k_means_normalize ( _: & mut [ F32 ] ) { }
270
-
271
- fn elkan_k_means_normalize2 ( vector : Vecf32Borrowed < ' _ > ) -> Vecf32Owned {
272
- vector. for_own ( )
273
- }
153
+ fn elkan_k_means_normalize ( _: & mut [ Scalar < Self > ] ) { }
274
154
275
155
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
276
156
vecf32:: sl2 ( lhs, rhs) . sqrt ( )
277
157
}
278
-
279
- fn elkan_k_means_distance2 ( lhs : Vecf32Borrowed < ' _ > , rhs : & [ Scalar < Self > ] ) -> F32 {
280
- vecf32:: sl2 ( lhs. slice ( ) , rhs) . sqrt ( )
281
- }
282
158
}
283
159
284
160
impl OperatorElkanKMeans for Veci8Cos {
@@ -288,17 +164,9 @@ impl OperatorElkanKMeans for Veci8Cos {
288
164
vecf32:: l2_normalize ( vector)
289
165
}
290
166
291
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Veci8Owned {
292
- vector. normalize ( )
293
- }
294
-
295
167
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
296
168
vecf32:: dot ( lhs, rhs) . acos ( )
297
169
}
298
-
299
- fn elkan_k_means_distance2 ( lhs : Borrowed < ' _ , Self > , rhs : & [ Scalar < Self > ] ) -> F32 {
300
- veci8:: dot_2 ( lhs, rhs) . acos ( )
301
- }
302
170
}
303
171
304
172
impl OperatorElkanKMeans for Veci8Dot {
@@ -308,35 +176,17 @@ impl OperatorElkanKMeans for Veci8Dot {
308
176
vecf32:: l2_normalize ( vector)
309
177
}
310
178
311
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Veci8Owned {
312
- vector. normalize ( )
313
- }
314
-
315
179
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
316
180
vecf32:: dot ( lhs, rhs) . acos ( )
317
181
}
318
-
319
- fn elkan_k_means_distance2 ( lhs : Borrowed < ' _ , Self > , rhs : & [ Scalar < Self > ] ) -> F32 {
320
- veci8:: dot_2 ( lhs, rhs) . acos ( )
321
- }
322
182
}
323
183
324
184
impl OperatorElkanKMeans for Veci8L2 {
325
185
type VectorNormalized = Self :: VectorOwned ;
326
186
327
- fn elkan_k_means_normalize ( vector : & mut [ Scalar < Self > ] ) {
328
- vecf32:: l2_normalize ( vector)
329
- }
330
-
331
- fn elkan_k_means_normalize2 ( vector : Borrowed < ' _ , Self > ) -> Veci8Owned {
332
- vector. normalize ( )
333
- }
187
+ fn elkan_k_means_normalize ( _: & mut [ Scalar < Self > ] ) { }
334
188
335
189
fn elkan_k_means_distance ( lhs : & [ Scalar < Self > ] , rhs : & [ Scalar < Self > ] ) -> F32 {
336
190
vecf32:: sl2 ( lhs, rhs) . sqrt ( )
337
191
}
338
-
339
- fn elkan_k_means_distance2 ( lhs : Borrowed < ' _ , Self > , rhs : & [ Scalar < Self > ] ) -> F32 {
340
- veci8:: l2_2 ( lhs, rhs) . sqrt ( )
341
- }
342
192
}
0 commit comments