mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-29 00:02:40 +08:00
remove long long, long double, unsigned, short, char, bool types.
Keep only int, float, double, complex<T>.
This commit is contained in:
parent
b155789aa7
commit
152e09a14d
@ -1,25 +0,0 @@
|
|||||||
INCLUDE(CheckCXXSourceCompiles)
|
|
||||||
|
|
||||||
MACRO (CHECK_LONG_DOUBLE _RESULT)
|
|
||||||
|
|
||||||
SET(_CHECK_LONG_DOUBLE_SOURCE_CODE "
|
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
long double ld = static_cast<long double>(1);
|
|
||||||
sqrt(ld);
|
|
||||||
cos(ld);
|
|
||||||
sin(ld);
|
|
||||||
exp(ld);
|
|
||||||
log(ld);
|
|
||||||
fabs(ld);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
")
|
|
||||||
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("${_CHECK_LONG_DOUBLE_SOURCE_CODE}" ${_RESULT})
|
|
||||||
|
|
||||||
ENDMACRO (CHECK_LONG_DOUBLE)
|
|
@ -1,18 +0,0 @@
|
|||||||
INCLUDE(CheckCXXSourceCompiles)
|
|
||||||
|
|
||||||
MACRO (CHECK_LONG_LONG _RESULT)
|
|
||||||
|
|
||||||
SET(_CHECK_LONG_LONG_SOURCE_CODE "
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
long long ll = static_cast<long long>(0);
|
|
||||||
long long int lli = static_cast<long long int>(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
")
|
|
||||||
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("${_CHECK_LONG_LONG_SOURCE_CODE}" ${_RESULT})
|
|
||||||
|
|
||||||
ENDMACRO (CHECK_LONG_LONG)
|
|
@ -4,8 +4,6 @@ INCLUDE (CheckComplexMath1)
|
|||||||
INCLUDE (CheckComplexMath2)
|
INCLUDE (CheckComplexMath2)
|
||||||
INCLUDE (CheckIeeeMath)
|
INCLUDE (CheckIeeeMath)
|
||||||
INCLUDE (CheckSysvMath)
|
INCLUDE (CheckSysvMath)
|
||||||
INCLUDE (CheckLongDouble)
|
|
||||||
INCLUDE (CheckLongLong)
|
|
||||||
INCLUDE (CheckRestrictKeyword)
|
INCLUDE (CheckRestrictKeyword)
|
||||||
INCLUDE (CheckAlwaysInline)
|
INCLUDE (CheckAlwaysInline)
|
||||||
|
|
||||||
@ -18,8 +16,6 @@ CHECK_COMPLEX_MATH1 (TVMET_HAVE_COMPLEX_MATH1)
|
|||||||
CHECK_COMPLEX_MATH2 (TVMET_HAVE_COMPLEX_MATH2)
|
CHECK_COMPLEX_MATH2 (TVMET_HAVE_COMPLEX_MATH2)
|
||||||
CHECK_IEEE_MATH (TVMET_HAVE_IEEE_MATH)
|
CHECK_IEEE_MATH (TVMET_HAVE_IEEE_MATH)
|
||||||
CHECK_SYSV_MATH (TVMET_HAVE_SYSV_MATH)
|
CHECK_SYSV_MATH (TVMET_HAVE_SYSV_MATH)
|
||||||
CHECK_LONG_DOUBLE (TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
CHECK_LONG_DOUBLE (TVMET_HAVE_LONG_LONG)
|
|
||||||
CHECK_RESTRICT_KEYWORD (TVMET_RESTRICT_KEYWORD)
|
CHECK_RESTRICT_KEYWORD (TVMET_RESTRICT_KEYWORD)
|
||||||
CHECK_ALWAYS_INLINE (TVMET_ALWAYS_INLINE)
|
CHECK_ALWAYS_INLINE (TVMET_ALWAYS_INLINE)
|
||||||
|
|
||||||
|
@ -109,16 +109,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
|||||||
TVMET_DECLARE_MACRO(yn, int)
|
TVMET_DECLARE_MACRO(yn, int)
|
||||||
TVMET_DECLARE_MACRO(pow, int)
|
TVMET_DECLARE_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(atan2, float)
|
TVMET_DECLARE_MACRO(atan2, float)
|
||||||
TVMET_DECLARE_MACRO(drem, float)
|
TVMET_DECLARE_MACRO(drem, float)
|
||||||
TVMET_DECLARE_MACRO(fmod, float)
|
TVMET_DECLARE_MACRO(fmod, float)
|
||||||
@ -135,16 +125,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
|||||||
TVMET_DECLARE_MACRO(yn, double)
|
TVMET_DECLARE_MACRO(yn, double)
|
||||||
TVMET_DECLARE_MACRO(pow, double)
|
TVMET_DECLARE_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long double)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long double)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long double)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long double)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -348,16 +328,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, int)
|
TVMET_IMPLEMENT_MACRO(yn, int)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, int)
|
TVMET_IMPLEMENT_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, float)
|
TVMET_IMPLEMENT_MACRO(atan2, float)
|
||||||
TVMET_IMPLEMENT_MACRO(drem, float)
|
TVMET_IMPLEMENT_MACRO(drem, float)
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||||
@ -374,16 +344,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, double)
|
TVMET_IMPLEMENT_MACRO(yn, double)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, double)
|
TVMET_IMPLEMENT_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -269,17 +269,9 @@ eval(const XprMatrix<E1, Rows, Cols>& e1, const XprMatrix<E2, Rows, Cols>& e2, P
|
|||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(int)
|
TVMET_IMPLEMENT_MACRO(int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(float)
|
TVMET_IMPLEMENT_MACRO(float)
|
||||||
TVMET_IMPLEMENT_MACRO(double)
|
TVMET_IMPLEMENT_MACRO(double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,13 +130,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, int)
|
TVMET_DECLARE_MACRO(mul, int)
|
||||||
TVMET_DECLARE_MACRO(div, int)
|
TVMET_DECLARE_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, float)
|
TVMET_DECLARE_MACRO(add, float)
|
||||||
TVMET_DECLARE_MACRO(sub, float)
|
TVMET_DECLARE_MACRO(sub, float)
|
||||||
TVMET_DECLARE_MACRO(mul, float)
|
TVMET_DECLARE_MACRO(mul, float)
|
||||||
@ -147,13 +140,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, double)
|
TVMET_DECLARE_MACRO(mul, double)
|
||||||
TVMET_DECLARE_MACRO(div, double)
|
TVMET_DECLARE_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -601,13 +587,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, int)
|
TVMET_IMPLEMENT_MACRO(mul, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, int)
|
TVMET_IMPLEMENT_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, float)
|
TVMET_IMPLEMENT_MACRO(add, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, float)
|
TVMET_IMPLEMENT_MACRO(sub, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||||
@ -618,13 +597,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, double)
|
TVMET_IMPLEMENT_MACRO(mul, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, double)
|
TVMET_IMPLEMENT_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -162,13 +162,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, int)
|
TVMET_DECLARE_MACRO(mul, *, int)
|
||||||
TVMET_DECLARE_MACRO(div, /, int)
|
TVMET_DECLARE_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, +, float)
|
TVMET_DECLARE_MACRO(add, +, float)
|
||||||
TVMET_DECLARE_MACRO(sub, -, float)
|
TVMET_DECLARE_MACRO(sub, -, float)
|
||||||
TVMET_DECLARE_MACRO(mul, *, float)
|
TVMET_DECLARE_MACRO(mul, *, float)
|
||||||
@ -179,13 +172,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, double)
|
TVMET_DECLARE_MACRO(mul, *, double)
|
||||||
TVMET_DECLARE_MACRO(div, /, double)
|
TVMET_DECLARE_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -496,13 +482,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, int)
|
TVMET_IMPLEMENT_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, float)
|
TVMET_IMPLEMENT_MACRO(add, +, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||||
@ -513,13 +492,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, double)
|
TVMET_IMPLEMENT_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,183 +170,6 @@ struct NumericTraits<char> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<unsigned char> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for unsigned char.
|
|
||||||
*
|
|
||||||
* \note Normally it doesn't make sense to call <tt>conj</tt>
|
|
||||||
* for an unsigned type! An unary minus operator
|
|
||||||
* applied to unsigned type will result unsigned. Therefore
|
|
||||||
* this function is missing here.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<unsigned char> {
|
|
||||||
typedef unsigned char value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
typedef unsigned long sum_type;
|
|
||||||
typedef int diff_type;
|
|
||||||
typedef float float_type;
|
|
||||||
typedef int signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return std::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) {
|
|
||||||
return static_cast<value_type>(std::sqrt(static_cast<float_type>(x)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) { return lhs == rhs; }
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<short int> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for short int.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<short int> {
|
|
||||||
typedef short int value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef long long sum_type;
|
|
||||||
#else
|
|
||||||
typedef long sum_type;
|
|
||||||
#endif
|
|
||||||
typedef int diff_type;
|
|
||||||
typedef float float_type;
|
|
||||||
typedef short int signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type conj(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return std::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) {
|
|
||||||
return static_cast<value_type>(std::sqrt(static_cast<float_type>(x)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) { return lhs == rhs; }
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<short unsigned int> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for short unsigned int.
|
|
||||||
*
|
|
||||||
* \note Normally it doesn't make sense to call <tt>conj</tt>
|
|
||||||
* for an unsigned type! An unary minus operator
|
|
||||||
* applied to unsigned type will result unsigned. Therefore
|
|
||||||
* this function is missing here.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<short unsigned int> {
|
|
||||||
typedef short unsigned int value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef unsigned long long sum_type;
|
|
||||||
#else
|
|
||||||
typedef unsigned long sum_type;
|
|
||||||
#endif
|
|
||||||
typedef int diff_type;
|
|
||||||
typedef float float_type;
|
|
||||||
typedef int signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return std::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) {
|
|
||||||
return static_cast<value_type>(std::sqrt(static_cast<float_type>(x)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) { return lhs == rhs; }
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \class NumericTraits<int> NumericTraits.h "tvmet/NumericTraits.h"
|
* \class NumericTraits<int> NumericTraits.h "tvmet/NumericTraits.h"
|
||||||
* \brief Traits specialized for int.
|
* \brief Traits specialized for int.
|
||||||
@ -355,11 +178,7 @@ template<>
|
|||||||
struct NumericTraits<int> {
|
struct NumericTraits<int> {
|
||||||
typedef int value_type;
|
typedef int value_type;
|
||||||
typedef value_type base_type;
|
typedef value_type base_type;
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef long long sum_type;
|
|
||||||
#else
|
|
||||||
typedef long sum_type;
|
typedef long sum_type;
|
||||||
#endif
|
|
||||||
typedef int diff_type;
|
typedef int diff_type;
|
||||||
typedef double float_type;
|
typedef double float_type;
|
||||||
typedef int signed_type;
|
typedef int signed_type;
|
||||||
@ -406,187 +225,6 @@ struct NumericTraits<int> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<unsigned int> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for unsigned int.
|
|
||||||
*
|
|
||||||
* \note Normally it doesn't make sense to call <tt>conj</tt>
|
|
||||||
* for an unsigned type! An unary minus operator
|
|
||||||
* applied to unsigned type will result unsigned. Therefore
|
|
||||||
* this function is missing here.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<unsigned int> {
|
|
||||||
typedef unsigned int value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef unsigned long long sum_type;
|
|
||||||
#else
|
|
||||||
typedef unsigned long sum_type;
|
|
||||||
#endif
|
|
||||||
typedef int diff_type;
|
|
||||||
typedef double float_type;
|
|
||||||
typedef long signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) {
|
|
||||||
return static_cast<value_type>(std::sqrt(static_cast<float_type>(x)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) { return lhs == rhs; }
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<long> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for long.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<long> {
|
|
||||||
typedef long value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef long long sum_type;
|
|
||||||
#else
|
|
||||||
typedef long sum_type;
|
|
||||||
#endif
|
|
||||||
typedef long diff_type;
|
|
||||||
typedef double float_type;
|
|
||||||
typedef long signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type conj(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return std::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) {
|
|
||||||
return static_cast<value_type>(std::sqrt(static_cast<float_type>(x)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) { return lhs == rhs; }
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<unsigned long> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for unsigned long.
|
|
||||||
*
|
|
||||||
* \note Normally it doesn't make sense to call <tt>conj</tt>
|
|
||||||
* for an unsigned type! An unary minus operator
|
|
||||||
* applied to unsigned type will result unsigned. Therefore
|
|
||||||
* this function is missing here.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<unsigned long> {
|
|
||||||
typedef unsigned long value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef unsigned long long sum_type;
|
|
||||||
#else
|
|
||||||
typedef unsigned long sum_type;
|
|
||||||
#endif
|
|
||||||
typedef unsigned long diff_type;
|
|
||||||
typedef double float_type;
|
|
||||||
typedef long signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) {
|
|
||||||
return static_cast<value_type>(std::sqrt(static_cast<float_type>(x)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) { return lhs == rhs; }
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \class NumericTraits<float> NumericTraits.h "tvmet/NumericTraits.h"
|
* \class NumericTraits<float> NumericTraits.h "tvmet/NumericTraits.h"
|
||||||
* \brief Traits specialized for float.
|
* \brief Traits specialized for float.
|
||||||
@ -657,11 +295,7 @@ template<>
|
|||||||
struct NumericTraits<double> {
|
struct NumericTraits<double> {
|
||||||
typedef double value_type;
|
typedef double value_type;
|
||||||
typedef value_type base_type;
|
typedef value_type base_type;
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
typedef long double sum_type;
|
|
||||||
#else
|
|
||||||
typedef double sum_type;
|
typedef double sum_type;
|
||||||
#endif
|
|
||||||
typedef double diff_type;
|
typedef double diff_type;
|
||||||
typedef double float_type;
|
typedef double float_type;
|
||||||
typedef double signed_type;
|
typedef double signed_type;
|
||||||
@ -715,70 +349,6 @@ struct NumericTraits<double> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
/**
|
|
||||||
* \class NumericTraits<long double> NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for long double.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits<long double> {
|
|
||||||
typedef long double value_type;
|
|
||||||
typedef value_type base_type;
|
|
||||||
typedef long double sum_type;
|
|
||||||
typedef long double diff_type;
|
|
||||||
typedef long double float_type;
|
|
||||||
typedef long double signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef value_type argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type x) { TVMET_UNUSED(x); return 0; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type conj(argument_type x) { return x; }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type x) { return std::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type x) { return std::sqrt(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type x) { return traits_type::abs(x); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) {
|
|
||||||
static base_type sqrt_epsilon(
|
|
||||||
NumericTraits<base_type>::sqrt(
|
|
||||||
std::numeric_limits<base_type>::epsilon()));
|
|
||||||
|
|
||||||
return traits_type::norm_inf(lhs - rhs) < sqrt_epsilon *
|
|
||||||
std::max(std::max(traits_type::norm_inf(lhs),
|
|
||||||
traits_type::norm_inf(rhs)),
|
|
||||||
std::numeric_limits<base_type>::min());
|
|
||||||
}
|
|
||||||
|
|
||||||
enum { is_complex = false };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 1, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 1 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
#endif // TVMET_HAVE_LONG_DOUBLE
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* numeric traits for complex types
|
* numeric traits for complex types
|
||||||
*/
|
*/
|
||||||
@ -871,273 +441,6 @@ struct NumericTraits< std::complex<int> > {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits< std::complex<unsigned int> > NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for std::complex<unsigned int>.
|
|
||||||
*
|
|
||||||
* \note Normally it doesn't make sense to call <tt>conj</tt>
|
|
||||||
* for an unsigned type! An unary minus operator
|
|
||||||
* applied to unsigned type will result unsigned. Therefore
|
|
||||||
* this function is missing here.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits< std::complex<unsigned int> > {
|
|
||||||
typedef unsigned int base_type;
|
|
||||||
typedef std::complex<unsigned int> value_type;
|
|
||||||
typedef std::complex<unsigned long> sum_type;
|
|
||||||
typedef std::complex<int> diff_type;
|
|
||||||
typedef std::complex<float> float_type;
|
|
||||||
typedef std::complex<int> signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef const value_type& argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type z) { return std::real(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type z) { return std::imag(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type z) {
|
|
||||||
base_type x = z.real();
|
|
||||||
base_type y = z.imag();
|
|
||||||
|
|
||||||
// XXX probably case of overrun; header complex uses scaling
|
|
||||||
return static_cast<base_type>(NumericTraits<base_type>::sqrt(x * x + y * y));
|
|
||||||
}
|
|
||||||
|
|
||||||
static /* inline */
|
|
||||||
value_type sqrt(argument_type z) {
|
|
||||||
// borrowed and adapted from header complex
|
|
||||||
base_type x = z.real();
|
|
||||||
base_type y = z.imag();
|
|
||||||
|
|
||||||
if(x == base_type()) {
|
|
||||||
base_type t = NumericTraits<base_type>::sqrt(
|
|
||||||
NumericTraits<base_type>::abs(y) / 2);
|
|
||||||
return value_type(t, t);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
base_type t = NumericTraits<base_type>::sqrt(
|
|
||||||
2 * (traits_type::abs(z)
|
|
||||||
+ NumericTraits<base_type>::abs(x)));
|
|
||||||
return value_type(t / 2, y / t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type z) {
|
|
||||||
return NumericTraits<base_type>::abs((traits_type::real(z)))
|
|
||||||
+ NumericTraits<base_type>::abs((traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type z) { return traits_type::abs(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type z) {
|
|
||||||
return std::max(NumericTraits<base_type>::abs(traits_type::real(z)),
|
|
||||||
NumericTraits<base_type>::abs(traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) {
|
|
||||||
return (traits_type::real(lhs) == traits_type::real(rhs))
|
|
||||||
&& (traits_type::imag(lhs) == traits_type::imag(rhs));
|
|
||||||
}
|
|
||||||
|
|
||||||
enum { is_complex = true };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 2, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 6 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits< std::complex<long> > NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for std::complex<long>.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits< std::complex<long> > {
|
|
||||||
typedef long base_type;
|
|
||||||
typedef std::complex<long> value_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef std::complex<long long> sum_type;
|
|
||||||
#else
|
|
||||||
typedef std::complex<long> sum_type;
|
|
||||||
#endif
|
|
||||||
typedef std::complex<int> diff_type;
|
|
||||||
typedef std::complex<float> float_type;
|
|
||||||
typedef std::complex<int> signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef const value_type& argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type z) { return std::real(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type z) { return std::imag(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type conj(argument_type z) { return std::conj(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type z) {
|
|
||||||
base_type x = z.real();
|
|
||||||
base_type y = z.imag();
|
|
||||||
|
|
||||||
// XXX probably case of overrun; header complex uses scaling
|
|
||||||
return static_cast<base_type>(NumericTraits<base_type>::sqrt(x * x + y * y));
|
|
||||||
}
|
|
||||||
|
|
||||||
static /* inline */
|
|
||||||
value_type sqrt(argument_type z) {
|
|
||||||
// borrowed and adapted from header complex
|
|
||||||
base_type x = z.real();
|
|
||||||
base_type y = z.imag();
|
|
||||||
|
|
||||||
if(x == base_type()) {
|
|
||||||
base_type t = NumericTraits<base_type>::sqrt(
|
|
||||||
NumericTraits<base_type>::abs(y) / 2);
|
|
||||||
return value_type(t, y < base_type() ? -t : t);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
base_type t = NumericTraits<base_type>::sqrt(
|
|
||||||
2 * (traits_type::abs(z)
|
|
||||||
+ NumericTraits<base_type>::abs(x)));
|
|
||||||
base_type u = t / 2;
|
|
||||||
return x > base_type()
|
|
||||||
? value_type(u, y / t)
|
|
||||||
: value_type(NumericTraits<base_type>::abs(y) / t, y < base_type() ? -u : u);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type z) {
|
|
||||||
return NumericTraits<base_type>::abs((traits_type::real(z)))
|
|
||||||
+ NumericTraits<base_type>::abs((traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type z) { return traits_type::abs(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type z) {
|
|
||||||
return std::max(NumericTraits<base_type>::abs(traits_type::real(z)),
|
|
||||||
NumericTraits<base_type>::abs(traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) {
|
|
||||||
return (traits_type::real(lhs) == traits_type::real(rhs))
|
|
||||||
&& (traits_type::imag(lhs) == traits_type::imag(rhs));
|
|
||||||
}
|
|
||||||
|
|
||||||
enum { is_complex = true };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 2, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 6 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \class NumericTraits< std::complex<unsigned long> > NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for std::complex<unsigned long>.
|
|
||||||
*
|
|
||||||
* \note Normally it doesn't make sense to call <tt>conj</tt>
|
|
||||||
* for an unsigned type! An unary minus operator
|
|
||||||
* applied to unsigned type will result unsigned. Therefore
|
|
||||||
* this function is missing here.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits< std::complex<unsigned long> > {
|
|
||||||
typedef unsigned long base_type;
|
|
||||||
typedef std::complex<unsigned long> value_type;
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
typedef std::complex<unsigned long long> sum_type;
|
|
||||||
#else
|
|
||||||
typedef std::complex<unsigned long> sum_type;
|
|
||||||
#endif
|
|
||||||
typedef std::complex<long> diff_type;
|
|
||||||
typedef std::complex<float> float_type;
|
|
||||||
typedef std::complex<long> signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef const value_type& argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type z) { return std::real(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type z) { return std::imag(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type z) {
|
|
||||||
base_type x = z.real();
|
|
||||||
base_type y = z.imag();
|
|
||||||
|
|
||||||
// XXX probably case of overrun; header complex uses scaling
|
|
||||||
return static_cast<base_type>(NumericTraits<base_type>::sqrt(x * x + y * y));
|
|
||||||
}
|
|
||||||
|
|
||||||
static /* inline */
|
|
||||||
value_type sqrt(argument_type z) {
|
|
||||||
// borrowed and adapted from header complex
|
|
||||||
base_type x = z.real();
|
|
||||||
base_type y = z.imag();
|
|
||||||
|
|
||||||
if(x == base_type()) {
|
|
||||||
base_type t = NumericTraits<base_type>::sqrt(
|
|
||||||
NumericTraits<base_type>::abs(y) / 2);
|
|
||||||
return value_type(t, t);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
base_type t = NumericTraits<base_type>::sqrt(
|
|
||||||
2 * (traits_type::abs(z)
|
|
||||||
+ NumericTraits<base_type>::abs(x)));
|
|
||||||
return value_type(t / 2, y / t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type z) {
|
|
||||||
return NumericTraits<base_type>::abs((traits_type::real(z)))
|
|
||||||
+ NumericTraits<base_type>::abs((traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type z) { return traits_type::abs(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type z) {
|
|
||||||
return std::max(NumericTraits<base_type>::abs(traits_type::real(z)),
|
|
||||||
NumericTraits<base_type>::abs(traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) {
|
|
||||||
return (traits_type::real(lhs) == traits_type::real(rhs))
|
|
||||||
&& (traits_type::imag(lhs) == traits_type::imag(rhs));
|
|
||||||
}
|
|
||||||
|
|
||||||
enum { is_complex = true };
|
|
||||||
|
|
||||||
/** Complexity on operations.*/
|
|
||||||
enum {
|
|
||||||
ops_plus = 2, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 6 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \class NumericTraits< std::complex<float> > NumericTraits.h "tvmet/NumericTraits.h"
|
* \class NumericTraits< std::complex<float> > NumericTraits.h "tvmet/NumericTraits.h"
|
||||||
* \brief Traits specialized for std::complex<float>.
|
* \brief Traits specialized for std::complex<float>.
|
||||||
@ -1214,11 +517,7 @@ template<>
|
|||||||
struct NumericTraits< std::complex<double> > {
|
struct NumericTraits< std::complex<double> > {
|
||||||
typedef double base_type;
|
typedef double base_type;
|
||||||
typedef std::complex<double> value_type;
|
typedef std::complex<double> value_type;
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
typedef std::complex<long double> sum_type;
|
|
||||||
#else
|
|
||||||
typedef std::complex<double> sum_type;
|
typedef std::complex<double> sum_type;
|
||||||
#endif
|
|
||||||
typedef std::complex<double> diff_type;
|
typedef std::complex<double> diff_type;
|
||||||
typedef std::complex<double> float_type;
|
typedef std::complex<double> float_type;
|
||||||
typedef std::complex<double> signed_type;
|
typedef std::complex<double> signed_type;
|
||||||
@ -1278,76 +577,6 @@ struct NumericTraits< std::complex<double> > {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
/**
|
|
||||||
* \class NumericTraits< std::complex<long double> > NumericTraits.h "tvmet/NumericTraits.h"
|
|
||||||
* \brief Traits specialized for std::complex<double>.
|
|
||||||
*/
|
|
||||||
template<>
|
|
||||||
struct NumericTraits< std::complex<long double> > {
|
|
||||||
typedef long double base_type;
|
|
||||||
typedef std::complex<long double> value_type;
|
|
||||||
typedef std::complex<long double> sum_type;
|
|
||||||
typedef std::complex<long double> diff_type;
|
|
||||||
typedef std::complex<long double> float_type;
|
|
||||||
typedef std::complex<long double> signed_type;
|
|
||||||
|
|
||||||
typedef NumericTraits<value_type> traits_type;
|
|
||||||
typedef const value_type& argument_type;
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type real(argument_type z) { return std::real(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type imag(argument_type z) { return std::imag(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type conj(argument_type z) { return std::conj(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type abs(argument_type z) { return std::abs(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
value_type sqrt(argument_type z) { return std::sqrt(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_1(argument_type z) {
|
|
||||||
return NumericTraits<base_type>::abs((traits_type::real(z)))
|
|
||||||
+ NumericTraits<base_type>::abs((traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_2(argument_type z) { return traits_type::abs(z); }
|
|
||||||
|
|
||||||
static inline
|
|
||||||
base_type norm_inf(argument_type z) {
|
|
||||||
return std::max(NumericTraits<base_type>::abs(traits_type::real(z)),
|
|
||||||
NumericTraits<base_type>::abs(traits_type::imag(z)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline
|
|
||||||
bool equals(argument_type lhs, argument_type rhs) {
|
|
||||||
static base_type sqrt_epsilon(
|
|
||||||
NumericTraits<base_type>::sqrt(
|
|
||||||
std::numeric_limits<base_type>::epsilon()));
|
|
||||||
|
|
||||||
return traits_type::norm_inf(lhs - rhs) < sqrt_epsilon *
|
|
||||||
std::max(std::max(traits_type::norm_inf(lhs),
|
|
||||||
traits_type::norm_inf(rhs)),
|
|
||||||
std::numeric_limits<base_type>::min());
|
|
||||||
}
|
|
||||||
|
|
||||||
enum { is_complex = true };
|
|
||||||
|
|
||||||
/** Complexity on operations. */
|
|
||||||
enum {
|
|
||||||
ops_plus = 2, /**< Complexity on plus/minus ops. */
|
|
||||||
ops_muls = 6 /**< Complexity on multiplications. */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
|
|
||||||
#endif // defined(TVMET_HAVE_COMPLEX)
|
#endif // defined(TVMET_HAVE_COMPLEX)
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,44 +61,16 @@ struct PrecisionTraits< T > { \
|
|||||||
* pod types
|
* pod types
|
||||||
*/
|
*/
|
||||||
TVMET_PRECISION(int, 100)
|
TVMET_PRECISION(int, 100)
|
||||||
TVMET_PRECISION(unsigned int, 200)
|
|
||||||
TVMET_PRECISION(long, 300)
|
|
||||||
TVMET_PRECISION(unsigned long, 400)
|
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_PRECISION(long long, 500)
|
|
||||||
TVMET_PRECISION(unsigned long long, 600)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_PRECISION(float, 700)
|
TVMET_PRECISION(float, 700)
|
||||||
TVMET_PRECISION(double, 800)
|
TVMET_PRECISION(double, 800)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_PRECISION(long double, 900)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* complex types
|
* complex types
|
||||||
*/
|
*/
|
||||||
#if defined(TVMET_HAVE_COMPLEX)
|
#if defined(TVMET_HAVE_COMPLEX)
|
||||||
TVMET_PRECISION(std::complex<int>, 1000)
|
TVMET_PRECISION(std::complex<int>, 1000)
|
||||||
TVMET_PRECISION(std::complex<unsigned int>, 1100)
|
|
||||||
TVMET_PRECISION(std::complex<long>, 1200)
|
|
||||||
TVMET_PRECISION(std::complex<unsigned long>, 1300)
|
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_PRECISION(std::complex<long long>, 1400)
|
|
||||||
TVMET_PRECISION(std::complex<unsigned long long>, 1500)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_PRECISION(std::complex<float>, 1600)
|
TVMET_PRECISION(std::complex<float>, 1600)
|
||||||
TVMET_PRECISION(std::complex<double>, 1700)
|
TVMET_PRECISION(std::complex<double>, 1700)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_PRECISION(std::complex<long double>, 1800)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#endif // defined(TVMET_HAVE_COMPLEX)
|
#endif // defined(TVMET_HAVE_COMPLEX)
|
||||||
|
|
||||||
|
|
||||||
@ -133,33 +105,6 @@ struct AutopromoteTraits {
|
|||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Defines a macro for specializing/defining
|
|
||||||
* the promotion traits. bool, char, unsigned char, short int, etc. will
|
|
||||||
* be autopromote to int, as in C and C++.
|
|
||||||
*/
|
|
||||||
#define TVMET_AUTOPROMOTE(T1,T2) \
|
|
||||||
template<> \
|
|
||||||
struct AutopromoteTraits<T1> { \
|
|
||||||
typedef T2 value_type; \
|
|
||||||
};
|
|
||||||
|
|
||||||
TVMET_AUTOPROMOTE(bool, int)
|
|
||||||
TVMET_AUTOPROMOTE(char, int)
|
|
||||||
TVMET_AUTOPROMOTE(unsigned char, int)
|
|
||||||
TVMET_AUTOPROMOTE(short int, int)
|
|
||||||
TVMET_AUTOPROMOTE(short unsigned int, unsigned int)
|
|
||||||
|
|
||||||
/** \class AutopromoteTraits<bool> TypePromotion.h "tvmet/TypePromotion.h" */
|
|
||||||
/** \class AutopromoteTraits<char> TypePromotion.h "tvmet/TypePromotion.h" */
|
|
||||||
/** \class AutopromoteTraits<unsigned char> TypePromotion.h "tvmet/TypePromotion.h" */
|
|
||||||
/** \class AutopromoteTraits<short int> TypePromotion.h "tvmet/TypePromotion.h" */
|
|
||||||
/** \class AutopromoteTraits<short unsigned int> TypePromotion.h "tvmet/TypePromotion.h" */
|
|
||||||
|
|
||||||
#undef TVMET_AUTOPROMOTE
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \class promoteTo TypePromotion.h "tvmet/TypePromotion.h"
|
* \class promoteTo TypePromotion.h "tvmet/TypePromotion.h"
|
||||||
* \brief Promote to T1.
|
* \brief Promote to T1.
|
||||||
|
@ -117,16 +117,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
|||||||
TVMET_DECLARE_MACRO(yn, int)
|
TVMET_DECLARE_MACRO(yn, int)
|
||||||
TVMET_DECLARE_MACRO(pow, int)
|
TVMET_DECLARE_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(atan2, float)
|
TVMET_DECLARE_MACRO(atan2, float)
|
||||||
TVMET_DECLARE_MACRO(drem, float)
|
TVMET_DECLARE_MACRO(drem, float)
|
||||||
TVMET_DECLARE_MACRO(fmod, float)
|
TVMET_DECLARE_MACRO(fmod, float)
|
||||||
@ -143,16 +133,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
|||||||
TVMET_DECLARE_MACRO(yn, double)
|
TVMET_DECLARE_MACRO(yn, double)
|
||||||
TVMET_DECLARE_MACRO(pow, double)
|
TVMET_DECLARE_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long double)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long double)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long double)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long double)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -347,16 +327,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, int)
|
TVMET_IMPLEMENT_MACRO(yn, int)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, int)
|
TVMET_IMPLEMENT_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, float)
|
TVMET_IMPLEMENT_MACRO(atan2, float)
|
||||||
TVMET_IMPLEMENT_MACRO(drem, float)
|
TVMET_IMPLEMENT_MACRO(drem, float)
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||||
@ -373,16 +343,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, double)
|
TVMET_IMPLEMENT_MACRO(yn, double)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, double)
|
TVMET_IMPLEMENT_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -265,17 +265,9 @@ eval(const XprVector<E1, Sz>& e1, const XprVector<E2, Sz>& e2, POD x3) { \
|
|||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(int)
|
TVMET_IMPLEMENT_MACRO(int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(float)
|
TVMET_IMPLEMENT_MACRO(float)
|
||||||
TVMET_IMPLEMENT_MACRO(double)
|
TVMET_IMPLEMENT_MACRO(double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -126,13 +126,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, int)
|
TVMET_DECLARE_MACRO(mul, int)
|
||||||
TVMET_DECLARE_MACRO(div, int)
|
TVMET_DECLARE_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, float)
|
TVMET_DECLARE_MACRO(add, float)
|
||||||
TVMET_DECLARE_MACRO(sub, float)
|
TVMET_DECLARE_MACRO(sub, float)
|
||||||
TVMET_DECLARE_MACRO(mul, float)
|
TVMET_DECLARE_MACRO(mul, float)
|
||||||
@ -143,13 +136,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, double)
|
TVMET_DECLARE_MACRO(mul, double)
|
||||||
TVMET_DECLARE_MACRO(div, double)
|
TVMET_DECLARE_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -431,13 +417,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, int)
|
TVMET_IMPLEMENT_MACRO(mul, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, int)
|
TVMET_IMPLEMENT_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, float)
|
TVMET_IMPLEMENT_MACRO(add, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, float)
|
TVMET_IMPLEMENT_MACRO(sub, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||||
@ -448,13 +427,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, double)
|
TVMET_IMPLEMENT_MACRO(mul, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, double)
|
TVMET_IMPLEMENT_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -162,13 +162,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, int)
|
TVMET_DECLARE_MACRO(mul, *, int)
|
||||||
TVMET_DECLARE_MACRO(div, /, int)
|
TVMET_DECLARE_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, +, float)
|
TVMET_DECLARE_MACRO(add, +, float)
|
||||||
TVMET_DECLARE_MACRO(sub, -, float)
|
TVMET_DECLARE_MACRO(sub, -, float)
|
||||||
TVMET_DECLARE_MACRO(mul, *, float)
|
TVMET_DECLARE_MACRO(mul, *, float)
|
||||||
@ -179,13 +172,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, double)
|
TVMET_DECLARE_MACRO(mul, *, double)
|
||||||
TVMET_DECLARE_MACRO(div, /, double)
|
TVMET_DECLARE_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -408,13 +394,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, int)
|
TVMET_IMPLEMENT_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, float)
|
TVMET_IMPLEMENT_MACRO(add, +, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||||
@ -425,13 +404,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, double)
|
TVMET_IMPLEMENT_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,14 +13,6 @@
|
|||||||
/* Define if the compiler supports IEEE math library */
|
/* Define if the compiler supports IEEE math library */
|
||||||
#cmakedefine TVMET_HAVE_IEEE_MATH
|
#cmakedefine TVMET_HAVE_IEEE_MATH
|
||||||
|
|
||||||
/* Define to 1 if the long double type is supported and the
|
|
||||||
* standard math library provides math functions for this type
|
|
||||||
*/
|
|
||||||
#cmakedefine TVMET_HAVE_LONG_DOUBLE 1
|
|
||||||
|
|
||||||
/* Define if the compiler supports the long_long type */
|
|
||||||
#cmakedefine TVMET_HAVE_LONG_LONG
|
|
||||||
|
|
||||||
/* Define if the compiler supports SYSV math library */
|
/* Define if the compiler supports SYSV math library */
|
||||||
#cmakedefine TVMET_HAVE_SYSV_MATH
|
#cmakedefine TVMET_HAVE_SYSV_MATH
|
||||||
|
|
||||||
|
@ -85,16 +85,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
|||||||
TVMET_DECLARE_MACRO(yn, int)
|
TVMET_DECLARE_MACRO(yn, int)
|
||||||
TVMET_DECLARE_MACRO(pow, int)
|
TVMET_DECLARE_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(yn,long long int)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(atan2, float)
|
TVMET_DECLARE_MACRO(atan2, float)
|
||||||
TVMET_DECLARE_MACRO(drem, float)
|
TVMET_DECLARE_MACRO(drem, float)
|
||||||
TVMET_DECLARE_MACRO(fmod, float)
|
TVMET_DECLARE_MACRO(fmod, float)
|
||||||
@ -111,16 +101,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
|||||||
TVMET_DECLARE_MACRO(yn, double)
|
TVMET_DECLARE_MACRO(yn, double)
|
||||||
TVMET_DECLARE_MACRO(pow, double)
|
TVMET_DECLARE_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long double)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long double)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long double)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long double)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -230,16 +210,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, int)
|
TVMET_IMPLEMENT_MACRO(yn, int)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, int)
|
TVMET_IMPLEMENT_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn,long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, float)
|
TVMET_IMPLEMENT_MACRO(atan2, float)
|
||||||
TVMET_IMPLEMENT_MACRO(drem, float)
|
TVMET_IMPLEMENT_MACRO(drem, float)
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||||
@ -256,16 +226,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, double)
|
TVMET_IMPLEMENT_MACRO(yn, double)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, double)
|
TVMET_IMPLEMENT_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,13 +108,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, int)
|
TVMET_DECLARE_MACRO(mul, int)
|
||||||
TVMET_DECLARE_MACRO(div, int)
|
TVMET_DECLARE_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, float)
|
TVMET_DECLARE_MACRO(add, float)
|
||||||
TVMET_DECLARE_MACRO(sub, float)
|
TVMET_DECLARE_MACRO(sub, float)
|
||||||
TVMET_DECLARE_MACRO(mul, float)
|
TVMET_DECLARE_MACRO(mul, float)
|
||||||
@ -125,13 +118,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, double)
|
TVMET_DECLARE_MACRO(mul, double)
|
||||||
TVMET_DECLARE_MACRO(div, double)
|
TVMET_DECLARE_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -403,13 +389,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, int)
|
TVMET_IMPLEMENT_MACRO(mul, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, int)
|
TVMET_IMPLEMENT_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, float)
|
TVMET_IMPLEMENT_MACRO(add, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, float)
|
TVMET_IMPLEMENT_MACRO(sub, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||||
@ -420,13 +399,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, double)
|
TVMET_IMPLEMENT_MACRO(mul, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, double)
|
TVMET_IMPLEMENT_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,13 +103,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, int)
|
TVMET_DECLARE_MACRO(mul, *, int)
|
||||||
TVMET_DECLARE_MACRO(div, /, int)
|
TVMET_DECLARE_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, +, float)
|
TVMET_DECLARE_MACRO(add, +, float)
|
||||||
TVMET_DECLARE_MACRO(sub, -, float)
|
TVMET_DECLARE_MACRO(sub, -, float)
|
||||||
TVMET_DECLARE_MACRO(mul, *, float)
|
TVMET_DECLARE_MACRO(mul, *, float)
|
||||||
@ -120,13 +113,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, double)
|
TVMET_DECLARE_MACRO(mul, *, double)
|
||||||
TVMET_DECLARE_MACRO(div, /, double)
|
TVMET_DECLARE_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -330,13 +316,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, int)
|
TVMET_IMPLEMENT_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, float)
|
TVMET_IMPLEMENT_MACRO(add, +, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||||
@ -347,13 +326,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, double)
|
TVMET_IMPLEMENT_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,16 +88,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
|||||||
TVMET_DECLARE_MACRO(yn, int)
|
TVMET_DECLARE_MACRO(yn, int)
|
||||||
TVMET_DECLARE_MACRO(pow, int)
|
TVMET_DECLARE_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(atan2, float)
|
TVMET_DECLARE_MACRO(atan2, float)
|
||||||
TVMET_DECLARE_MACRO(drem, float)
|
TVMET_DECLARE_MACRO(drem, float)
|
||||||
TVMET_DECLARE_MACRO(fmod, float)
|
TVMET_DECLARE_MACRO(fmod, float)
|
||||||
@ -114,16 +104,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
|||||||
TVMET_DECLARE_MACRO(yn, double)
|
TVMET_DECLARE_MACRO(yn, double)
|
||||||
TVMET_DECLARE_MACRO(pow, double)
|
TVMET_DECLARE_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(atan2, long double)
|
|
||||||
TVMET_DECLARE_MACRO(drem, long double)
|
|
||||||
TVMET_DECLARE_MACRO(fmod, long double)
|
|
||||||
TVMET_DECLARE_MACRO(hypot, long double)
|
|
||||||
TVMET_DECLARE_MACRO(jn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(yn, long double)
|
|
||||||
TVMET_DECLARE_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -233,16 +213,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, int)
|
TVMET_IMPLEMENT_MACRO(yn, int)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, int)
|
TVMET_IMPLEMENT_MACRO(pow, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long long int)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, float)
|
TVMET_IMPLEMENT_MACRO(atan2, float)
|
||||||
TVMET_IMPLEMENT_MACRO(drem, float)
|
TVMET_IMPLEMENT_MACRO(drem, float)
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||||
@ -259,16 +229,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(yn, double)
|
TVMET_IMPLEMENT_MACRO(yn, double)
|
||||||
TVMET_IMPLEMENT_MACRO(pow, double)
|
TVMET_IMPLEMENT_MACRO(pow, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(atan2, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(drem, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(fmod, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(hypot, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(jn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(yn, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(pow, long double)
|
|
||||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,13 +102,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, int)
|
TVMET_DECLARE_MACRO(mul, int)
|
||||||
TVMET_DECLARE_MACRO(div, int)
|
TVMET_DECLARE_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, float)
|
TVMET_DECLARE_MACRO(add, float)
|
||||||
TVMET_DECLARE_MACRO(sub, float)
|
TVMET_DECLARE_MACRO(sub, float)
|
||||||
TVMET_DECLARE_MACRO(mul, float)
|
TVMET_DECLARE_MACRO(mul, float)
|
||||||
@ -119,13 +112,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, double)
|
TVMET_DECLARE_MACRO(mul, double)
|
||||||
TVMET_DECLARE_MACRO(div, double)
|
TVMET_DECLARE_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -344,13 +330,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, int)
|
TVMET_IMPLEMENT_MACRO(mul, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, int)
|
TVMET_IMPLEMENT_MACRO(div, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, float)
|
TVMET_IMPLEMENT_MACRO(add, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, float)
|
TVMET_IMPLEMENT_MACRO(sub, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||||
@ -361,13 +340,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, double)
|
TVMET_IMPLEMENT_MACRO(mul, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, double)
|
TVMET_IMPLEMENT_MACRO(div, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,13 +102,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, int)
|
TVMET_DECLARE_MACRO(mul, *, int)
|
||||||
TVMET_DECLARE_MACRO(div, /, int)
|
TVMET_DECLARE_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long long int)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_DECLARE_MACRO(add, +, float)
|
TVMET_DECLARE_MACRO(add, +, float)
|
||||||
TVMET_DECLARE_MACRO(sub, -, float)
|
TVMET_DECLARE_MACRO(sub, -, float)
|
||||||
TVMET_DECLARE_MACRO(mul, *, float)
|
TVMET_DECLARE_MACRO(mul, *, float)
|
||||||
@ -119,13 +112,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
|||||||
TVMET_DECLARE_MACRO(mul, *, double)
|
TVMET_DECLARE_MACRO(mul, *, double)
|
||||||
TVMET_DECLARE_MACRO(div, /, double)
|
TVMET_DECLARE_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_DECLARE_MACRO(add, +, long double)
|
|
||||||
TVMET_DECLARE_MACRO(sub, -, long double)
|
|
||||||
TVMET_DECLARE_MACRO(mul, *, long double)
|
|
||||||
TVMET_DECLARE_MACRO(div, /, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_DECLARE_MACRO
|
#undef TVMET_DECLARE_MACRO
|
||||||
|
|
||||||
|
|
||||||
@ -276,13 +262,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
TVMET_IMPLEMENT_MACRO(mul, *, int)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, int)
|
TVMET_IMPLEMENT_MACRO(div, /, int)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_LONG)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long long int)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long long int)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, float)
|
TVMET_IMPLEMENT_MACRO(add, +, float)
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
TVMET_IMPLEMENT_MACRO(sub, -, float)
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||||
@ -293,13 +272,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
|||||||
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
TVMET_IMPLEMENT_MACRO(mul, *, double)
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, double)
|
TVMET_IMPLEMENT_MACRO(div, /, double)
|
||||||
|
|
||||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
|
||||||
TVMET_IMPLEMENT_MACRO(add, +, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(sub, -, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(mul, *, long double)
|
|
||||||
TVMET_IMPLEMENT_MACRO(div, /, long double)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef TVMET_IMPLEMENT_MACRO
|
#undef TVMET_IMPLEMENT_MACRO
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,10 +53,8 @@ template<typename T> static void basics2()
|
|||||||
2,5,8,
|
2,5,8,
|
||||||
3,6,9;
|
3,6,9;
|
||||||
|
|
||||||
// all elements of v1 should increase
|
|
||||||
assert(v1(0) == T(1) && v1(1) == T(2) && v1(2) == T(3));
|
assert(v1(0) == T(1) && v1(1) == T(2) && v1(2) == T(3));
|
||||||
|
|
||||||
// all elements of m1 should increase column-wise
|
|
||||||
assert(m1(0,0) == T(1) && m1(0,1) == T(4) && m1(0,2) == T(7) &&
|
assert(m1(0,0) == T(1) && m1(0,1) == T(4) && m1(0,2) == T(7) &&
|
||||||
m1(1,0) == T(2) && m1(1,1) == T(5) && m1(1,2) == T(8) &&
|
m1(1,0) == T(2) && m1(1,1) == T(5) && m1(1,2) == T(8) &&
|
||||||
m1(2,0) == T(3) && m1(2,1) == T(6) && m1(2,2) == T(9));
|
m1(2,0) == T(3) && m1(2,1) == T(6) && m1(2,2) == T(9));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user