LAPACK
LAPACK(线性代数程序包)是一个标准的数值线性代数软件库。它提供了一系列功能强大的程序,可以用来求解线性方程组、线性最小二乘问题、特征值问题和奇异值分解。此外,它还包含了实现相关矩阵分解的程序,如LU分解、QR分解、Cholesky分解和Schur分解等。LAPACK最初是用FORTRAN 77编写的,但在2008年发布的3.2版本中转向了Fortran 90。这些程序能够处理实矩阵和复矩阵,并同时支持单精度和双精度计算。LAPACK的高效性和可移植性很大程度上依赖于底层的BLAS(基础线性代数子程序)实现。
作为LINPACK(用于线性方程和线性最小二乘)和EISPACK(用于特征值计算)的后继者,LAPACK的设计理念有了重大创新。虽然LINPACK是在20世纪70年代到80年代针对当时的共享内存向量计算机设计的,但LAPACK则着眼于更现代的计算架构。它能够有效利用现代处理器的缓存系统和超标量处理器的指令级并行性。因此,在配备精心调优的BLAS的现代计算机上,LAPACK的运行速度可以比LINPACK快若干数量级。随着技术发展,LAPACK后来又被扩展到分布式内存系统上,这些扩展体现在ScaLAPACK和PLAPACK等后续程序包中。
Netlib发布的LAPACK采用三条款BSD风格许可证,这是一种限制很少的宽松自由软件许可证。