22 #ifndef _BLAZE_MATH_FUNCTIONS_H_
23 #define _BLAZE_MATH_FUNCTIONS_H_
50 template<
typename T >
51 inline const T
sign( T a );
53 template<
typename T >
54 inline size_t digits( T a );
56 template<
typename T1,
typename T2 >
57 inline const typename MathTrait<T1,T2>::HighType
58 min(
const T1& a,
const T2& b );
60 template<
typename T1,
typename T2,
typename T3 >
61 inline const typename MathTrait< typename MathTrait<T1,T2>::HighType, T3 >::HighType
62 min(
const T1& a,
const T2& b,
const T3& c );
64 template<
typename T1,
typename T2 >
65 inline const typename MathTrait<T1,T2>::HighType
66 max(
const T1& a,
const T2& b );
68 template<
typename T1,
typename T2,
typename T3 >
69 inline const typename MathTrait< typename MathTrait<T1,T2>::HighType, T3 >::HighType
70 max(
const T1& a,
const T2& b,
const T3& c );
72 template<
typename T >
73 inline T
round( T a );
75 template<
typename T1,
typename T2 >
91 template<
typename T >
95 return ( a < T(0) )?( T(-1) ):( T(1) );
118 template<
typename T >
147 template<
typename T1,
typename T2 >
157 return ( a < b )?( a ):( b );
175 template<
typename T1,
typename T2,
typename T3 >
176 inline const typename MathTrait< typename MathTrait<T1,T2>::HighType, T3 >::HighType
177 min(
const T1& a,
const T2& b,
const T3& c )
186 return ( a < b )?( ( a < c )?( a ):( c ) ):( ( b < c )?( b ):( c ) );
203 template<
typename T1,
typename T2 >
213 return ( a < b )?( b ):( a );
231 template<
typename T1,
typename T2,
typename T3 >
232 inline const typename MathTrait< typename MathTrait<T1,T2>::HighType, T3 >::HighType
233 max(
const T1& a,
const T2& b,
const T3& c )
242 return ( a < b )?( ( b < c )?( c ):( b ) ):( ( a < c )?( c ):( a ) );
259 template<
typename T >
281 inline float round(
float a )
283 return std::floor( a + 0.5F );
302 inline double round<double>(
double a )
304 return std::floor( a + 0.5 );
323 inline long double round<long double>(
long double a )
325 return std::floor( a + 0.5L );
342 template<
typename T >
343 inline bool lessThan_backend( T a, T b )
366 inline bool lessThan_backend<float>(
float a,
float b )
368 return ( b - a ) > 1E-8F;
389 inline bool lessThan_backend<double>(
double a,
double b )
391 return ( b - a ) > 1E-8;
412 inline bool lessThan_backend<long double>(
long double a,
long double b )
414 return ( b - a ) > 1E-10;
432 template<
typename T1,
typename T2 >
436 return lessThan_backend<High>( a, b );