11 #ifndef EIGEN_MACROS_H 12 #define EIGEN_MACROS_H 14 #define EIGEN_WORLD_VERSION 3 15 #define EIGEN_MAJOR_VERSION 3 16 #define EIGEN_MINOR_VERSION 9 18 #define EIGEN_VERSION_AT_LEAST(x,y,z) (EIGEN_WORLD_VERSION>x || (EIGEN_WORLD_VERSION>=x && \ 19 (EIGEN_MAJOR_VERSION>y || (EIGEN_MAJOR_VERSION>=y && \ 20 EIGEN_MINOR_VERSION>=z)))) 26 #define EIGEN_COMP_GNUC 1 28 #define EIGEN_COMP_GNUC 0 32 #if defined(__clang__) 33 #define EIGEN_COMP_CLANG (__clang_major__*100+__clang_minor__) 35 #define EIGEN_COMP_CLANG 0 39 #if defined(__castxml__) 40 #define EIGEN_COMP_CASTXML 1 42 #define EIGEN_COMP_CASTXML 0 47 #define EIGEN_COMP_LLVM 1 49 #define EIGEN_COMP_LLVM 0 53 #if defined(__INTEL_COMPILER) 54 #define EIGEN_COMP_ICC __INTEL_COMPILER 56 #define EIGEN_COMP_ICC 0 60 #if defined(__MINGW32__) 61 #define EIGEN_COMP_MINGW 1 63 #define EIGEN_COMP_MINGW 0 67 #if defined(__SUNPRO_CC) 68 #define EIGEN_COMP_SUNCC 1 70 #define EIGEN_COMP_SUNCC 0 75 #define EIGEN_COMP_MSVC _MSC_VER 77 #define EIGEN_COMP_MSVC 0 90 #if EIGEN_COMP_MSVC && !(EIGEN_COMP_ICC || EIGEN_COMP_LLVM || EIGEN_COMP_CLANG) 91 #define EIGEN_COMP_MSVC_STRICT _MSC_VER 93 #define EIGEN_COMP_MSVC_STRICT 0 97 #if defined(__IBMCPP__) || defined(__xlc__) 98 #define EIGEN_COMP_IBM 1 100 #define EIGEN_COMP_IBM 0 105 #define EIGEN_COMP_PGI 1 107 #define EIGEN_COMP_PGI 0 111 #if defined(__CC_ARM) || defined(__ARMCC_VERSION) 112 #define EIGEN_COMP_ARM 1 114 #define EIGEN_COMP_ARM 0 118 #if defined(__EMSCRIPTEN__) 119 #define EIGEN_COMP_EMSCRIPTEN 1 121 #define EIGEN_COMP_EMSCRIPTEN 0 126 #if EIGEN_COMP_GNUC && !(EIGEN_COMP_CLANG || EIGEN_COMP_ICC || EIGEN_COMP_MINGW || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM || EIGEN_COMP_EMSCRIPTEN) 127 #define EIGEN_COMP_GNUC_STRICT 1 129 #define EIGEN_COMP_GNUC_STRICT 0 134 #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__==x && __GNUC_MINOR__>=y) || __GNUC__>x) 135 #define EIGEN_GNUC_AT_MOST(x,y) ((__GNUC__==x && __GNUC_MINOR__<=y) || __GNUC__<x) 136 #define EIGEN_GNUC_AT(x,y) ( __GNUC__==x && __GNUC_MINOR__==y ) 138 #define EIGEN_GNUC_AT_LEAST(x,y) 0 139 #define EIGEN_GNUC_AT_MOST(x,y) 0 140 #define EIGEN_GNUC_AT(x,y) 0 144 #if EIGEN_COMP_GNUC && (__GNUC__ <= 3) 145 #define EIGEN_GCC3_OR_OLDER 1 147 #define EIGEN_GCC3_OR_OLDER 0 153 #if defined(__x86_64__) || defined(_M_X64) || defined(__amd64) 154 #define EIGEN_ARCH_x86_64 1 156 #define EIGEN_ARCH_x86_64 0 159 #if defined(__i386__) || defined(_M_IX86) || defined(_X86_) || defined(__i386) 160 #define EIGEN_ARCH_i386 1 162 #define EIGEN_ARCH_i386 0 165 #if EIGEN_ARCH_x86_64 || EIGEN_ARCH_i386 166 #define EIGEN_ARCH_i386_OR_x86_64 1 168 #define EIGEN_ARCH_i386_OR_x86_64 0 173 #define EIGEN_ARCH_ARM 1 175 #define EIGEN_ARCH_ARM 0 179 #if defined(__aarch64__) 180 #define EIGEN_ARCH_ARM64 1 182 #define EIGEN_ARCH_ARM64 0 185 #if EIGEN_ARCH_ARM || EIGEN_ARCH_ARM64 186 #define EIGEN_ARCH_ARM_OR_ARM64 1 188 #define EIGEN_ARCH_ARM_OR_ARM64 0 192 #if defined(__mips__) || defined(__mips) 193 #define EIGEN_ARCH_MIPS 1 195 #define EIGEN_ARCH_MIPS 0 199 #if defined(__sparc__) || defined(__sparc) 200 #define EIGEN_ARCH_SPARC 1 202 #define EIGEN_ARCH_SPARC 0 206 #if defined(__ia64__) 207 #define EIGEN_ARCH_IA64 1 209 #define EIGEN_ARCH_IA64 0 213 #if defined(__powerpc__) || defined(__ppc__) || defined(_M_PPC) 214 #define EIGEN_ARCH_PPC 1 216 #define EIGEN_ARCH_PPC 0 224 #if defined(__unix__) || defined(__unix) 225 #define EIGEN_OS_UNIX 1 227 #define EIGEN_OS_UNIX 0 231 #if defined(__linux__) 232 #define EIGEN_OS_LINUX 1 234 #define EIGEN_OS_LINUX 0 239 #if defined(__ANDROID__) || defined(ANDROID) 240 #define EIGEN_OS_ANDROID 1 242 #define EIGEN_OS_ANDROID 0 246 #if defined(__gnu_linux__) && !(EIGEN_OS_ANDROID) 247 #define EIGEN_OS_GNULINUX 1 249 #define EIGEN_OS_GNULINUX 0 253 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__) 254 #define EIGEN_OS_BSD 1 256 #define EIGEN_OS_BSD 0 260 #if defined(__APPLE__) 261 #define EIGEN_OS_MAC 1 263 #define EIGEN_OS_MAC 0 268 #define EIGEN_OS_QNX 1 270 #define EIGEN_OS_QNX 0 275 #define EIGEN_OS_WIN 1 277 #define EIGEN_OS_WIN 0 282 #define EIGEN_OS_WIN64 1 284 #define EIGEN_OS_WIN64 0 288 #if defined(_WIN32_WCE) 289 #define EIGEN_OS_WINCE 1 291 #define EIGEN_OS_WINCE 0 295 #if defined(__CYGWIN__) 296 #define EIGEN_OS_CYGWIN 1 298 #define EIGEN_OS_CYGWIN 0 302 #if EIGEN_OS_WIN && !( EIGEN_OS_WINCE || EIGEN_OS_CYGWIN ) 303 #define EIGEN_OS_WIN_STRICT 1 305 #define EIGEN_OS_WIN_STRICT 0 309 #if (defined(sun) || defined(__sun)) && !(defined(__SVR4) || defined(__svr4__)) 310 #define EIGEN_OS_SUN 1 312 #define EIGEN_OS_SUN 0 316 #if (defined(sun) || defined(__sun)) && (defined(__SVR4) || defined(__svr4__)) 317 #define EIGEN_OS_SOLARIS 1 319 #define EIGEN_OS_SOLARIS 0 324 #if EIGEN_GNUC_AT_MOST(4,3) && !EIGEN_COMP_CLANG 326 #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 0 328 #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 1 333 #define EIGEN_NOT_A_MACRO 335 #ifdef EIGEN_DEFAULT_TO_ROW_MAJOR 336 #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::RowMajor 338 #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::ColMajor 341 #ifndef EIGEN_DEFAULT_DENSE_INDEX_TYPE 342 #define EIGEN_DEFAULT_DENSE_INDEX_TYPE std::ptrdiff_t 347 # define EIGEN_HAS_BUILTIN(x) __has_builtin(x) 349 # define EIGEN_HAS_BUILTIN(x) 0 354 #ifndef __has_feature 355 # define __has_feature(x) 0 361 #ifndef EIGEN_MAX_CPP_VER 362 #define EIGEN_MAX_CPP_VER 99 365 #if EIGEN_MAX_CPP_VER>=11 && (defined(__cplusplus) && (__cplusplus >= 201103L) || EIGEN_COMP_MSVC >= 1900) 366 #define EIGEN_HAS_CXX11 1 368 #define EIGEN_HAS_CXX11 0 373 #ifndef EIGEN_HAS_RVALUE_REFERENCES 374 #if EIGEN_MAX_CPP_VER>=11 && \ 375 (__has_feature(cxx_rvalue_references) || \ 376 (defined(__cplusplus) && __cplusplus >= 201103L) || \ 377 (EIGEN_COMP_MSVC >= 1600)) 378 #define EIGEN_HAS_RVALUE_REFERENCES 1 380 #define EIGEN_HAS_RVALUE_REFERENCES 0 385 #ifndef EIGEN_HAS_C99_MATH 386 #if EIGEN_MAX_CPP_VER>=11 && \ 387 ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) \ 388 || (defined(__GNUC__) && defined(_GLIBCXX_USE_C99)) \ 389 || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER)) \ 390 || (EIGEN_COMP_MSVC >= 1900) ) 391 #define EIGEN_HAS_C99_MATH 1 393 #define EIGEN_HAS_C99_MATH 0 398 #ifndef EIGEN_HAS_STD_RESULT_OF 399 #if EIGEN_MAX_CPP_VER>=11 && ((__has_feature(cxx_lambdas) || (defined(__cplusplus) && __cplusplus >= 201103L))) 400 #define EIGEN_HAS_STD_RESULT_OF 1 402 #define EIGEN_HAS_STD_RESULT_OF 0 409 #ifndef EIGEN_HAS_TYPE_TRAITS 410 #if EIGEN_MAX_CPP_VER>=11 && (EIGEN_HAS_CXX11 || EIGEN_COMP_MSVC >= 1700) \ 411 && ((!EIGEN_COMP_GNUC_STRICT) || EIGEN_GNUC_AT_LEAST(5, 1)) \ 412 && ((!defined(__GLIBCXX__)) || __GLIBCXX__ > 20150626) 413 #define EIGEN_HAS_TYPE_TRAITS 1 414 #define EIGEN_INCLUDE_TYPE_TRAITS 416 #define EIGEN_HAS_TYPE_TRAITS 0 421 #ifndef EIGEN_HAS_VARIADIC_TEMPLATES 422 #if EIGEN_MAX_CPP_VER>=11 && (__cplusplus > 199711L || EIGEN_COMP_MSVC >= 1900) \ 423 && (!defined(__NVCC__) || !EIGEN_ARCH_ARM_OR_ARM64 || (EIGEN_CUDACC_VER >= 80000) ) 426 #define EIGEN_HAS_VARIADIC_TEMPLATES 1 428 #define EIGEN_HAS_VARIADIC_TEMPLATES 0 433 #ifndef EIGEN_HAS_CONSTEXPR 437 #if EIGEN_MAX_CPP_VER>=14 && (__cplusplus > 199711L && (EIGEN_COMP_CLANG || EIGEN_CUDACC_VER >= 70500)) 438 #define EIGEN_HAS_CONSTEXPR 1 440 #elif EIGEN_MAX_CPP_VER>=14 && (__has_feature(cxx_relaxed_constexpr) || (defined(__cplusplus) && __cplusplus >= 201402L) || \ 441 (EIGEN_GNUC_AT_LEAST(4,8) && (__cplusplus > 199711L))) 442 #define EIGEN_HAS_CONSTEXPR 1 445 #ifndef EIGEN_HAS_CONSTEXPR 446 #define EIGEN_HAS_CONSTEXPR 0 453 #ifndef EIGEN_HAS_CXX11_MATH 454 #if EIGEN_MAX_CPP_VER>=11 && ((__cplusplus > 201103L) || (__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC) \ 455 && (EIGEN_ARCH_i386_OR_x86_64) && (EIGEN_OS_GNULINUX || EIGEN_OS_WIN_STRICT || EIGEN_OS_MAC)) 456 #define EIGEN_HAS_CXX11_MATH 1 458 #define EIGEN_HAS_CXX11_MATH 0 463 #ifndef EIGEN_HAS_CXX11_CONTAINERS 464 #if EIGEN_MAX_CPP_VER>=11 && \ 465 ((__cplusplus > 201103L) \ 466 || ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_ICC>=1400)) \ 467 || EIGEN_COMP_MSVC >= 1900) 468 #define EIGEN_HAS_CXX11_CONTAINERS 1 470 #define EIGEN_HAS_CXX11_CONTAINERS 0 475 #ifndef EIGEN_HAS_CXX11_NOEXCEPT 476 #if EIGEN_MAX_CPP_VER>=11 && \ 477 (__has_feature(cxx_noexcept) \ 478 || (__cplusplus > 201103L) \ 479 || ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_ICC>=1400)) \ 480 || EIGEN_COMP_MSVC >= 1900) 481 #define EIGEN_HAS_CXX11_NOEXCEPT 1 483 #define EIGEN_HAS_CXX11_NOEXCEPT 0 492 #ifndef EIGEN_FAST_MATH 493 #define EIGEN_FAST_MATH 1 496 #define EIGEN_DEBUG_VAR(x) std::cerr << #x << " = " << x << std::endl; 499 #define EIGEN_CAT2(a,b) a ## b 500 #define EIGEN_CAT(a,b) EIGEN_CAT2(a,b) 502 #define EIGEN_COMMA , 505 #define EIGEN_MAKESTRING2(a) #a 506 #define EIGEN_MAKESTRING(a) EIGEN_MAKESTRING2(a) 511 #ifndef EIGEN_STRONG_INLINE 512 #if EIGEN_COMP_MSVC || EIGEN_COMP_ICC 513 #define EIGEN_STRONG_INLINE __forceinline 515 #define EIGEN_STRONG_INLINE inline 527 #if EIGEN_GNUC_AT_LEAST(4,2) 528 #define EIGEN_ALWAYS_INLINE __attribute__((always_inline)) inline 530 #define EIGEN_ALWAYS_INLINE EIGEN_STRONG_INLINE 534 #define EIGEN_DONT_INLINE __attribute__((noinline)) 535 #elif EIGEN_COMP_MSVC 536 #define EIGEN_DONT_INLINE __declspec(noinline) 538 #define EIGEN_DONT_INLINE 542 #define EIGEN_PERMISSIVE_EXPR __extension__ 544 #define EIGEN_PERMISSIVE_EXPR 551 #define EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 552 #define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS inline 555 # ifndef EIGEN_NO_DEBUG 556 # define EIGEN_NO_DEBUG 561 #ifdef EIGEN_NO_DEBUG 562 #define eigen_plain_assert(x) 564 #if EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 567 inline bool copy_bool(
bool b) {
return b; }
570 #define eigen_plain_assert(x) assert(x) 581 EIGEN_DONT_INLINE
bool copy_bool(
bool b) {
return b; }
583 inline void assert_fail(
const char *condition,
const char *
function,
const char *file,
int line)
585 std::cerr <<
"assertion failed: " << condition <<
" in function " <<
function <<
" at " << file <<
":" << line << std::endl;
590 #define eigen_plain_assert(x) \ 592 if(!Eigen::internal::copy_bool(x)) \ 593 Eigen::internal::assert_fail(EIGEN_MAKESTRING(x), __PRETTY_FUNCTION__, __FILE__, __LINE__); \ 600 #define eigen_assert(x) eigen_plain_assert(x) 603 #ifdef EIGEN_INTERNAL_DEBUGGING 604 #define eigen_internal_assert(x) eigen_assert(x) 606 #define eigen_internal_assert(x) 609 #ifdef EIGEN_NO_DEBUG 610 #define EIGEN_ONLY_USED_FOR_DEBUG(x) EIGEN_UNUSED_VARIABLE(x) 612 #define EIGEN_ONLY_USED_FOR_DEBUG(x) 615 #ifndef EIGEN_NO_DEPRECATED_WARNING 617 #define EIGEN_DEPRECATED __attribute__((deprecated)) 618 #elif EIGEN_COMP_MSVC 619 #define EIGEN_DEPRECATED __declspec(deprecated) 621 #define EIGEN_DEPRECATED 624 #define EIGEN_DEPRECATED 628 #define EIGEN_UNUSED __attribute__((unused)) 636 template<
typename T> EIGEN_DEVICE_FUNC
void ignore_unused_variable(
const T&) {}
639 #define EIGEN_UNUSED_VARIABLE(var) Eigen::internal::ignore_unused_variable(var); 641 #if !defined(EIGEN_ASM_COMMENT) 642 #if EIGEN_COMP_GNUC && (EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64) 643 #define EIGEN_ASM_COMMENT(X) __asm__("#" X) 645 #define EIGEN_ASM_COMMENT(X) 670 #if (defined __CUDACC__) 671 #define EIGEN_ALIGN_TO_BOUNDARY(n) __align__(n) 672 #elif EIGEN_COMP_GNUC || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM 673 #define EIGEN_ALIGN_TO_BOUNDARY(n) __attribute__((aligned(n))) 674 #elif EIGEN_COMP_MSVC 675 #define EIGEN_ALIGN_TO_BOUNDARY(n) __declspec(align(n)) 676 #elif EIGEN_COMP_SUNCC 678 #define EIGEN_ALIGN_TO_BOUNDARY(n) __attribute__((aligned(n))) 680 #error Please tell me what is the equivalent of __attribute__((aligned(n))) for your compiler 684 #if defined(EIGEN_DONT_VECTORIZE) 685 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 0 686 #elif defined(EIGEN_VECTORIZE_AVX512) 688 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 64 689 #elif defined(__AVX__) 691 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 32 693 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 16 698 #define EIGEN_MIN_ALIGN_BYTES 16 704 #if (defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN)) && defined(EIGEN_MAX_STATIC_ALIGN_BYTES) && EIGEN_MAX_STATIC_ALIGN_BYTES>0 705 #error EIGEN_MAX_STATIC_ALIGN_BYTES and EIGEN_DONT_ALIGN[_STATICALLY] are both defined with EIGEN_MAX_STATIC_ALIGN_BYTES!=0. Use EIGEN_MAX_STATIC_ALIGN_BYTES=0 as a synonym of EIGEN_DONT_ALIGN_STATICALLY. 710 #if defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN) 711 #ifdef EIGEN_MAX_STATIC_ALIGN_BYTES 712 #undef EIGEN_MAX_STATIC_ALIGN_BYTES 714 #define EIGEN_MAX_STATIC_ALIGN_BYTES 0 717 #ifndef EIGEN_MAX_STATIC_ALIGN_BYTES 727 #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_IA64) 728 #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1 729 #elif EIGEN_ARCH_ARM_OR_ARM64 && EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_MOST(4, 6) 733 #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1 735 #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 0 739 #if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT \ 740 && !EIGEN_GCC3_OR_OLDER \ 741 && !EIGEN_COMP_SUNCC \ 743 #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 1 745 #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 0 748 #if EIGEN_ARCH_WANTS_STACK_ALIGNMENT 749 #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES 751 #define EIGEN_MAX_STATIC_ALIGN_BYTES 0 757 #if defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES<EIGEN_MAX_STATIC_ALIGN_BYTES 758 #undef EIGEN_MAX_STATIC_ALIGN_BYTES 759 #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES 762 #if EIGEN_MAX_STATIC_ALIGN_BYTES==0 && !defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT) 763 #define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT 773 #define EIGEN_ALIGN8 EIGEN_ALIGN_TO_BOUNDARY(8) 774 #define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16) 775 #define EIGEN_ALIGN32 EIGEN_ALIGN_TO_BOUNDARY(32) 776 #define EIGEN_ALIGN64 EIGEN_ALIGN_TO_BOUNDARY(64) 777 #if EIGEN_MAX_STATIC_ALIGN_BYTES>0 778 #define EIGEN_ALIGN_MAX EIGEN_ALIGN_TO_BOUNDARY(EIGEN_MAX_STATIC_ALIGN_BYTES) 780 #define EIGEN_ALIGN_MAX 786 #if defined(EIGEN_DONT_ALIGN) && defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES>0 787 #error EIGEN_MAX_ALIGN_BYTES and EIGEN_DONT_ALIGN are both defined with EIGEN_MAX_ALIGN_BYTES!=0. Use EIGEN_MAX_ALIGN_BYTES=0 as a synonym of EIGEN_DONT_ALIGN. 790 #ifdef EIGEN_DONT_ALIGN 791 #ifdef EIGEN_MAX_ALIGN_BYTES 792 #undef EIGEN_MAX_ALIGN_BYTES 794 #define EIGEN_MAX_ALIGN_BYTES 0 795 #elif !defined(EIGEN_MAX_ALIGN_BYTES) 796 #define EIGEN_MAX_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES 799 #if EIGEN_IDEAL_MAX_ALIGN_BYTES > EIGEN_MAX_ALIGN_BYTES 800 #define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES 802 #define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES 806 #ifndef EIGEN_UNALIGNED_VECTORIZE 807 #define EIGEN_UNALIGNED_VECTORIZE 1 813 #ifdef EIGEN_DONT_USE_RESTRICT_KEYWORD 814 #define EIGEN_RESTRICT 816 #ifndef EIGEN_RESTRICT 817 #define EIGEN_RESTRICT __restrict 820 #ifndef EIGEN_STACK_ALLOCATION_LIMIT 822 #define EIGEN_STACK_ALLOCATION_LIMIT 131072 825 #ifndef EIGEN_DEFAULT_IO_FORMAT 826 #ifdef EIGEN_MAKING_DOCS 829 #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat(3, 0, " ", "\n", "", "") 831 #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat() 838 #if EIGEN_COMP_MSVC_STRICT && (EIGEN_COMP_MSVC < 1900 || EIGEN_CUDACC_VER>0) 840 #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 841 using Base::operator =; 842 #elif EIGEN_COMP_CLANG // workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653) 843 #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 844 using Base::operator =; \ 845 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) { Base::operator=(other); return *this; } \ 846 template <typename OtherDerived> \ 847 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const DenseBase<OtherDerived>& other) { Base::operator=(other.derived()); return *this; } 849 #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 850 using Base::operator =; \ 851 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) \ 853 Base::operator=(other); \ 865 #define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS) EIGEN_DEVICE_FUNC CLASS(const CLASS&) = default; 867 #define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS) 877 #define EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Derived) \ 878 EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 879 EIGEN_DEFAULT_COPY_CONSTRUCTOR(Derived) 889 #define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived) \ 890 EIGEN_DEVICE_FUNC Derived() = default; \ 891 EIGEN_DEVICE_FUNC ~Derived() = default; 893 #define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived) \ 894 EIGEN_DEVICE_FUNC Derived() {}; \ 910 #define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \ 911 typedef typename Eigen::internal::traits<Derived>::Scalar Scalar; \ 912 typedef typename Eigen::NumTraits<Scalar>::Real RealScalar; \ 913 typedef typename Base::CoeffReturnType CoeffReturnType; \ 914 typedef typename Eigen::internal::ref_selector<Derived>::type Nested; \ 915 typedef typename Eigen::internal::traits<Derived>::StorageKind StorageKind; \ 916 typedef typename Eigen::internal::traits<Derived>::StorageIndex StorageIndex; \ 917 enum { RowsAtCompileTime = Eigen::internal::traits<Derived>::RowsAtCompileTime, \ 918 ColsAtCompileTime = Eigen::internal::traits<Derived>::ColsAtCompileTime, \ 919 Flags = Eigen::internal::traits<Derived>::Flags, \ 920 SizeAtCompileTime = Base::SizeAtCompileTime, \ 921 MaxSizeAtCompileTime = Base::MaxSizeAtCompileTime, \ 922 IsVectorAtCompileTime = Base::IsVectorAtCompileTime }; \ 923 using Base::derived; \ 924 using Base::const_cast_derived; 928 #define EIGEN_DENSE_PUBLIC_INTERFACE(Derived) \ 929 EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \ 930 typedef typename Base::PacketScalar PacketScalar; 933 #define EIGEN_PLAIN_ENUM_MIN(a,b) (((int)a <= (int)b) ? (int)a : (int)b) 934 #define EIGEN_PLAIN_ENUM_MAX(a,b) (((int)a >= (int)b) ? (int)a : (int)b) 939 #define EIGEN_SIZE_MIN_PREFER_DYNAMIC(a,b) (((int)a == 0 || (int)b == 0) ? 0 \ 940 : ((int)a == 1 || (int)b == 1) ? 1 \ 941 : ((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \ 942 : ((int)a <= (int)b) ? (int)a : (int)b) 947 #define EIGEN_SIZE_MIN_PREFER_FIXED(a,b) (((int)a == 0 || (int)b == 0) ? 0 \ 948 : ((int)a == 1 || (int)b == 1) ? 1 \ 949 : ((int)a == Dynamic && (int)b == Dynamic) ? Dynamic \ 950 : ((int)a == Dynamic) ? (int)b \ 951 : ((int)b == Dynamic) ? (int)a \ 952 : ((int)a <= (int)b) ? (int)a : (int)b) 955 #define EIGEN_SIZE_MAX(a,b) (((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \ 956 : ((int)a >= (int)b) ? (int)a : (int)b) 958 #define EIGEN_LOGICAL_XOR(a,b) (((a) || (b)) && !((a) && (b))) 960 #define EIGEN_IMPLIES(a,b) (!(a) || (b)) 963 #define EIGEN_CWISE_BINARY_RETURN_TYPE(LHS,RHS,OPNAME) \ 965 EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)< \ 966 typename internal::traits<LHS>::Scalar, \ 967 typename internal::traits<RHS>::Scalar \ 973 #define EIGEN_MAKE_CWISE_BINARY_OP(METHOD,OPNAME) \ 974 template<typename OtherDerived> \ 975 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const EIGEN_CWISE_BINARY_RETURN_TYPE(Derived,OtherDerived,OPNAME) \ 976 (METHOD)(const EIGEN_CURRENT_STORAGE_BASE_CLASS<OtherDerived> &other) const \ 978 return EIGEN_CWISE_BINARY_RETURN_TYPE(Derived,OtherDerived,OPNAME)(derived(), other.derived()); \ 981 #define EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,TYPEA,TYPEB) \ 982 (Eigen::internal::has_ReturnType<Eigen::ScalarBinaryOpTraits<TYPEA,TYPEB,EIGEN_CAT(EIGEN_CAT(Eigen::internal::scalar_,OPNAME),_op)<TYPEA,TYPEB> > >::value) 984 #define EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(EXPR,SCALAR,OPNAME) \ 985 CwiseBinaryOp<EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)<typename internal::traits<EXPR>::Scalar,SCALAR>, const EXPR, \ 986 const typename internal::plain_constant_type<EXPR,SCALAR>::type> 988 #define EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(SCALAR,EXPR,OPNAME) \ 989 CwiseBinaryOp<EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)<SCALAR,typename internal::traits<EXPR>::Scalar>, \ 990 const typename internal::plain_constant_type<EXPR,SCALAR>::type, const EXPR> 993 #if EIGEN_COMP_MSVC_STRICT<=1600 994 #define EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(X) typename internal::enable_if<true,X>::type 996 #define EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(X) X 999 #define EIGEN_MAKE_SCALAR_BINARY_OP_ONTHERIGHT(METHOD,OPNAME) \ 1000 template <typename T> EIGEN_DEVICE_FUNC inline \ 1001 EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,typename internal::promote_scalar_arg<Scalar EIGEN_COMMA T EIGEN_COMMA EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,Scalar,T)>::type,OPNAME))\ 1002 (METHOD)(const T& scalar) const { \ 1003 typedef typename internal::promote_scalar_arg<Scalar,T,EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,Scalar,T)>::type PromotedT; \ 1004 return EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,PromotedT,OPNAME)(derived(), \ 1005 typename internal::plain_constant_type<Derived,PromotedT>::type(derived().rows(), derived().cols(), internal::scalar_constant_op<PromotedT>(scalar))); \ 1008 #define EIGEN_MAKE_SCALAR_BINARY_OP_ONTHELEFT(METHOD,OPNAME) \ 1009 template <typename T> EIGEN_DEVICE_FUNC inline friend \ 1010 EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename internal::promote_scalar_arg<Scalar EIGEN_COMMA T EIGEN_COMMA EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,T,Scalar)>::type,Derived,OPNAME)) \ 1011 (METHOD)(const T& scalar, const StorageBaseType& matrix) { \ 1012 typedef typename internal::promote_scalar_arg<Scalar,T,EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,T,Scalar)>::type PromotedT; \ 1013 return EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(PromotedT,Derived,OPNAME)( \ 1014 typename internal::plain_constant_type<Derived,PromotedT>::type(matrix.derived().rows(), matrix.derived().cols(), internal::scalar_constant_op<PromotedT>(scalar)), matrix.derived()); \ 1017 #define EIGEN_MAKE_SCALAR_BINARY_OP(METHOD,OPNAME) \ 1018 EIGEN_MAKE_SCALAR_BINARY_OP_ONTHELEFT(METHOD,OPNAME) \ 1019 EIGEN_MAKE_SCALAR_BINARY_OP_ONTHERIGHT(METHOD,OPNAME) 1022 #ifdef EIGEN_EXCEPTIONS 1023 # define EIGEN_THROW_X(X) throw X 1024 # define EIGEN_THROW throw 1025 # define EIGEN_TRY try 1026 # define EIGEN_CATCH(X) catch (X) 1028 # ifdef __CUDA_ARCH__ 1029 # define EIGEN_THROW_X(X) asm("trap;") 1030 # define EIGEN_THROW asm("trap;") 1032 # define EIGEN_THROW_X(X) std::abort() 1033 # define EIGEN_THROW std::abort() 1035 # define EIGEN_TRY if (true) 1036 # define EIGEN_CATCH(X) else 1040 #if EIGEN_HAS_CXX11_NOEXCEPT 1041 # define EIGEN_INCLUDE_TYPE_TRAITS 1042 # define EIGEN_NOEXCEPT noexcept 1043 # define EIGEN_NOEXCEPT_IF(x) noexcept(x) 1044 # define EIGEN_NO_THROW noexcept(true) 1045 # define EIGEN_EXCEPTION_SPEC(X) noexcept(false) 1047 # define EIGEN_NOEXCEPT 1048 # define EIGEN_NOEXCEPT_IF(x) 1049 # define EIGEN_NO_THROW throw() 1050 # if EIGEN_COMP_MSVC 1053 # define EIGEN_EXCEPTION_SPEC(X) throw() 1055 # define EIGEN_EXCEPTION_SPEC(X) throw(X) 1059 #endif // EIGEN_MACROS_H Namespace containing all symbols from the Eigen library.
Definition: Core:309
Definition: Eigen_Colamd.h:50