14 #if defined(EIGEN_GPU_COMPILE_PHASE) 18 #if defined(EIGEN_CUDA_ARCH) 22 #if defined(EIGEN_HIP_DEVICE_COMPILE) 29 #define EIGEN_ICC_NEEDS_CSTDINT (EIGEN_COMP_ICC>=1600 && EIGEN_COMP_CXXVER >= 11) 32 #if EIGEN_HAS_CXX11 || EIGEN_ICC_NEEDS_CSTDINT 87 #if EIGEN_ICC_NEEDS_CSTDINT 94 #undef EIGEN_ICC_NEEDS_CSTDINT 99 template<
bool Condition>
108 template<
bool Condition,
typename Then,
typename Else>
111 template<
typename Then,
typename Else>
148 template<
typename T,
typename U>
struct is_same {
enum {
value = 0 }; };
157 using std::is_integral;
177 using std::make_unsigned;
193 template<>
struct make_unsigned<signed __int64> {
typedef unsigned __int64
type; };
194 template<>
struct make_unsigned<unsigned __int64> {
typedef unsigned __int64
type; };
202 #if EIGEN_OS_MAC || EIGEN_COMP_MINGW 203 template<>
struct make_unsigned<unsigned long long> {
typedef unsigned long long type; };
222 using std::is_convertible;
226 template<
typename From,
typename To>
246 #ifdef __INTEL_COMPILER 248 #pragma warning ( disable : 2259 ) 250 enum {
value =
sizeof(test<To>(*ms_from, 0))==
sizeof(
yes) };
251 #ifdef __INTEL_COMPILER 256 template<
typename From,
typename To>
273 template<
bool Condition,
typename T=
void>
struct enable_if;
278 #if defined(EIGEN_GPU_COMPILE_PHASE) && !EIGEN_HAS_CXX11 279 #if !defined(__FLT_EPSILON__) 280 #define __FLT_EPSILON__ FLT_EPSILON 281 #define __DBL_EPSILON__ DBL_EPSILON 286 template<
typename T>
struct numeric_limits
290 static T (
max)() { assert(
false &&
"Highest not supported for this type"); }
291 static T (
min)() { assert(
false &&
"Lowest not supported for this type"); }
292 static T infinity() { assert(
false &&
"Infinity not supported for this type"); }
293 static T quiet_NaN() { assert(
false &&
"quiet_NaN not supported for this type"); }
295 template<>
struct numeric_limits<float>
298 static float epsilon() {
return __FLT_EPSILON__; }
301 #if defined(EIGEN_CUDA_ARCH) 302 return CUDART_MAX_NORMAL_F;
308 static float (
min)() {
return FLT_MIN; }
310 static float infinity() {
311 #if defined(EIGEN_CUDA_ARCH) 318 static float quiet_NaN() {
319 #if defined(EIGEN_CUDA_ARCH) 326 template<>
struct numeric_limits<double>
329 static double epsilon() {
return __DBL_EPSILON__; }
331 static double (
max)() {
return DBL_MAX; }
333 static double (
min)() {
return DBL_MIN; }
335 static double infinity() {
336 #if defined(EIGEN_CUDA_ARCH) 343 static double quiet_NaN() {
344 #if defined(EIGEN_CUDA_ARCH) 351 template<>
struct numeric_limits<int>
354 static int epsilon() {
return 0; }
356 static int (
max)() {
return INT_MAX; }
358 static int (
min)() {
return INT_MIN; }
360 template<>
struct numeric_limits<unsigned int>
363 static unsigned int epsilon() {
return 0; }
365 static unsigned int (
max)() {
return UINT_MAX; }
367 static unsigned int (
min)() {
return 0; }
369 template<>
struct numeric_limits<long>
372 static long epsilon() {
return 0; }
374 static long (
max)() {
return LONG_MAX; }
376 static long (
min)() {
return LONG_MIN; }
378 template<>
struct numeric_limits<unsigned long>
381 static unsigned long epsilon() {
return 0; }
383 static unsigned long (
max)() {
return ULONG_MAX; }
385 static unsigned long (
min)() {
return 0; }
387 template<>
struct numeric_limits<long long>
390 static long long epsilon() {
return 0; }
392 static long long (
max)() {
return LLONG_MAX; }
394 static long long (
min)() {
return LLONG_MIN; }
396 template<>
struct numeric_limits<unsigned long long>
399 static unsigned long long epsilon() {
return 0; }
401 static unsigned long long (
max)() {
return ULLONG_MAX; }
403 static unsigned long long (
min)() {
return 0; }
405 template<>
struct numeric_limits<bool>
408 static bool epsilon() {
return false; }
410 static bool (
max)() {
return true; }
412 static bool (
min)() {
return false; }
417 #endif // defined(EIGEN_GPU_COMPILE_PHASE) && !EIGEN_HAS_CXX11 445 template<
typename T,
typename EnableIf =
void>
struct array_size {
450 enum {
value = T::SizeAtCompileTime };
461 template<
typename T, std::
size_t N>
struct array_size<const std::
array<T,N> > {
464 template<
typename T, std::
size_t N>
struct array_size<std::
array<T,N> > {
481 template<
typename T,std::
size_t N>
499 #if EIGEN_HAS_STD_INVOKE_RESULT 502 template<
typename F,
typename... ArgTypes>
504 typedef typename std::invoke_result<
F, ArgTypes...>
::type type1;
507 #elif EIGEN_HAS_STD_RESULT_OF 519 template<
typename Func,
int SizeOf>
522 template<
typename Func>
525 template<
typename Func>
528 template<
typename Func>
537 enum {FunctorType =
sizeof(testFunctor(static_cast<Func*>(0)))};
541 template<
typename Func,
typename ArgType,
int SizeOf=sizeof(has_none)>
544 template<
typename Func,
typename ArgType>
547 template<
typename Func,
typename ArgType>
550 template<
typename Func,
typename ArgType>
559 enum {FunctorType =
sizeof(testFunctor(static_cast<Func*>(0)))};
563 template<
typename Func,
typename ArgType0,
typename ArgType1,
int SizeOf=sizeof(has_none)>
566 template<
typename Func,
typename ArgType0,
typename ArgType1>
568 {
typedef typename Func::result_type
type;};
570 template<
typename Func,
typename ArgType0,
typename ArgType1>
574 template<
typename Func,
typename ArgType0,
typename ArgType1>
583 enum {FunctorType =
sizeof(testFunctor(static_cast<Func*>(0)))};
587 template<
typename Func,
typename ArgType0,
typename ArgType1,
typename ArgType2,
int SizeOf=sizeof(has_none)>
590 template<
typename Func,
typename ArgType0,
typename ArgType1,
typename ArgType2>
592 {
typedef typename Func::result_type
type;};
594 template<
typename Func,
typename ArgType0,
typename ArgType1,
typename ArgType2>
598 template<
typename Func,
typename ArgType0,
typename ArgType1,
typename ArgType2>
607 enum {FunctorType =
sizeof(testFunctor(static_cast<Func*>(0)))};
613 #if EIGEN_HAS_STD_INVOKE_RESULT 614 template<
typename F,
typename... ArgTypes>
616 typedef typename std::invoke_result<
F, ArgTypes...>
::type type1;
619 #elif EIGEN_HAS_CXX11 620 template<
typename F,
typename... ArgTypes>
626 template<
typename F,
typename ArgType0 =
void,
typename ArgType1 =
void,
typename ArgType2 =
void>
638 template<
typename F,
typename ArgType0>
644 template<
typename F,
typename ArgType0,
typename ArgType1>
655 template <
typename T>
658 template <
typename C>
static meta_yes testFunctor(
C const *,
typename C::ReturnType
const * = 0);
659 template <
typename C>
static meta_no testFunctor(...);
666 template <
typename T,
typename IndexType=Index>
669 template <
typename C>
static meta_yes testFunctor(
C const *,
typename enable_if<(
sizeof(return_ptr<C>()->
operator()())>0)>::
type * = 0);
670 static meta_no testFunctor(...);
672 enum {
value =
sizeof(testFunctor(static_cast<T*>(0))) ==
sizeof(
meta_yes) };
675 template <
typename T,
typename IndexType=Index>
678 template <
typename C>
static meta_yes testFunctor(
C const *,
typename enable_if<(
sizeof(return_ptr<C>()->
operator()(IndexType(0)))>0)>::
type * = 0);
679 static meta_no testFunctor(...);
681 enum {
value =
sizeof(testFunctor(static_cast<T*>(0))) ==
sizeof(
meta_yes) };
684 template <
typename T,
typename IndexType=Index>
687 template <
typename C>
static meta_yes testFunctor(
C const *,
typename enable_if<(
sizeof(return_ptr<C>()->
operator()(IndexType(0),IndexType(0)))>0)>::
type * = 0);
688 static meta_no testFunctor(...);
690 enum {
value =
sizeof(testFunctor(static_cast<T*>(0))) ==
sizeof(
meta_yes) };
698 int SupX = ((Y==1) ? 1 : Y/2),
699 bool Done = ((SupX-InfX)<=1 ?
true : ((SupX*SupX <= Y) && ((SupX+1)*(SupX+1) >
Y))) >
704 MidX = (InfX+SupX)/2,
705 TakeInf = MidX*MidX > Y ? 1 : 0,
706 NewInf =
int(TakeInf) ? InfX :
int(MidX),
707 NewSup =
int(TakeInf) ?
int(MidX) : SupX
713 template<
int Y,
int InfX,
int SupX>
714 class meta_sqrt<Y, InfX, SupX, true> {
public:
enum {
ret = (SupX*SupX <=
Y) ? SupX : InfX }; };
720 template<
int A,
int B,
int K=1,
bool Done = ((A*K)%B)==0,
bool Big=(A>=
B)>
725 template<
int A,
int B,
int K,
bool Done>
730 template<
int A,
int B,
int K>
740 enum { Defined = 0 };
752 template<
unsigned Len,
unsigned Align>
755 EIGEN_ALIGN_TO_BOUNDARY(
Align)
unsigned char data[Len];
763 #if defined(EIGEN_GPU_COMPILE_PHASE) 769 #if defined(EIGEN_GPU_COMPILE_PHASE) && !EIGEN_HAS_CXX11 770 using internal::device::numeric_limits;
772 using std::numeric_limits;
789 #if !defined(EIGEN_GPU_COMPILE_PHASE) || (!defined(EIGEN_CUDA_ARCH) && defined(EIGEN_CONSTEXPR_ARE_DEVICE_FUNC)) 791 bool equal_strict(
const float&
x,
const float&
y) {
return std::equal_to<float>()(x,y); }
794 bool equal_strict(
const double&
x,
const double&
y) {
return std::equal_to<double>()(x,y); }
800 #if !defined(EIGEN_GPU_COMPILE_PHASE) || (!defined(EIGEN_CUDA_ARCH) && defined(EIGEN_CONSTEXPR_ARE_DEVICE_FUNC)) 812 #endif // EIGEN_META_H
nullary_result_of_select< Func, FunctorType >::type type
#define EIGEN_DEFAULT_DENSE_INDEX_TYPE
#define EIGEN_STRONG_INLINE
remove_all< T >::type type
EIGEN_DEVICE_FUNC ~noncopyable()
Func::template result< Func(ArgType)>::type type
Func::template result< Func(ArgType0, ArgType1)>::type type
static internal::remove_reference< From >::type * ms_from
remove_all< T >::type type
EIGEN_DEVICE_FUNC const Scalar & x
Namespace containing all symbols from the Eigen library.
static Cal3_S2 K(500, 500, 0.1, 640/2, 480/2)
CleanedUpDerType< DerType >::type() max(const AutoDiffScalar< DerType > &x, const T &y)
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool not_equal_strict(const X &x, const Y &y)
EIGEN_DEVICE_FUNC T div_ceil(const T &a, const T &b)
Func::template result< Func()>::type type
remove_all< type1 >::type type
remove_all< T >::type type
result_of< F(ArgType0, ArgType1)>::type type1
result_of< F()>::type type1
remove_all< type1 >::type type
EIGEN_STRONG_INLINE void swap(T &a, T &b)
EIGEN_DEVICE_FUNC const Scalar & y
remove_all< T >::type type
EIGEN_CONSTEXPR Index size(const T(&) [N])
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
unsigned __int64 uint64_t
Eigen::Triplet< double > T
ternary_result_of_select< Func, ArgType0, ArgType1, ArgType2, FunctorType >::type type
Func::template result< Func(ArgType0, ArgType1, ArgType2)>::type type
#define HIPRT_MAX_NORMAL_F
void swap(GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &a, GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &b)
_W64 unsigned int uintptr_t
EIGEN_DEVICE_FUNC noncopyable()
Matrix< Scalar, Dynamic, Dynamic > C
CleanedUpDerType< DerType >::type() min(const AutoDiffScalar< DerType > &x, const T &y)
unary_result_of_select< Func, ArgType, FunctorType >::type type
#define EIGEN_DEVICE_FUNC
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
internal::remove_all< ArgType0 >::type type
internal::remove_all< ArgType >::type type
void test(OptionalJacobian< 2, 3 > H={})
remove_all< type1 >::type type
result_of< F(ArgType0, ArgType1, ArgType2)>::type type1
remove_all< type1 >::type type
remove_all< T >::type type
binary_result_of_select< Func, ArgType0, ArgType1, FunctorType >::type type
EIGEN_DEVICE_FUNC const Scalar & b
internal::remove_all< ArgType0 >::type type
result_of< F(ArgType0)>::type type1
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool equal_strict(const X &x, const Y &y)
static Similarity2 Align(const Point2Pairs &d_abPointPairs, const Rot2 &aRb, const Point2Pair ¢roids)
This method estimates the similarity transform from differences point pairs, given a known or estimat...