LinAl, is a simple, easy to use and efficient linear algebra library.
LinAl was designed to bring together C++ and FORTRAN. After all, FORTRAN is the one and only true language for numerical computations anyway ;-).
At the same time LinAl is supposed to be easy to use, fast and reasonably save. With respect to the tradeoff between speed and safety, certain compromises were made, whereby emphasis was put on simplicity and speed.
The library LinAl is based on STL techniques and uses STL containers for the storage of matrix data and STL algorithms where feasible.
Low level, algebraic operators, linear solvers and eigenvalue solvers are implemented, based on calls to BLAS, LAPACK and CGSOLX. Implementation of a Lanczos eigensolver is planned.
LinAl features the following storage classes:
Matrix - pure virtual base class
The classes are reference counted and implemented with copy on write.
LinAl implements algebraic operators (+-*/) for its storage types where they are meaningful. Additionally, functions to solve linear equation systems are implemented. The implementation of all computationally intensive operations is based on calls to LAPACK and BLAS.
LinAl is a small library with an emphasis on speed and ease of use. It does not provide more than the above one- and two-dimensional arrays. LinAl is not intended to provide storage container classes for arbitrary data types. Instead the intention for LinAl is to have a small, fast set of classes that interface well with existing software libraries such as LAPACK.
LinAl is not intended to compete with Blitz, TNT or Espresso, all of which are excellent libraries that are strongly recommended to the interested reader.
LinAl was initially created as part of the p-version finite element code AdhoC.
If you are interested in LinAl, visit the LinAl homepage at http://linal.sourceforge.net/ where you can obtain information about how to download and use LinAl. Additionally you will find "Open Source" infrastructure, such as a mailing list and CVS access from the LinAl homepage.
LinAl is published under the LGPL, the lesser general public license of the GNU project (see www.gnu.org for details). If you need a more liberal license so that you can incorporate LinAl into your own commercial or non commercial projects, please drop me a line. LinAl is Copyright 1999-2000 by Roland Krause. LinAl comes with standard disclaimers, see the license file for details.