16 #ifndef MATHTOOLS_MAXIMUM_NORM_H
17 #define MATHTOOLS_MAXIMUM_NORM_H
25 template<
typename COORD_ITERATOR>
26 auto MaximumFunc_value(COORD_ITERATOR begin, COORD_ITERATOR end) -> decltype(typeHelper(*begin))
28 return *std::max_element(begin, end);
31 template<std::
size_t N,
typename COORD_TYPE>
32 struct MaximumFuncArity
34 static typename NumTraits<COORD_TYPE>::Real value(
const COORD_TYPE* coordPtr)
36 return std::max(*(coordPtr + N - 1), MaximumFuncArity<N - 1, COORD_TYPE>::value(coordPtr));
40 template<
typename COORD_TYPE>
41 struct MaximumFuncArity<1, COORD_TYPE>
43 static typename NumTraits<COORD_TYPE>::Real value(
const COORD_TYPE* coordPtr)
49 template<
typename COORD_ITERATOR>
50 static auto fromRange(COORD_ITERATOR begin, COORD_ITERATOR end) -> decltype(typeHelper(*begin))
51 {
return MaximumFunc_value(begin, end); }
53 template<std::
size_t N,
typename COORD_TYPE>
54 static typename NumTraits<COORD_TYPE>::Real fromPtr(
const COORD_TYPE* coordPtr)
55 {
return MaximumFuncArity<N, COORD_TYPE>::value(coordPtr); }
58 template<>
struct NormTraits<internal::MaximumFunc>
60 typedef ArityNormSpecializationTag NormCategory;
76 #endif // MATHTOOLS_MAXIMUM_NORM_H
Computation of norms in K-vector space.
Definition: norm.h:60
Norm< internal::MaximumFunc > MaximumNorm
Provides computation of the maximum norm
Definition: maximum_norm.h:72