diff --git a/cpp/src/neighbors/detail/nn_descent.cuh b/cpp/src/neighbors/detail/nn_descent.cuh index 432cde7ffc..ce8b089be3 100644 --- a/cpp/src/neighbors/detail/nn_descent.cuh +++ b/cpp/src/neighbors/detail/nn_descent.cuh @@ -549,7 +549,7 @@ __device__ __forceinline__ void calculate_metric(float* s_distances, } else if (metric == cuvs::distance::DistanceType::L2Expanded || metric == cuvs::distance::DistanceType::L2SqrtExpanded) { s_distances[i] = - l2_norms[row_neighbors[row_id]] + l2_norms[col_neighbors[col_id]] - 2.0 * s_distances[i]; + l2_norms[row_neighbors[row_id]] + l2_norms[col_neighbors[col_id]] - 2.0f * s_distances[i]; // for fp32 vs fp16 precision differences resulting in negative distances when distance // should be 0 related issue: https://github.com/nvidia/cuvs/issues/991 s_distances[i] = s_distances[i] < 0.0f ? 0.0f : s_distances[i];