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