1#ifndef LP_METRIC_IMPL_H
2#define LP_METRIC_IMPL_H
9template<
int P,
bool TTakeRoot>
13template<
int P,
bool TTakeRoot>
18 for (
uint_t i = 0; i < v1.size(); i++){
19 sum += std::pow(std::fabs(v1[i] - v2[i]), P);
25 return std::pow(
sum, (1.0 / P));
29template<
int P,
bool TTakeRoot>
34 for (
uint_t i = 0; i < v1.size(); i++){
35 sum += std::pow(std::fabs(v1[i] - v2[i]), P);
41 return std::pow(
sum, (1.0 / P));
48 return blaze::l1Norm(v1 - v2);
54 return blaze::l1Norm(v1 - v2);
61 return std::sqrt(blaze::sqrNorm(v1 - v2));
67 return blaze::sqrNorm(v1 - v2);
74 return std::pow(blaze::reduce(blaze::pow(blaze::abs(v1 - v2), 3.0), blaze::Add()), 1.0 / 3.0);
80 return std::pow(blaze::reduce(blaze::pow(blaze::abs(v1 - v2), 3.0), blaze::Add()), 1.0 / 3.0);
84template<
int P,
bool TTakeRoot>
96 for(
uint_t i=0; i<v1.size(); ++i){
97 sum += std::fabs(v1[i] - v2[i]);
117 for(
uint_t i=0; i<v1.size(); ++i){
118 sum += (v1[i] - v2[i]) * (v1[i] - v2[i]);
121 return std::sqrt(
sum);
131 for(
uint_t i=0; i<v1.size(); ++i){
132 sum += (v1[i] - v2[i]) * (v1[i] - v2[i]);
static real_t tolerance_value
Definition lp_metric.h:22
real_t operator()(const DynVec< real_t > &v1, const DynVec< real_t > &v2) const
Overload operator()
Definition lp_metric_impl.h:86
static real_t evaluate(const DynVec< real_t > &v1, const DynVec< real_t > &v2)
evaluate
Definition lp_metric_impl.h:15
double real_t
real_t
Definition bitrl_types.h:23
Eigen::RowVectorX< T > DynVec
Dynamically sized row vector.
Definition bitrl_types.h:74
std::size_t uint_t
uint_t
Definition bitrl_types.h:43
std::iterator_traits< IteratorType >::value_type sum(IteratorType begin, IteratorType end, bool parallel=true)
Definition vector_math.h:98
Various utilities used when working with RL problems.
Definition cuberl_types.h:16