13 [[deprecated(
"Use vanedb::DistanceMetric (core/distance_strategy.h). HNSWDistanceMetric is removed in v0.3.0.")]]
27 : dim_(
dimension), metric_(metric), valid_(true) {
34 throw std::invalid_argument(
"DistanceComputer: invalid DistanceMetric value");
37 [[nodiscard]]
float operator()(
const float* a,
const float* b)
const noexcept {
38 if (!valid_) [[unlikely]]
return std::numeric_limits<float>::infinity();
44 return std::numeric_limits<float>::infinity();
47 [[nodiscard]]
size_t dimension() const noexcept {
return dim_; }
DistanceComputer() noexcept=default
float operator()(const float *a, const float *b) const noexcept
size_t dimension() const noexcept
float cosine_distance(const float *__restrict__ a, const float *__restrict__ b, size_t n) noexcept
float dot_product(const float *__restrict__ a, const float *__restrict__ b, size_t n) noexcept
float l2_sq(const float *__restrict__ a, const float *__restrict__ b, size_t n) noexcept