As part of a project on rigorous set-based numerics, I need some generic

linear algebra routines in C++. Unfortunately, none of the packages I

have found to date support everything I need (GMP number types and

Interval types; solution of linear equations, QR factorisation and

singular value decomposition; dense and sparse matrices; Matrix and

Vector classes). There are a number of partial solution (e.g. Boost

ublas has linear equations; MTL has an interface to Fortran LAPACK; JAMA

has the algorithms but poor types), but nothing which does everything I

want, and many libraries have incompatible classes.

As a temporary solution, I have developed my some of my own code. I

think it's valuable to separate algorithms from data structures, as in

the C++ STL and the Fortran BLAS/LAPACK framework. Hence computational

core of this code are a templated BLAS library, TBLAS, and a templated

library TLAPACK implementing a limited subset of LAPACK. I made the

TBLAS library by judiciously stream-editing the GNU Scientific Library

(GSL) C BLAS, but the TLAPACK routines needed more work. I also wrote a

simple class interface, SLA, with some expression templates.

I think the TBLAS and TLAPACK libraries are worth further development

(the code isn't very clean, not fully tested, can problably be made more

general, unoptimized, the LAPACK routines are minimal, and maybe the

interface could be simplified). Ideally, these packages would eventually

be suitable for inclusion in the Boost C++ library. I think it's

important that the packages can be used independantly of any class-based

linear algebra package. Unfortunately, I don't have time to work on this

much myself, so it would be great if somebody else would be willing to

take over the main development.

If you want to take a look at the packages, you can download them at

http://homepages.cwi.nl/~collins/software/sla-0.3.5.tar.gz(Apologies for cross-posting)

_______________________________________________

glas mailing list

[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/glas