16 #ifndef OPENKALMAN_DISTANCE_HPP 17 #define OPENKALMAN_DISTANCE_HPP 20 #include "values/functions/internal/update_real_part.hpp" 52 static constexpr
bool is_specialized =
true;
55 static constexpr
auto dimension = [](
const T&) {
return std::integral_constant<std::size_t, 1>{}; };
58 static constexpr
auto stat_dimension = [](
const T&) {
return std::integral_constant<std::size_t, 1>{}; };
61 static constexpr
auto is_euclidean = [](
const T&) {
return std::false_type{}; };
64 static constexpr
auto hash_code = [](
const T&)
66 constexpr
auto bits = std::numeric_limits<std::size_t>::digits;
67 if constexpr (bits < 32)
68 return std::integral_constant<std::size_t, 0xBD0A_uz>{};
69 else if constexpr (bits < 64)
70 return std::integral_constant<std::size_t, 0xBD0A6689_uz>{};
72 return std::integral_constant<std::size_t, 0xBD0A668977D34578_uz>{};
82 decltype(
auto) d = collections::get<0>(std::forward<decltype(data_view)>(data_view));
84 return std::array {values::internal::update_real_part(std::forward<decltype(d)>(d),
values::abs(
values::real(d)))};
95 return std::forward<decltype(data_view)>(data_view);
102 static constexpr
auto 119 template<
typename Scalar>
121 : common_type<OpenKalman::coordinates::Any<Scalar>, OpenKalman::coordinates::Distance> {};
125 struct common_type<OpenKalman::coordinates::Distance, T>
126 : std::conditional_t<
127 OpenKalman::coordinates::descriptor<T>,
128 OpenKalman::stdex::type_identity<OpenKalman::coordinates::Any<>>,
Definition: basics.hpp:41
decltype(auto) constexpr to_stat_space(const T &t, R &&data_view)
Maps a range reflecting vector-space data to a corresponding range in a vector space for directional ...
Definition: to_stat_space.hpp:44
decltype(auto) constexpr wrap(const T &t, R &&data_view)
wraps a range reflecting vector-space data to its primary range.
Definition: wrap.hpp:59
A non-negative real or integral number, [0,∞], representing a distance.
Definition: Distance.hpp:31
The root namespace for OpenKalman.
Definition: basics.hpp:34
The namespace for features relating to coordinates::pattern object.
Definition: compares_with.hpp:25
Inclusion file for collections.
constexpr auto real(const Arg &arg)
A constexpr function to obtain the real part of a (complex) number.
Definition: real.hpp:40
Traits for coordinates::pattern objects.
Definition: coordinate_descriptor_traits.hpp:36
constexpr auto abs(const Arg &arg)
A constexpr alternative to std::abs.
Definition: abs.hpp:38
decltype(auto) constexpr from_stat_space(const T &t, R &&stat_data_view)
Maps a range in a vector space for directional-statistics back to a range reflecting vector-space dat...
Definition: from_stat_space.hpp:44