Eigen 模板库的简介
Eigen 是一個 C++ 模板庫,主要用于:線性代數、矩陣、向量、數值計算和相關算法。
一、特點:
1、通用性
支持所有矩陣,從小型固定矩陣到任意大密集矩陣、稀疏
支持所有標準數據類型,包括 std::complex, integers,并且很容易擴展到自定義類型
支持不同的矩陣分解(如QR,SVD等)和幾何特性
其 unsupported modules 提供和很多特殊性質,如非線性優化、矩陣函數、多項式求解、快速傅里葉變換等等。
2、快速性
表達式模板允許智能刪除臨時數據,并能適當使用惰性編譯
向量化處理:支持 SSE 2/3/4, AVX, FMA, AVX512, ARM NEON (32-bit and 64-bit), PowerPC AltiVec/VSX (32-bit and 64-bit) 指令集, 并且現在支持 S390x SIMD (ZVector) 單指令多數據
充分優化固定大小的矩陣: 避免使用動態內存分配, 但需要時會展開循環
對于大型矩陣,特別注意緩存友好
3、可靠性
算法根據可靠性小心選擇。可靠性取舍清楚地列出,能進行非常安全的分解
通過自己的測試套件進行了全面測試,BLAS 標準測試套件和 LAPACK 測試條件的一些部分
4、完美性
表達式模板對C++語法來說,語義清楚,表達式優雅
執行算法感覺像復制的偽代碼
5、多編譯器支持
為了保證可靠性,在很多編譯器上運行了測試套件,繞過了所有的編譯器bugs。Eigen 是標準的C++98 庫,保持了非常合理的編譯時間。
二、需求
僅僅需要 C++ 標準庫。運用CMake編譯系統,不過僅用于建立文檔和單元測試,自動安裝。如果只是用Eigen,可以直接使用,不需要連接二進制庫,不需要配置頭文件。Eigen 是一個定義在頭文件中的純模板庫。
三、編譯器支持
GCC, 4.4 及以上
MSVC (Visual Studio), 2010 及以上
Intel C++ compiler. Enabling the -inline-forceinline option is highly recommended.
LLVM/CLang++, 3.4 及以上
XCode 4 and newer. Based on LLVM/CLang.
MinGW, recent versions. Based on GCC.
QNX’s QCC compiler.
注:在 ROS 系統中大量使用了 Eigen
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Eigen 模板库的简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 返回值为对象的函数
- 下一篇: 使用 Eigen 库写第一个程序