1#ifndef KNNCOLLE_DISTANCES_HPP
2#define KNNCOLLE_DISTANCES_HPP
21template<
typename Data_,
typename Distance_>
49 virtual Distance_
raw(std::size_t num_dimensions,
const Data_* x,
const Data_* y)
const = 0;
70template<
typename Data_,
typename Distance_>
76 Distance_
raw(std::size_t num_dimensions,
const Data_* x,
const Data_* y)
const {
78 for (std::size_t d = 0; d < num_dimensions; ++d) {
79 auto delta =
static_cast<Distance_
>(x[d]) -
static_cast<Distance_
>(y[d]);
80 output += delta * delta;
86 return std::sqrt(
raw);
104template<
typename Data_,
typename Distance_>
110 Distance_
raw(std::size_t num_dimensions,
const Data_* x,
const Data_* y)
const {
111 Distance_ output = 0;
112 for (std::size_t d = 0; d < num_dimensions; ++d) {
113 auto delta =
static_cast<Distance_
>(x[d]) -
static_cast<Distance_
>(y[d]);
114 output += std::abs(delta);
Interface for a distance metric.
Definition distances.hpp:22
virtual Distance_ normalize(Distance_ raw) const =0
virtual Distance_ denormalize(Distance_ norm) const =0
virtual Distance_ raw(std::size_t num_dimensions, const Data_ *x, const Data_ *y) const =0
Compute Euclidean distances between two input vectors.
Definition distances.hpp:71
Compute Manhattan distances between two input vectors.
Definition distances.hpp:105
Collection of KNN algorithms.
Definition Bruteforce.hpp:24