11 #ifndef EIGEN_MACROS_H 12 #define EIGEN_MACROS_H 14 #define EIGEN_WORLD_VERSION 3 15 #define EIGEN_MAJOR_VERSION 2 16 #define EIGEN_MINOR_VERSION 92 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 1 35 #define EIGEN_COMP_CLANG 0 41 #define EIGEN_COMP_LLVM 1 43 #define EIGEN_COMP_LLVM 0 47 #if defined(__INTEL_COMPILER) 48 #define EIGEN_COMP_ICC __INTEL_COMPILER 50 #define EIGEN_COMP_ICC 0 54 #if defined(__MINGW32__) 55 #define EIGEN_COMP_MINGW 1 57 #define EIGEN_COMP_MINGW 0 61 #if defined(__SUNPRO_CC) 62 #define EIGEN_COMP_SUNCC 1 64 #define EIGEN_COMP_SUNCC 0 69 #define EIGEN_COMP_MSVC _MSC_VER 71 #define EIGEN_COMP_MSVC 0 75 #if EIGEN_COMP_MSVC && !(EIGEN_COMP_ICC) 76 #define EIGEN_COMP_MSVC_STRICT _MSC_VER 78 #define EIGEN_COMP_MSVC_STRICT 0 82 #if defined(__IBMCPP__) || defined(__xlc__) 83 #define EIGEN_COMP_IBM 1 85 #define EIGEN_COMP_IBM 0 90 #define EIGEN_COMP_PGI 1 92 #define EIGEN_COMP_PGI 0 96 #if defined(__CC_ARM) || defined(__ARMCC_VERSION) 97 #define EIGEN_COMP_ARM 1 99 #define EIGEN_COMP_ARM 0 104 #if EIGEN_COMP_GNUC && !(EIGEN_COMP_CLANG || EIGEN_COMP_ICC || EIGEN_COMP_MINGW || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM ) 105 #define EIGEN_COMP_GNUC_STRICT 1 107 #define EIGEN_COMP_GNUC_STRICT 0 112 #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__==x && __GNUC_MINOR__>=y) || __GNUC__>x) 113 #define EIGEN_GNUC_AT_MOST(x,y) ((__GNUC__==x && __GNUC_MINOR__<=y) || __GNUC__<x) 114 #define EIGEN_GNUC_AT(x,y) ( __GNUC__==x && __GNUC_MINOR__==y ) 116 #define EIGEN_GNUC_AT_LEAST(x,y) 0 117 #define EIGEN_GNUC_AT_MOST(x,y) 0 118 #define EIGEN_GNUC_AT(x,y) 0 122 #if EIGEN_COMP_GNUC && (__GNUC__ <= 3) 123 #define EIGEN_GCC3_OR_OLDER 1 125 #define EIGEN_GCC3_OR_OLDER 0 131 #if defined(__x86_64__) || defined(_M_X64) || defined(__amd64) 132 #define EIGEN_ARCH_x86_64 1 134 #define EIGEN_ARCH_x86_64 0 137 #if defined(__i386__) || defined(_M_IX86) || defined(_X86_) || defined(__i386) 138 #define EIGEN_ARCH_i386 1 140 #define EIGEN_ARCH_i386 0 143 #if EIGEN_ARCH_x86_64 || EIGEN_ARCH_i386 144 #define EIGEN_ARCH_i386_OR_x86_64 1 146 #define EIGEN_ARCH_i386_OR_x86_64 0 151 #define EIGEN_ARCH_ARM 1 153 #define EIGEN_ARCH_ARM 0 157 #if defined(__aarch64__) 158 #define EIGEN_ARCH_ARM64 1 160 #define EIGEN_ARCH_ARM64 0 163 #if EIGEN_ARCH_ARM || EIGEN_ARCH_ARM64 164 #define EIGEN_ARCH_ARM_OR_ARM64 1 166 #define EIGEN_ARCH_ARM_OR_ARM64 0 170 #if defined(__mips__) || defined(__mips) 171 #define EIGEN_ARCH_MIPS 1 173 #define EIGEN_ARCH_MIPS 0 177 #if defined(__sparc__) || defined(__sparc) 178 #define EIGEN_ARCH_SPARC 1 180 #define EIGEN_ARCH_SPARC 0 184 #if defined(__ia64__) 185 #define EIGEN_ARCH_IA64 1 187 #define EIGEN_ARCH_IA64 0 191 #if defined(__powerpc__) || defined(__ppc__) || defined(_M_PPC) 192 #define EIGEN_ARCH_PPC 1 194 #define EIGEN_ARCH_PPC 0 202 #if defined(__unix__) || defined(__unix) 203 #define EIGEN_OS_UNIX 1 205 #define EIGEN_OS_UNIX 0 209 #if defined(__linux__) 210 #define EIGEN_OS_LINUX 1 212 #define EIGEN_OS_LINUX 0 217 #if defined(__ANDROID__) || defined(ANDROID) 218 #define EIGEN_OS_ANDROID 1 220 #define EIGEN_OS_ANDROID 0 224 #if defined(__gnu_linux__) && !(EIGEN_OS_ANDROID) 225 #define EIGEN_OS_GNULINUX 1 227 #define EIGEN_OS_GNULINUX 0 231 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__) 232 #define EIGEN_OS_BSD 1 234 #define EIGEN_OS_BSD 0 238 #if defined(__APPLE__) 239 #define EIGEN_OS_MAC 1 241 #define EIGEN_OS_MAC 0 246 #define EIGEN_OS_QNX 1 248 #define EIGEN_OS_QNX 0 253 #define EIGEN_OS_WIN 1 255 #define EIGEN_OS_WIN 0 260 #define EIGEN_OS_WIN64 1 262 #define EIGEN_OS_WIN64 0 266 #if defined(_WIN32_WCE) 267 #define EIGEN_OS_WINCE 1 269 #define EIGEN_OS_WINCE 0 273 #if defined(__CYGWIN__) 274 #define EIGEN_OS_CYGWIN 1 276 #define EIGEN_OS_CYGWIN 0 280 #if EIGEN_OS_WIN && !( EIGEN_OS_WINCE || EIGEN_OS_CYGWIN ) 281 #define EIGEN_OS_WIN_STRICT 1 283 #define EIGEN_OS_WIN_STRICT 0 287 #if (defined(sun) || defined(__sun)) && !(defined(__SVR4) || defined(__svr4__)) 288 #define EIGEN_OS_SUN 1 290 #define EIGEN_OS_SUN 0 294 #if (defined(sun) || defined(__sun)) && (defined(__SVR4) || defined(__svr4__)) 295 #define EIGEN_OS_SOLARIS 1 297 #define EIGEN_OS_SOLARIS 0 302 #if EIGEN_GNUC_AT_MOST(4,3) && !EIGEN_COMP_CLANG 304 #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 0 306 #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 1 311 #define EIGEN_NOT_A_MACRO 313 #ifdef EIGEN_DEFAULT_TO_ROW_MAJOR 314 #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::RowMajor 316 #define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::ColMajor 319 #ifndef EIGEN_DEFAULT_DENSE_INDEX_TYPE 320 #define EIGEN_DEFAULT_DENSE_INDEX_TYPE std::ptrdiff_t 325 # define EIGEN_HAS_BUILTIN(x) __has_builtin(x) 327 # define EIGEN_HAS_BUILTIN(x) 0 332 #ifndef __has_feature 333 # define __has_feature(x) 0 337 #if (__has_feature(cxx_rvalue_references) || \ 338 (defined(__cplusplus) && __cplusplus >= 201103L) || \ 339 defined(__GXX_EXPERIMENTAL_CXX0X__) || \ 340 (EIGEN_COMP_MSVC >= 1600)) 341 #define EIGEN_HAVE_RVALUE_REFERENCES 345 #if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) \ 346 || (defined(__GNUC__) && defined(_GLIBCXX_USE_C99)) \ 347 || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER)) 348 #define EIGEN_HAS_C99_MATH 1 352 #if (__has_feature(cxx_lambdas) || (defined(__cplusplus) && __cplusplus >= 201103L)) 353 #define EIGEN_HAS_STD_RESULT_OF 1 357 #if __cplusplus > 199711L 358 #define EIGEN_HAS_VARIADIC_TEMPLATES 1 364 #if defined(__CUDACC_VER__) && __CUDACC_VER__ >= 70500 && __cplusplus > 199711L 365 #define EIGEN_HAS_CONSTEXPR 1 367 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || \ 368 EIGEN_GNUC_AT_LEAST(4,8) 369 #define EIGEN_HAS_CONSTEXPR 1 374 #ifndef EIGEN_HAS_CXX11_MATH 375 #if (__cplusplus > 201103L) || (__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC) \ 376 && (EIGEN_ARCH_i386_OR_x86_64) && (EIGEN_OS_GNULINUX || EIGEN_OS_WIN_STRICT || EIGEN_OS_MAC) 377 #define EIGEN_HAS_CXX11_MATH 1 379 #define EIGEN_HAS_CXX11_MATH 0 384 #ifndef EIGEN_HAS_CXX11_CONTAINERS 385 #if (__cplusplus > 201103L) \ 386 || ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_ICC>=1400)) \ 387 || EIGEN_COMP_MSVC >= 1900 388 #define EIGEN_HAS_CXX11_CONTAINERS 1 390 #define EIGEN_HAS_CXX11_CONTAINERS 0 395 #ifndef EIGEN_HAS_CXX11_NOEXCEPT 396 #if (__cplusplus > 201103L) \ 397 || ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_ICC>=1400)) \ 398 || EIGEN_COMP_MSVC >= 1900 399 #define EIGEN_HAS_CXX11_NOEXCEPT 1 401 #define EIGEN_HAS_CXX11_NOEXCEPT 0 410 #ifndef EIGEN_FAST_MATH 411 #define EIGEN_FAST_MATH 1 414 #define EIGEN_DEBUG_VAR(x) std::cerr << #x << " = " << x << std::endl; 417 #define EIGEN_CAT2(a,b) a ## b 418 #define EIGEN_CAT(a,b) EIGEN_CAT2(a,b) 421 #define EIGEN_MAKESTRING2(a) #a 422 #define EIGEN_MAKESTRING(a) EIGEN_MAKESTRING2(a) 427 #if EIGEN_COMP_MSVC || EIGEN_COMP_ICC 428 #define EIGEN_STRONG_INLINE __forceinline 430 #define EIGEN_STRONG_INLINE inline 440 #if EIGEN_GNUC_AT_LEAST(4,0) 441 #define EIGEN_ALWAYS_INLINE __attribute__((always_inline)) inline 443 #define EIGEN_ALWAYS_INLINE EIGEN_STRONG_INLINE 447 #define EIGEN_DONT_INLINE __attribute__((noinline)) 448 #elif EIGEN_COMP_MSVC 449 #define EIGEN_DONT_INLINE __declspec(noinline) 451 #define EIGEN_DONT_INLINE 455 #define EIGEN_PERMISSIVE_EXPR __extension__ 457 #define EIGEN_PERMISSIVE_EXPR 464 #define EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS 465 #define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS inline 468 # ifndef EIGEN_NO_DEBUG 469 # define EIGEN_NO_DEBUG 474 #ifdef EIGEN_NO_DEBUG 475 #define eigen_plain_assert(x) 477 #if EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 480 inline bool copy_bool(
bool b) {
return b; }
483 #define eigen_plain_assert(x) assert(x) 494 EIGEN_DONT_INLINE
bool copy_bool(
bool b) {
return b; }
496 inline void assert_fail(
const char *condition,
const char *
function,
const char *file,
int line)
498 std::cerr <<
"assertion failed: " << condition <<
" in function " <<
function <<
" at " << file <<
":" << line << std::endl;
503 #define eigen_plain_assert(x) \ 505 if(!Eigen::internal::copy_bool(x)) \ 506 Eigen::internal::assert_fail(EIGEN_MAKESTRING(x), __PRETTY_FUNCTION__, __FILE__, __LINE__); \ 513 #define eigen_assert(x) eigen_plain_assert(x) 516 #ifdef EIGEN_INTERNAL_DEBUGGING 517 #define eigen_internal_assert(x) eigen_assert(x) 519 #define eigen_internal_assert(x) 522 #ifdef EIGEN_NO_DEBUG 523 #define EIGEN_ONLY_USED_FOR_DEBUG(x) EIGEN_UNUSED_VARIABLE(x) 525 #define EIGEN_ONLY_USED_FOR_DEBUG(x) 528 #ifndef EIGEN_NO_DEPRECATED_WARNING 530 #define EIGEN_DEPRECATED __attribute__((deprecated)) 531 #elif EIGEN_COMP_MSVC 532 #define EIGEN_DEPRECATED __declspec(deprecated) 534 #define EIGEN_DEPRECATED 537 #define EIGEN_DEPRECATED 541 #define EIGEN_UNUSED __attribute__((unused)) 549 template<
typename T> EIGEN_DEVICE_FUNC
void ignore_unused_variable(
const T&) {}
552 #define EIGEN_UNUSED_VARIABLE(var) Eigen::internal::ignore_unused_variable(var); 554 #if !defined(EIGEN_ASM_COMMENT) 555 #if EIGEN_COMP_GNUC && (EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64) 556 #define EIGEN_ASM_COMMENT(X) __asm__("#" X) 558 #define EIGEN_ASM_COMMENT(X) 583 #if (defined __CUDACC__) 584 #define EIGEN_ALIGN_TO_BOUNDARY(n) __align__(n) 585 #elif EIGEN_COMP_GNUC || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM 586 #define EIGEN_ALIGN_TO_BOUNDARY(n) __attribute__((aligned(n))) 587 #elif EIGEN_COMP_MSVC 588 #define EIGEN_ALIGN_TO_BOUNDARY(n) __declspec(align(n)) 589 #elif EIGEN_COMP_SUNCC 591 #define EIGEN_ALIGN_TO_BOUNDARY(n) __attribute__((aligned(n))) 593 #error Please tell me what is the equivalent of __attribute__((aligned(n))) for your compiler 597 #if defined(EIGEN_DONT_VECTORIZE) 598 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 0 599 #elif defined(__AVX__) 601 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 32 603 #define EIGEN_IDEAL_MAX_ALIGN_BYTES 16 608 #define EIGEN_MIN_ALIGN_BYTES 16 614 #if (defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN)) && defined(EIGEN_MAX_STATIC_ALIGN_BYTES) && EIGEN_MAX_STATIC_ALIGN_BYTES>0 615 #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. 620 #if defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN) 621 #ifdef EIGEN_MAX_STATIC_ALIGN_BYTES 622 #undef EIGEN_MAX_STATIC_ALIGN_BYTES 624 #define EIGEN_MAX_STATIC_ALIGN_BYTES 0 627 #ifndef EIGEN_MAX_STATIC_ALIGN_BYTES 637 #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_PPC || EIGEN_ARCH_IA64) 638 #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1 639 #elif EIGEN_ARCH_ARM_OR_ARM64 && EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_MOST(4, 6) 643 #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1 645 #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 0 649 #if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT \ 650 && !EIGEN_GCC3_OR_OLDER \ 651 && !EIGEN_COMP_SUNCC \ 653 #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 1 655 #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 0 658 #if EIGEN_ARCH_WANTS_STACK_ALIGNMENT 659 #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES 661 #define EIGEN_MAX_STATIC_ALIGN_BYTES 0 667 #if defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES<EIGEN_MAX_STATIC_ALIGN_BYTES 668 #undef EIGEN_MAX_STATIC_ALIGN_BYTES 669 #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES 672 #if EIGEN_MAX_STATIC_ALIGN_BYTES==0 && !defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT) 673 #define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT 683 #define EIGEN_ALIGN8 EIGEN_ALIGN_TO_BOUNDARY(8) 684 #define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16) 685 #define EIGEN_ALIGN32 EIGEN_ALIGN_TO_BOUNDARY(32) 686 #define EIGEN_ALIGN64 EIGEN_ALIGN_TO_BOUNDARY(64) 687 #if EIGEN_MAX_STATIC_ALIGN_BYTES>0 688 #define EIGEN_ALIGN_MAX EIGEN_ALIGN_TO_BOUNDARY(EIGEN_MAX_STATIC_ALIGN_BYTES) 690 #define EIGEN_ALIGN_MAX 696 #if defined(EIGEN_DONT_ALIGN) && defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES>0 697 #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. 700 #ifdef EIGEN_DONT_ALIGN 701 #ifdef EIGEN_MAX_ALIGN_BYTES 702 #undef EIGEN_MAX_ALIGN_BYTES 704 #define EIGEN_MAX_ALIGN_BYTES 0 705 #elif !defined(EIGEN_MAX_ALIGN_BYTES) 706 #define EIGEN_MAX_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES 709 #if EIGEN_IDEAL_MAX_ALIGN_BYTES > EIGEN_MAX_ALIGN_BYTES 710 #define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES 712 #define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES 718 #ifdef EIGEN_DONT_USE_RESTRICT_KEYWORD 719 #define EIGEN_RESTRICT 721 #ifndef EIGEN_RESTRICT 722 #define EIGEN_RESTRICT __restrict 725 #ifndef EIGEN_STACK_ALLOCATION_LIMIT 727 #define EIGEN_STACK_ALLOCATION_LIMIT 131072 730 #ifndef EIGEN_DEFAULT_IO_FORMAT 731 #ifdef EIGEN_MAKING_DOCS 734 #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat(3, 0, " ", "\n", "", "") 736 #define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat() 743 #if EIGEN_COMP_MSVC_STRICT && EIGEN_COMP_MSVC < 1900 // for older MSVC versions using the base operator is sufficient (cf Bug 1000) 744 #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 745 using Base::operator =; 746 #elif EIGEN_COMP_CLANG // workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653) 747 #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 748 using Base::operator =; \ 749 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) { Base::operator=(other); return *this; } \ 750 template <typename OtherDerived> \ 751 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const DenseBase<OtherDerived>& other) { Base::operator=(other.derived()); return *this; } 753 #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \ 754 using Base::operator =; \ 755 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) \ 757 Base::operator=(other); \ 767 #define EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Derived) EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) 777 #define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \ 778 typedef typename Eigen::internal::traits<Derived>::Scalar Scalar; \ 779 typedef typename Eigen::NumTraits<Scalar>::Real RealScalar; \ 780 typedef typename Base::CoeffReturnType CoeffReturnType; \ 781 typedef typename Eigen::internal::ref_selector<Derived>::type Nested; \ 782 typedef typename Eigen::internal::traits<Derived>::StorageKind StorageKind; \ 783 typedef typename Eigen::internal::traits<Derived>::StorageIndex StorageIndex; \ 784 enum { RowsAtCompileTime = Eigen::internal::traits<Derived>::RowsAtCompileTime, \ 785 ColsAtCompileTime = Eigen::internal::traits<Derived>::ColsAtCompileTime, \ 786 Flags = Eigen::internal::traits<Derived>::Flags, \ 787 SizeAtCompileTime = Base::SizeAtCompileTime, \ 788 MaxSizeAtCompileTime = Base::MaxSizeAtCompileTime, \ 789 IsVectorAtCompileTime = Base::IsVectorAtCompileTime }; \ 790 using Base::derived; \ 791 using Base::const_cast_derived; 795 #define EIGEN_DENSE_PUBLIC_INTERFACE(Derived) \ 796 EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \ 797 typedef typename Base::PacketScalar PacketScalar; 800 #define EIGEN_PLAIN_ENUM_MIN(a,b) (((int)a <= (int)b) ? (int)a : (int)b) 801 #define EIGEN_PLAIN_ENUM_MAX(a,b) (((int)a >= (int)b) ? (int)a : (int)b) 806 #define EIGEN_SIZE_MIN_PREFER_DYNAMIC(a,b) (((int)a == 0 || (int)b == 0) ? 0 \ 807 : ((int)a == 1 || (int)b == 1) ? 1 \ 808 : ((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \ 809 : ((int)a <= (int)b) ? (int)a : (int)b) 814 #define EIGEN_SIZE_MIN_PREFER_FIXED(a,b) (((int)a == 0 || (int)b == 0) ? 0 \ 815 : ((int)a == 1 || (int)b == 1) ? 1 \ 816 : ((int)a == Dynamic && (int)b == Dynamic) ? Dynamic \ 817 : ((int)a == Dynamic) ? (int)b \ 818 : ((int)b == Dynamic) ? (int)a \ 819 : ((int)a <= (int)b) ? (int)a : (int)b) 822 #define EIGEN_SIZE_MAX(a,b) (((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \ 823 : ((int)a >= (int)b) ? (int)a : (int)b) 825 #define EIGEN_LOGICAL_XOR(a,b) (((a) || (b)) && !((a) && (b))) 827 #define EIGEN_IMPLIES(a,b) (!(a) || (b)) 829 #define EIGEN_MAKE_CWISE_BINARY_OP(METHOD,FUNCTOR) \ 830 template<typename OtherDerived> \ 831 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<FUNCTOR<Scalar>, const Derived, const OtherDerived> \ 832 (METHOD)(const EIGEN_CURRENT_STORAGE_BASE_CLASS<OtherDerived> &other) const \ 834 return CwiseBinaryOp<FUNCTOR<Scalar>, const Derived, const OtherDerived>(derived(), other.derived()); \ 838 #define EIGEN_CWISE_PRODUCT_RETURN_TYPE(LHS,RHS) \ 840 internal::scalar_product_op< \ 841 typename internal::traits<LHS>::Scalar, \ 842 typename internal::traits<RHS>::Scalar \ 848 #ifdef EIGEN_EXCEPTIONS 849 # define EIGEN_THROW_X(X) throw X 850 # define EIGEN_THROW throw 851 # define EIGEN_TRY try 852 # define EIGEN_CATCH(X) catch (X) 854 # ifdef __CUDA_ARCH__ 855 # define EIGEN_THROW_X(X) asm("trap;") return {} 856 # define EIGEN_THROW asm("trap;"); return {} 858 # define EIGEN_THROW_X(X) std::abort() 859 # define EIGEN_THROW std::abort() 861 # define EIGEN_TRY if (true) 862 # define EIGEN_CATCH(X) else 865 #if EIGEN_HAS_CXX11_NOEXCEPT 866 # define EIGEN_NO_THROW noexcept(true) 867 # define EIGEN_EXCEPTION_SPEC(X) noexcept(false) 869 # define EIGEN_NO_THROW throw() 870 # define EIGEN_EXCEPTION_SPEC(X) throw(X) 873 #endif // EIGEN_MACROS_H
Definition: Eigen_Colamd.h:54