在 C++中,庫的地位是很是高的。C++之父 Bjarne Stroustrup先生屢次表示了設計庫來擴充功能要好過設計更多的語法的言論。現實中,C++的庫門類繁多,解決 的問題也是極其普遍,庫從輕量級到重量級的都有。很多都是讓人眼界大開,亦或是望而生嘆的思惟傑做。因爲庫的數量很是龐大,並且限於筆者水平,其中不少並 不瞭解。因此文中所提的一些庫都是比較著名的大型庫。php
C++各大有名庫的介紹——科學計算html
1、Blitz++linux
參考網站:http://www.oonumerics.org/blitzc++
Blitz++ 是一個高效率的數值計算函數庫,它的設計目的是但願創建一套既具像C++ 同樣方便,同時又比Fortran速度更快的數值計算環境。一般,用C++所寫出的數值程序, 比 Fortran慢20%左右,所以Blitz++正是要改掉這個缺點。方法是利用C++的template 技術,程序執行甚至能夠比Fortran更快。算法
Blitz++目前仍在發展中,對於常見的SVD,FFTs,QMRES等常見的線性代數方法並不提供,不過使用者能夠很容易地利用 Blitz++所提供的函數來構建。express
2、POOMAapp
參考網站:http://www.codesourcery.com/pooma/poomadom
POOMA是一個免費的高性能的C++庫,用於處理並行式科學計算。POOMA的面向對象設計方便了快速的程 序開發,對並行機器進行了優化以達到最高的效率,方便在工業和研究環境中使用。ide
3、MTL函數
參考網站:http://www.osl.iu.edu/research/mtl
Matrix Template Library(MTL) 是一個高性能的泛型組件庫,提供了各類格式矩陣的大量線性代數方面的功能。在某些應用使用高性能編譯器的狀況下,好比Intel的編譯器,從產生的彙編代 碼能夠看出其與手寫幾乎沒有兩樣的效能。
4、CGAL
參考網站:www.cgal.org
Computational Geometry Algorithms Library的目的是把在計 算幾何方面的大部分重要的解決方案和方法以C++庫的形式提供給工業和學術界的用戶。
Intel Math Kernel Library
1.基本線形代數運算(BLAS) 向量與向量、向量與矩陣、矩陣與矩陣的運算
2.稀疏線形代數運算
3.快速傅立葉變換(單精度/雙精度)(fftw)
4.LAPACK(求解線形方程組、最小方差、特徵值、Sylvester方程等)
5.向量數學庫(VML)
6.向量統計學庫(VSL)
7.高級離散傅立葉變換
IMSL
軟件名稱 IMSL C Numerical Library(不兼容vc6 編譯器)
程序設計語言 C, Forton, C#, Java
資源網址 http://www.vni.com/
功能概述 分爲統計庫和數學庫兩部分. 數學庫包含應用數學和特殊函數.IMSL 程序庫 - 已成爲數值分析解決方案的工業標準。 IMSL 程序庫提供最完整與最值得信賴的函數庫。 IMSL 數值程序庫提供目前世界上最普遍被使用的 IMSL 算法,有超過 370 驗證過、最正確與 thread-safe 的數學與統計程序。 IMSL FORTRAN 程序庫提供新一代以 FORTRAN 90 爲程序庫基礎的程序,能展示出最佳化的演算法能力應用於多處理器與其它高效能運算系統。
LAPACK
UserGuide: http://www.netlib.org/lapack/lug/lapack_lug.html
lapack
軟件名稱 Linear Algebra Package
程序設計語言 Fortran 77
資源網址 http://www.netlib.org/lapack
功能概述 線性代數計算子程序包
clapack
軟件名稱 Linear Algebra Package for C
程序設計語言 c/c++
資源網址 http://www.netlib.org/clapack/
功能概述 c版的線性代數計算子程序包
如何在Visual Studio 2008中安裝CLAPACK http://www.deuxmille.org/archives/1486
lapack++
軟件名稱 Linear Algebra Package in c++
程序設計語言 c++
資源網址 http://math.nist.gov/lapack++/
功能概述 c++版的線性代數計算子程序包
BLAS
軟件名稱 Basic Linear Algebra Subroutines
程序設計語言 Fortran 77
主要開發者 Kagstrom B. ,Ling P. ,Van Loan C.
資源網址 http://www.netlib.org/blas
功能概述 Blas是執行向量和矩陣運算的子程序集合。
uBLAS
BLAS in C++ with expression templates. 表達式模版形式的 C++ 中的BLAS ,
gsl
軟件名稱 GNU Scientific Library (linux)
程序設計語言 C , C++ compable
資源網址 http://www.gnu.org/software/gsl/
功能概述 範圍普遍, 包括數值分析的常見內容
Blitz++
軟件名稱 Blitz++ (不兼容vc6編譯器)
資源網址 http://sourceforge.net/project/showfiles.php?group_id=63961
功能概述 The current versions provide dense arrays and vectors, random number generators, and small vectors and matrices.是一個高效率的數值計算函數庫,它的設計目的是但願創建一套既具像 C++ 同樣方便,同時又比 Fortran 速度更快的數值計算環境。一般,用 C++ 所寫出的數值程序,比 Fortran 慢 20% 左右,所以Blitz++ 正是要改掉這個缺點。方法是利用 C++ 的 template 技術,程序執行甚至能夠比 Fortran 更快。
MTL
軟件名稱 Matrix Template Library(兼容vc6編 譯器)
資源網址 http://www.osl.iu.edu/research/mtl/
功能概述 The Matrix Template Library (MTL) is a high-performance generic component library that provides comprehensive linear algebra functionality for a wide variety of matrix formats. MTL專一於線性代數相關的計算任務,如各類形式矩陣的生成(對角,共軛,稀疏,對 稱等),相關的計算,變換,以及與一維向量的運算。
Armadillo
Armadillo is a C++ linear algebra library (matrix maths) aiming towards a good balance between speed and ease of use. Integer, floating point and complex numbers are supported, as well as a subset of trigonometric and statistics functions. Various matrix decompositions are provided through optional integration with LAPACK and ATLAS libraries.
資源網址 http://arma.sourceforge.net/
ATLAS
The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing research effort focusing on applying empirical techniques in order to provide portable performance. At present, it provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK.
資源網址 http://math-atlas.sourceforge.net/