@@ -937,7 +937,8 @@ struct IVFPQScannerT : QueryTables {
937
937
float distance_2 = 0 ;
938
938
float distance_3 = 0 ;
939
939
distance_four_codes<PQDecoder>(
940
- pq,
940
+ pq.M ,
941
+ pq.nbits ,
941
942
sim_table,
942
943
codes + saved_j[0 ] * pq.code_size ,
943
944
codes + saved_j[1 ] * pq.code_size ,
@@ -957,24 +958,30 @@ struct IVFPQScannerT : QueryTables {
957
958
}
958
959
959
960
if (counter >= 1 ) {
960
- float dis =
961
- dis0 +
961
+ float dis = dis0 +
962
962
distance_single_code<PQDecoder>(
963
- pq, sim_table, codes + saved_j[0 ] * pq.code_size );
963
+ pq.M ,
964
+ pq.nbits ,
965
+ sim_table,
966
+ codes + saved_j[0 ] * pq.code_size );
964
967
res.add (saved_j[0 ], dis);
965
968
}
966
969
if (counter >= 2 ) {
967
- float dis =
968
- dis0 +
970
+ float dis = dis0 +
969
971
distance_single_code<PQDecoder>(
970
- pq, sim_table, codes + saved_j[1 ] * pq.code_size );
972
+ pq.M ,
973
+ pq.nbits ,
974
+ sim_table,
975
+ codes + saved_j[1 ] * pq.code_size );
971
976
res.add (saved_j[1 ], dis);
972
977
}
973
978
if (counter >= 3 ) {
974
- float dis =
975
- dis0 +
979
+ float dis = dis0 +
976
980
distance_single_code<PQDecoder>(
977
- pq, sim_table, codes + saved_j[2 ] * pq.code_size );
981
+ pq.M ,
982
+ pq.nbits ,
983
+ sim_table,
984
+ codes + saved_j[2 ] * pq.code_size );
978
985
res.add (saved_j[2 ], dis);
979
986
}
980
987
}
@@ -1137,7 +1144,8 @@ struct IVFPQScannerT : QueryTables {
1137
1144
float distance_2 = dis0;
1138
1145
float distance_3 = dis0;
1139
1146
distance_four_codes<PQDecoder>(
1140
- pq,
1147
+ pq.M ,
1148
+ pq.nbits ,
1141
1149
sim_table,
1142
1150
codes + saved_j[0 ] * pq.code_size ,
1143
1151
codes + saved_j[1 ] * pq.code_size ,
@@ -1165,10 +1173,12 @@ struct IVFPQScannerT : QueryTables {
1165
1173
for (size_t kk = 0 ; kk < counter; kk++) {
1166
1174
n_hamming_pass++;
1167
1175
1168
- float dis =
1169
- dis0 +
1176
+ float dis = dis0 +
1170
1177
distance_single_code<PQDecoder>(
1171
- pq, sim_table, codes + saved_j[kk] * pq.code_size );
1178
+ pq.M ,
1179
+ pq.nbits ,
1180
+ sim_table,
1181
+ codes + saved_j[kk] * pq.code_size );
1172
1182
1173
1183
res.add (saved_j[kk], dis);
1174
1184
}
@@ -1185,7 +1195,10 @@ struct IVFPQScannerT : QueryTables {
1185
1195
1186
1196
float dis = dis0 +
1187
1197
distance_single_code<PQDecoder>(
1188
- pq, sim_table, codes + j * code_size);
1198
+ pq.M ,
1199
+ pq.nbits ,
1200
+ sim_table,
1201
+ codes + j * code_size);
1189
1202
1190
1203
res.add (j, dis);
1191
1204
}
@@ -1263,7 +1276,7 @@ struct IVFPQScanner : IVFPQScannerT<idx_t, METRIC_TYPE, PQDecoder>,
1263
1276
assert (precompute_mode == 2 );
1264
1277
float dis = this ->dis0 +
1265
1278
distance_single_code<PQDecoder>(
1266
- this ->pq , this ->sim_table , code);
1279
+ this ->pq . M , this -> pq . nbits , this ->sim_table , code);
1267
1280
return dis;
1268
1281
}
1269
1282
0 commit comments