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