30 #error "This file is intended for include from utils_defs.h only!"
64 template <
class MATRIXLIKE>
65 inline size_t size(
const MATRIXLIKE& m,
int dim )
67 if (dim==1)
return m.getRowCount();
68 else if (dim==2)
return m.getColCount();
86 inline double DEG2RAD(
const double x) {
return x*
M_PI/180.0; }
92 inline double RAD2DEG(
const double x) {
return x*180.0/
M_PI; }
96 # ifdef HAVE_LONG_DOUBLE
98 inline long double DEG2RAD(
const long double x) {
return x*M_PIl/180.0; }
100 inline long double RAD2DEG(
const long double x) {
return x*180.0/M_PIl; }
104 template <
typename T>
105 inline int sign(T x) {
return x<0 ? -1:1; }
108 template <
typename T>
112 template <
typename T>
116 __m128d
t = _mm_set_sd( value );
117 return _mm_cvtsd_si32(t);
118 #elif (defined WIN32 || defined _WIN32) && !defined WIN64 && !defined _WIN64 && defined _MSC_VER
126 #elif defined HAVE_LRINT || defined __GNUC__
127 return static_cast<int>(lrint(value));
129 return static_cast<int>(value + 0.5);
134 template <
typename T>
137 #if MRPT_HAS_SSE2 && MRPT_WORD_SIZE==64
138 __m128d
t = _mm_set_sd( value );
139 return _mm_cvtsd_si64(t);
140 #elif (defined WIN32 || defined _WIN32) && !defined WIN64 && !defined _WIN64 && defined _MSC_VER
148 #elif defined HAVE_LRINT || defined __GNUC__
151 return static_cast<long>(value + 0.5);
156 template <
typename T>
157 inline int fix(T x) {
return x>0 ?
static_cast<int>(floor(static_cast<double>(x))) : static_cast<int>(ceil(static_cast<double>(x))) ; }
161 inline T
square(
const T x) {
return x*x; }
164 template <
class R,
class P>
168 template <
class R,
class P>
174 uint8_t *ptr =
reinterpret_cast<uint8_t*
>(&v_in_out);
175 std::reverse(ptr,ptr+
sizeof(T));
187 template <
typename T,
typename K>
189 if (test_val<var) var = test_val;
193 template <
typename T,
typename K>
195 if (test_val>var) var = test_val;