`
fly_hyp
  • 浏览: 311970 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

C++各大有名科学计算库

阅读更多
C++各大有名科学计算库
2008年10月13日 星期一 上午 11:29
在 C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重 量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比 较著名的大型库。

C++各大有名库的介绍——科学计算

1、Blitz++

参考网站:http://www.oonumerics.org/blitz

   Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可以比Fortran更快。

  Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提供,不过使用者可以很容易地利用Blitz++所提供的函数来构建。

2、POOMA

参考网站:http://www.codesourcery.com/pooma/pooma

  POOMA是一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环境中使用。

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
软件名称 Linear Algebra Package
程序设计语言 Fortran 77
资源网址 http://www.netlib.org/lapack
功能概述 线性代数计算子程序包

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

分享到:
评论

相关推荐

    C++著名程序库的比较和学习经验

    科学计算领域,BLAS(基础线性代数子程序)和LAPACK(线性代数包)是不可或缺的,它们提供了高效的数值计算算法。对于游戏开发,有许多库如SDL(Simple DirectMedia Layer)、SFML(Simple and Fast Multimedia ...

    NOIP初赛理论知识复习资料

    计算机的应用包括科学计算、自动控制、信息处理、辅助设计(教学、制造)等。 计算机系统的基本组成 计算机系统由硬件和软件两部分组成。计算机硬件由五大部分组成:运算器、控制器、存储器、输入设备、输出设备。...

    关于计算机名言.pdf

    Dijkstra”是计算机科学界的传奇人物,他的工作影响了编程语言理论、数据结构和算法分析等领域,如提到的“Goto语句有害”就是一个非常有名的名言,强调了编程中应该避免无条件跳转的编程习惯。Dijkstra还提出了...

    Fortran编程教材-世界顶级高校教材

    - **应用场景**:广泛应用于科学计算、工程分析等领域,特别适合于处理大规模数据集。 - **历史发展**: - 由John Backus在IBM公司领导下开发的第一个Fortran编译器于1957年发布。 - 自发布以来,Fortran经历了...

    现代Fortran语言中文手册教程

    - **社区支持**:虽然C++的社区更为广泛,但对于专注于科学计算的开发者而言,Fortran拥有更丰富的特定领域的资源和支持。 - **易读性**:Fortran代码通常比C++更容易阅读,尤其是在处理复杂的数学公式时。 ##### ...

    matlab捕食者算法

    它的语法简洁,且包含大量内置函数,适用于工程计算、科学计算和数据分析等领域。MATLAB+C结合,能够利用C语言的高效性,增强MATLAB程序的执行速度,特别是在处理大规模计算时。 【捕食者算法的原理】 捕食者算法...

    LBG算法

    灰度图像指的是每个像素只有一种灰度值,没有颜色信息,通常用于科学计算和医学影像等领域。 ** Lena图像** "Lena"是一张常用的测试图像,在图像处理和计算机视觉领域非常有名。这张图片源于1972年《Playboy》杂志...

    菲顿

    8. **第三方库**:如 NumPy、Pandas、Matplotlib 用于科学计算和数据分析,TensorFlow 和 PyTorch 用于深度学习,Django 和 Flask 用于 web 开发等。 9. **解释器与交互式编程**:Python 解释器允许直接运行代码,...

    利用管道技术实现分布式系统 (2004年)

    分派到不同机器上的进程通过管道技术连接起来协同工作展现了分布式系统的灵活性和更强的计算能力。无名管道只允许同一台机器上的进程进行通信。windows NT4.0以上版本开始支持有名管道。本文的实例采用Visual C++6.0...

Global site tag (gtag.js) - Google Analytics