Blitz++ 是一個用於科學計算的高性能C++類庫,提供了數組、向量、隨機數生成器、小向量和矩陣等結構。其中小向量對於表示矢量場非常有用。由於使用了模板技術作為底層實現,其號稱性能能夠與Fortran 77/90相比擬。同時在Blitz++也被認為是C++模板元編程的一個非常好的應用案例。
經過多年的發展,Blitz++已經逐漸成熟並從開發期進入了維護期。現在維護工作主要在Github上完成。
安裝
在Linux上,你可以選擇直接從源碼編譯或者使用系統的包管理器來安裝Blitz++。在Windows上你可以選擇源碼編譯的方式來使用Blitz++。
首先我們來看一下,如何從源碼編譯Blitz++。
第一步: 獲取源碼
推薦的獲取源碼的方式是前往Github下載,地址為https://github.com/blitzpp/blitz/archive/1.0.2.tar.gz。
下載解壓以後進入源碼目錄後,順序執行下面的命令即可完成編譯:
<code>~$ mkdir build ~$ cd build ~$ cmake .. ~$ make lib ~$ sudo make install/<code>
如果是在Windows上編譯,則按順序執行下面命令:
<code>~$ md build ~$ cd build ~$ cmake .. ~$ cmake --build . --config Release ~$ cmake --build . --target install/<code>
發行版包管理器安裝Blitz++
這個方法不是對所有發行版都適用,因為不能保證Blitz++被包含在所有Linux發行版的包管理器中。不過許多流行的發行版上都能夠輕鬆的獲取到支持。
Ubuntu:
<code>~$ sudo add-apt-repository universe ~$ sudo apt-get install libblitz0-dev/<code>
OpenSUSE:
<code>~$ zypper install blitz/<code>
Fedora
<code>~$ dnf install blitz/<code>
Centos
<code>~$ yum install blitz/<code>
使用示例
下面,我們將試用Blitz++提供的卷積運算來展示如何使用Blitz++:
<code>#include #include using namespace blitz; int main() { Array B(Range(-2,+2)); Array C(Range(10,15)); B = 1, 0, 2, 5, 3; C = 10, 2, 4, 1, 7, 2; Array A = convolve(B,C); cout << "A has domain " << A.lbound(0) << "..." << A.ubound(0) << endl << A << endl; return 0; }/<code>
編譯後執行程序,得到輸出為:
<code>A has domain 8...17 (8,17) [ 10 2 24 55 55 30 31 42 31 6 ]/<code>
要獲取更多關於如何使用Blitz++的內容,可以前往Blitz項目倉庫查看。https://github.com/blitzpp/blitz