@@ -937,7 +937,8 @@ struct IVFPQScannerT : QueryTables {
937937 float distance_2 = 0 ;
938938 float distance_3 = 0 ;
939939 distance_four_codes<PQDecoder>(
940- pq,
940+ pq.M ,
941+ pq.nbits ,
941942 sim_table,
942943 codes + saved_j[0 ] * pq.code_size ,
943944 codes + saved_j[1 ] * pq.code_size ,
@@ -957,24 +958,30 @@ struct IVFPQScannerT : QueryTables {
957958 }
958959
959960 if (counter >= 1 ) {
960- float dis =
961- dis0 +
961+ float dis = dis0 +
962962 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 );
964967 res.add (saved_j[0 ], dis);
965968 }
966969 if (counter >= 2 ) {
967- float dis =
968- dis0 +
970+ float dis = dis0 +
969971 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 );
971976 res.add (saved_j[1 ], dis);
972977 }
973978 if (counter >= 3 ) {
974- float dis =
975- dis0 +
979+ float dis = dis0 +
976980 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 );
978985 res.add (saved_j[2 ], dis);
979986 }
980987 }
@@ -1137,7 +1144,8 @@ struct IVFPQScannerT : QueryTables {
11371144 float distance_2 = dis0;
11381145 float distance_3 = dis0;
11391146 distance_four_codes<PQDecoder>(
1140- pq,
1147+ pq.M ,
1148+ pq.nbits ,
11411149 sim_table,
11421150 codes + saved_j[0 ] * pq.code_size ,
11431151 codes + saved_j[1 ] * pq.code_size ,
@@ -1165,10 +1173,12 @@ struct IVFPQScannerT : QueryTables {
11651173 for (size_t kk = 0 ; kk < counter; kk++) {
11661174 n_hamming_pass++;
11671175
1168- float dis =
1169- dis0 +
1176+ float dis = dis0 +
11701177 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 );
11721182
11731183 res.add (saved_j[kk], dis);
11741184 }
@@ -1185,7 +1195,10 @@ struct IVFPQScannerT : QueryTables {
11851195
11861196 float dis = dis0 +
11871197 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);
11891202
11901203 res.add (j, dis);
11911204 }
@@ -1263,7 +1276,10 @@ struct IVFPQScanner : IVFPQScannerT<idx_t, METRIC_TYPE, PQDecoder>,
12631276 assert (precompute_mode == 2 );
12641277 float dis = this ->dis0 +
12651278 distance_single_code<PQDecoder>(
1266- this ->pq , this ->sim_table , code);
1279+ this ->pq .M ,
1280+ this ->pq .nbits ,
1281+ this ->sim_table ,
1282+ code);
12671283 return dis;
12681284 }
12691285
0 commit comments