mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-28 15:52:01 +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 (CheckIeeeMath)
|
||||
INCLUDE (CheckSysvMath)
|
||||
INCLUDE (CheckLongDouble)
|
||||
INCLUDE (CheckLongLong)
|
||||
INCLUDE (CheckRestrictKeyword)
|
||||
INCLUDE (CheckAlwaysInline)
|
||||
|
||||
@ -18,8 +16,6 @@ CHECK_COMPLEX_MATH1 (TVMET_HAVE_COMPLEX_MATH1)
|
||||
CHECK_COMPLEX_MATH2 (TVMET_HAVE_COMPLEX_MATH2)
|
||||
CHECK_IEEE_MATH (TVMET_HAVE_IEEE_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_ALWAYS_INLINE (TVMET_ALWAYS_INLINE)
|
||||
|
||||
|
@ -109,16 +109,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
||||
TVMET_DECLARE_MACRO(yn, 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(drem, float)
|
||||
TVMET_DECLARE_MACRO(fmod, float)
|
||||
@ -135,16 +125,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
||||
TVMET_DECLARE_MACRO(yn, 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
|
||||
|
||||
|
||||
@ -348,16 +328,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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(drem, float)
|
||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||
@ -374,16 +344,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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
|
||||
|
||||
|
||||
|
@ -269,17 +269,9 @@ eval(const XprMatrix<E1, Rows, Cols>& e1, const XprMatrix<E2, Rows, Cols>& e2, P
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(int)
|
||||
|
||||
#if defined(TVMET_HAVE_LONG_LONG)
|
||||
TVMET_IMPLEMENT_MACRO(long long int)
|
||||
#endif
|
||||
|
||||
TVMET_IMPLEMENT_MACRO(float)
|
||||
TVMET_IMPLEMENT_MACRO(double)
|
||||
|
||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
||||
TVMET_IMPLEMENT_MACRO(long double)
|
||||
#endif
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
|
@ -130,13 +130,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
||||
TVMET_DECLARE_MACRO(mul, 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(sub, float)
|
||||
TVMET_DECLARE_MACRO(mul, float)
|
||||
@ -147,13 +140,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
||||
TVMET_DECLARE_MACRO(mul, 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
|
||||
|
||||
|
||||
@ -601,13 +587,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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(sub, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||
@ -618,13 +597,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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
|
||||
|
||||
|
||||
|
@ -162,13 +162,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_DECLARE_MACRO(mul, *, float)
|
||||
@ -179,13 +172,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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
|
||||
|
||||
|
||||
@ -496,13 +482,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||
@ -513,13 +492,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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
|
||||
|
||||
|
||||
|
@ -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"
|
||||
* \brief Traits specialized for int.
|
||||
@ -355,11 +178,7 @@ template<>
|
||||
struct NumericTraits<int> {
|
||||
typedef 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 double float_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"
|
||||
* \brief Traits specialized for float.
|
||||
@ -657,11 +295,7 @@ template<>
|
||||
struct NumericTraits<double> {
|
||||
typedef double value_type;
|
||||
typedef value_type base_type;
|
||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
||||
typedef long double sum_type;
|
||||
#else
|
||||
typedef double sum_type;
|
||||
#endif
|
||||
typedef double diff_type;
|
||||
typedef double float_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
|
||||
*/
|
||||
@ -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"
|
||||
* \brief Traits specialized for std::complex<float>.
|
||||
@ -1214,11 +517,7 @@ template<>
|
||||
struct NumericTraits< std::complex<double> > {
|
||||
typedef double base_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;
|
||||
#endif
|
||||
typedef std::complex<double> diff_type;
|
||||
typedef std::complex<double> float_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)
|
||||
|
||||
|
||||
|
@ -61,44 +61,16 @@ struct PrecisionTraits< T > { \
|
||||
* pod types
|
||||
*/
|
||||
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(double, 800)
|
||||
|
||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
||||
TVMET_PRECISION(long double, 900)
|
||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
||||
|
||||
|
||||
/*
|
||||
* complex types
|
||||
*/
|
||||
#if defined(TVMET_HAVE_COMPLEX)
|
||||
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<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)
|
||||
|
||||
|
||||
@ -133,33 +105,6 @@ struct AutopromoteTraits {
|
||||
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"
|
||||
* \brief Promote to T1.
|
||||
|
@ -117,16 +117,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
||||
TVMET_DECLARE_MACRO(yn, 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(drem, float)
|
||||
TVMET_DECLARE_MACRO(fmod, float)
|
||||
@ -143,16 +133,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
||||
TVMET_DECLARE_MACRO(yn, 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
|
||||
|
||||
|
||||
@ -347,16 +327,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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(drem, float)
|
||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||
@ -373,16 +343,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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
|
||||
|
||||
|
||||
|
@ -265,17 +265,9 @@ eval(const XprVector<E1, Sz>& e1, const XprVector<E2, Sz>& e2, POD x3) { \
|
||||
|
||||
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(double)
|
||||
|
||||
#if defined(TVMET_HAVE_LONG_DOUBLE)
|
||||
TVMET_IMPLEMENT_MACRO(long double)
|
||||
#endif // defined(TVMET_HAVE_LONG_DOUBLE)
|
||||
|
||||
#undef TVMET_IMPLEMENT_MACRO
|
||||
|
||||
|
||||
|
@ -126,13 +126,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
||||
TVMET_DECLARE_MACRO(mul, 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(sub, float)
|
||||
TVMET_DECLARE_MACRO(mul, float)
|
||||
@ -143,13 +136,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
||||
TVMET_DECLARE_MACRO(mul, 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
|
||||
|
||||
|
||||
@ -431,13 +417,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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(sub, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||
@ -448,13 +427,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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
|
||||
|
||||
|
||||
|
@ -162,13 +162,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_DECLARE_MACRO(mul, *, float)
|
||||
@ -179,13 +172,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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
|
||||
|
||||
|
||||
@ -408,13 +394,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||
@ -425,13 +404,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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
|
||||
|
||||
|
||||
|
@ -13,14 +13,6 @@
|
||||
/* Define if the compiler supports IEEE math library */
|
||||
#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 */
|
||||
#cmakedefine TVMET_HAVE_SYSV_MATH
|
||||
|
||||
|
@ -85,16 +85,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
||||
TVMET_DECLARE_MACRO(yn, 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(drem, float)
|
||||
TVMET_DECLARE_MACRO(fmod, float)
|
||||
@ -111,16 +101,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
||||
TVMET_DECLARE_MACRO(yn, 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
|
||||
|
||||
|
||||
@ -230,16 +210,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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(drem, float)
|
||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||
@ -256,16 +226,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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
|
||||
|
||||
|
||||
|
@ -108,13 +108,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
||||
TVMET_DECLARE_MACRO(mul, 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(sub, float)
|
||||
TVMET_DECLARE_MACRO(mul, float)
|
||||
@ -125,13 +118,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
||||
TVMET_DECLARE_MACRO(mul, 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
|
||||
|
||||
|
||||
@ -403,13 +389,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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(sub, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||
@ -420,13 +399,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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
|
||||
|
||||
|
||||
|
@ -103,13 +103,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_DECLARE_MACRO(mul, *, float)
|
||||
@ -120,13 +113,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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
|
||||
|
||||
|
||||
@ -330,13 +316,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||
@ -347,13 +326,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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
|
||||
|
||||
|
||||
|
@ -88,16 +88,6 @@ TVMET_DECLARE_MACRO(jn, int)
|
||||
TVMET_DECLARE_MACRO(yn, 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(drem, float)
|
||||
TVMET_DECLARE_MACRO(fmod, float)
|
||||
@ -114,16 +104,6 @@ TVMET_DECLARE_MACRO(jn, double)
|
||||
TVMET_DECLARE_MACRO(yn, 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
|
||||
|
||||
|
||||
@ -233,16 +213,6 @@ TVMET_IMPLEMENT_MACRO(jn, int)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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(drem, float)
|
||||
TVMET_IMPLEMENT_MACRO(fmod, float)
|
||||
@ -259,16 +229,6 @@ TVMET_IMPLEMENT_MACRO(jn, double)
|
||||
TVMET_IMPLEMENT_MACRO(yn, 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
|
||||
|
||||
|
||||
|
@ -102,13 +102,6 @@ TVMET_DECLARE_MACRO(sub, int)
|
||||
TVMET_DECLARE_MACRO(mul, 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(sub, float)
|
||||
TVMET_DECLARE_MACRO(mul, float)
|
||||
@ -119,13 +112,6 @@ TVMET_DECLARE_MACRO(sub, double)
|
||||
TVMET_DECLARE_MACRO(mul, 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
|
||||
|
||||
|
||||
@ -344,13 +330,6 @@ TVMET_IMPLEMENT_MACRO(sub, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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(sub, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, float)
|
||||
@ -361,13 +340,6 @@ TVMET_IMPLEMENT_MACRO(sub, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, 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
|
||||
|
||||
|
||||
|
@ -102,13 +102,6 @@ TVMET_DECLARE_MACRO(sub, -, int)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_DECLARE_MACRO(mul, *, float)
|
||||
@ -119,13 +112,6 @@ TVMET_DECLARE_MACRO(sub, -, double)
|
||||
TVMET_DECLARE_MACRO(mul, *, 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
|
||||
|
||||
|
||||
@ -276,13 +262,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, int)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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(sub, -, float)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, float)
|
||||
@ -293,13 +272,6 @@ TVMET_IMPLEMENT_MACRO(sub, -, double)
|
||||
TVMET_IMPLEMENT_MACRO(mul, *, 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
|
||||
|
||||
|
||||
|
@ -53,10 +53,8 @@ template<typename T> static void basics2()
|
||||
2,5,8,
|
||||
3,6,9;
|
||||
|
||||
// all elements of v1 should increase
|
||||
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) &&
|
||||
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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user