Mathcom Home
Services Customers Tech Info Contact Us
 

Dense Linear Algebra Systems

The best resources for linear algebra are:

The texts by Golub & Van Loan and by Watkins.

On the net, library package LAPACK, with BLAS, from netlib (see Netlib ) is a widely recommended replacement for EISPACK and LINPACK. It handles dense matrices only.

As far as complete packages, nearly all NA packages, both on the net and commercial, include linear algebra as part of their core. See the listings above.

See also: Jack Dongarra's list of Linear Algebra Software

National HPCC Software Exchange Catalog

Simpler or smaller systems for linear algebra include:

C.R. Birchenhall's MatClass is a C++ class for numerical computation Offers a general purpose dense, real matrix class. Has a family of decomposition classes based on LU, Cholesky, Householder QR and SVD. Has a family of OLS regression classes based on above decompositons. Has a family of special function classes. Random number class. Has a simplified I/O structure. Documents : Very thorough tex manual, with discussion of design philosophy. Currently the manual does not cover all the features of the I/O.

One user comments that: From my experience I can say that is very well done. It covers all the possible statistical distributions, as well as, random numbers generation from these distributions.

newmat0.10 is a matrix library. Simple, well documented, not templated but easy to use.

TNT (The Template Numerical Toolkit) is a collection of mathematical libraries for numeric computation in C++. Its fundamental classes include vectors, matrices, and multidimensional arrays. The basic goal is to allow one to express mathematical computation at a higher level of abstraction, while still retaining some control over performance and optimization issues. Doing so requires a careful analysis to balance these tradeoffs.

The toolkit provides an integrated collection of generic matrix/vector classes based on components of the Standard Template Library (STL) and ANSI C++, together with specialization of generic algorithms for maximal efficiency. The TNT component for linear algebra is a successor to the Lapack++, Sparselib++, IML++, and MV++ packages. Its goal is to formally integrate these ideas into a generic algorithmic library, supporting user-defined data types, and increasing its functionality. It also takes advantage of the latest features in the ANSI C++ specification which were not available when we designed our earlier packages.

[SJS] TNT appears to have a good base of basic linear algebra, but is nowhere near as complete as LAPACK. My cursory check found no eigenvalue facilities. I suspect the project was abandoned half done. Correct me if I'm wrong!

GMM++ is generic matrix library is built as an interface for already existing class of vectors and matrices. It provides also predefined type of dense, skyline and sparse matrices. It is largely inspired from MTL/ITL but we hope a little bit simpler to use. matrix x matrix multiplication works for any type of matrices (even with mixed types). An important extension is the possibility to access to sub-matrices for read or write operations with any kind of interfaced matrix. Linear solvers has been imported from ITL (CG, BICGSTAB, GMRES, QMR, dense LU, ...) with classical preconditionners (Incomplete cholesky, ILU, ILUT ...) The performance is comparable with the one of MTL, slightly better on some solvers we optimized. Inpout / output with standard formats is also provided. This library is available under LGPL.

The FLAME project is aimed at automating the creation of linear algebra software. The project encompasses a new notation for expressing algorithms, a methodology for systematic derivation of algorithms, Application Program Interfaces (APIs) for representing the algorithms in code, and tools for mechanical derivation, implementation and analysis of algorithms and implementations.



Copyright 1995-2008 Mathcom Solutions Inc       info@mathcom.com       Updated March 27, 2008