void VectorCodec::find_nn()

in lattices/lattice_Zn.cpp [47:71]


void VectorCodec::find_nn (
                  size_t nc, const uint64_t * codes,
                  size_t nq, const float *xq,
                  long *labels, float *distances)
{
    for (long i = 0; i < nq; i++) {
        distances[i] = -1e20;
        labels[i] = -1;
    }

    float c[dim];
    for(long i = 0; i < nc; i++) {
        uint64_t code = codes[nc];
        decode(code, c);
        for (long j = 0; j < nq; j++) {
            const float *x = xq + j * dim;
            float dis = fvec_inner_product(x, c, dim);
            if (dis > distances[j]) {
                distances[j] = dis;
                labels[j] = i;
            }
        }
    }

}