OONumerics User :

From: Gabriel M. Beddingfield (gabriel_at_[hidden])
Date: 2006-01-22 12:26:15


On Thu, December 8, 2005 2:00 pm, phil said:
> I don't get it. I looked at the documentation of TNT. But there is no
> mention of factorization schemes, eigenvalue computations, etc. Is TNT
> just a promise or a working linear algebra package?

Here's what I understand about the NIST libraries (TNT et al):

1. TNT is a library of template classes for dense matrices and vectors.
It implements basic matrix operations, but (IIRC) not vector math
operations such as dot and cross product. The TNT library does not
include any solvers (e.g. LU, QR, SVD, eigenvalues, etc.)

2. The JAMA library uses TNT to solve your systems.

3. SparseLib++ is a template library of template classes for sparce
matrices. Like TNT it implements basic matrix operations and no solvers.
Also, IIRC the matrices tend to be read-only copies of matrices. The
classes don't lend themselves to dynamically building a sparse matrix.

4. IML++ is a template library of iterative matrix solvers (i.e. Conjugate
Gradient methods). It is not tied down to any matrix class implementation
(like TNT or SparseLib)... but rather can operate on any classes that has
a defined interface (usually scalar operations and matrix multiplication).
 I believe IML++ is written with SparseLib++ in mind primarily, but it
should be able to work successfully with any prosaic matrix implementation
(however you may need to supply an adapter class).

I don't know how wide the use of these libraries is. These projects are
under active maintenance (e.g. JAMA last updated 6/2/05 and TNT 5/31/05).
I don't know how active the development is, either. I suspect the
priority on these has waned for a few reasons:

A. Performance - These libraries do not utilize any BLAS, which is
critical to performance. Therefore in practice you're bound to get better
performance using something like LAPACK.

B. MTL - The MTL library implements about the same stuff, and the solvers
are part of the library (so it's easier to understand how things fit
together). It also has conditions where you may leverage a LAPACK or BLAS
interface. Available benchmark performance figures establish MTL as a
good choice, whereas these figures appear to be unavailble for the NIST
libraries.

C. IMHO the best part of the NIST libraries is the IML++. And it's
written in such a way that it can still be utilized with a library like
MTL.

I hope this sheds some light on the issue. FYI, I think that Dr. Pozo is
a member of this list (he's the lead developer of these NIST libraries).

Peace,
Gabriel

-- 
               G a b r i e l   M   B e d d i n g f i e l d