Blitz++与MTL两大数值计算程序库(C++)的简介

本文介绍了Blitz++和MTL两大C++数值计算程序库,Blitz++专注于N维Array类,支持多种存储序和数组操作;MTL则专长于线性代数计算。两者都支持Matlab数据导入导出,并在Visual C++7.1下易于编译。然而,文档友好度不高,使用时可能需要阅读源代码。配置方面,Blitz++相对简单,而MTL需要对源代码进行一些修改以适应VC++7.1。
摘要由CSDN通过智能技术生成

Blitz++MTL两大数值计算程序库(C++)的简介

Blitz++MTL都是基于C++ template高效数值计算程序库,不过他们专注于不同的方向。

Blitz++提供了一个N维(1—10)的Array,这个Array类以reference counting技术实现,支持任意的存储序(row-majorC-style数组,column-majorFortran-style数组),数组的切割(slicing),子数组的提取(subarray),灵活的Array相关表达式处理。另外提供了可以产生不同分布的随机数(F,Beta,Chi-Square,正态,均匀分布等)的类也是很有特色的。

MTL专注于线性代数相关的计算任务,如各种形式矩阵的生成(对角,共轭,稀疏,对称等),相关的计算,变换,以及与一维向量的运算。

两个程序库对于从Matlab导入导出数据都有不错的支持。

本文主要介绍如何在Visual C++7.1编译器下运用这两个程序库。

以前的VC6编译器由于对ISO C++98标准的支持不够,特别是在template方面,以至于很难编译这种完全用template技术构造起来的程序库。Blitz++是完全不支持VC6的。

到了VC7.1,由于对于ISO标准的支持达到了98%,使得我们可以很轻松的编译使用这两个程序库。

不过这两个程序库的文档不是那么友好,特别是MTL,仅仅提供了类似于 reference的文档,对于具体的使用方法则不作介绍。Blitz++相对来说好一些,还提供一份介绍性的入门文档 。所以使用这两个程序库阅读其源代码往往是必要的。当然了,两个程序库都是template代码,源代码必定是全开放的。

先来介绍一下配置吧

1,  Blitz++, 目前最高版本是0.7Blitz++已经成为SourceForge的项目了,所以可以在SourceForge.net下载到。下载后解压缩,你会看到/Blitz++-0.7/blitz/Blitz++-0.7/random两个文件夹,这是 blitz的源代码所在处。/Blitz++-0.7/manual是文档所在文件夹。/Blitz++-0.7/benchmarks,/Blitz++-0.7/examples/Blitz++-0.7/testsuite中都有很多好的使用实例可供参考。

现在将VC++ IDEInclude设置为/Blitz++-0.7,因为 blitz源码中都有这样形式的#include ,#include 。或者就干脆把两个源码文件夹整个得copyinclude文件夹内。然后将blitz文件夹下的config.h改为其它名字,而将config-VS.NET2003.h的名字改为 config.hOK,现在你就可以编译所有的 testsuitebenchmarks了。

1,  MTL的配置相对来说麻烦一点,现在http://www.osl.iu.edu/research/mtl/这里下载一个VC++7的,不过还不能马上用。由于VC++7.1对标准的支持更近了一步,同时对于某些语法细节的检查更为严格(主要是对于typenametemplate partial specialization),我们要对代码做一些小小地修改,特别是mtl/mtl_config.h这个文件。有一些地方要加入typename。另外有两个模板偏特化的情况需要修改,加上template <>。在这里http://newsuppy.go.nease.net/mtl.zip 我提供了一个修改

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值