// Description: Minkowski norm
// Documentation: norms.txt
#ifndef PASTELMATH_MINKOWSKI_NORM_H
#define PASTELMATH_MINKOWSKI_NORM_H
#include "pastel/math/norm/norm_concept.h"
#include "pastel/math/distance/minkowski_distance.h"
namespace Pastel
{
template <typename Real>
struct Minkowski_Norm
{
explicit Minkowski_Norm(const Real& p = 2)
: p_(p)
{
}
Real power() const {
return p_;
}
auto operator()(const Real& distance = 0) const
{
return Minkowski_Distance<Real>(distance, p_);
}
auto operator[](const Real& distance) const
{
return Minkowski_Distance<Real>(Distance_Native(), distance, p_);
}
Real p_;
};
}
#endif