/** \mainpage Lapack++ v@VERSION@ API Documentation
Homepage: http://www.sourceforge.net/projects/lapackpp
Download page: http://sourceforge.net/project/showfiles.php?group_id=99696
LAPACK++ is a library for high performance linear algebra computations.
This version includes support for solving linear systems using LU, Cholesky,
QR matrix factorizations, and symmetric eigenvalue problems.
\section sect_quick Quick Start
The most important classes in this library are
- \ref LaGenMatDouble for real-valued matrices and
- \ref LaGenMatComplex for complex-valued matrices, and
- \ref LaVectorDouble and
- \ref LaVectorComplex for the corresponding vectors, respectively.
You can create objects of that type by the constructors, or by the
static constructors for elementary matrices
(e.g. LaGenMatDouble::zeros), or by the template functions in
latmpl.h .
Then you will probably want to use matrix-vector
operations from the BLAS library. These can be found in the files
blas1pp.h , blas2pp.h , and blas3pp.h (e.g. \ref
Blas_Mat_Mat_Trans_Mult).
And finally functions for solving equation systems can be found in
laslv.h . SVN decomposition in lasvd.h . QR decomposition in
\ref LaGenQRFactComplex .
Note: To switch on the support for complex-valued matrices, you need
to define the macro \c LA_COMPLEX_SUPPORT in your application.
\section sect_plat Platforms
LAPACK++ v@VERSION@ has been successfully compiled on the following platforms:
- Linux/Unix gcc2.95.x, gcc3.x, gcc4.x
- Windows 9x/NT/2000 under MinGW and gcc3.x (see file README.W32)
- Windows 9x/NT/2000 under Microsoft Visual Studio .NET MSVC; project file is included
- Mac OS X (note: this platform required to set
FLIBS="-L/sw/lib -lfrtbegin -lg2c -lSystem" before
the ./configure completed successfully.)
If you have compiled LAPACK++ on another platform successfully, then
the maintainer would be glad to hear about that.
Some similar functionality as in LAPACK++ is offered by the
library IT++, see http://itpp.sourceforge.net/ , but one important
high-performance feature missing in IT++ is the ability to create
"submatrix views" and "shallow copies" of matrices, i.e. pass
submatrices by reference instead of by value.
\section sect_req Requirements
This package requires the packages "blas", "lapack" (without the
"++"), and a Fortran compiler. On most Linuxes these are available
as pre-compiled binaries under the name "blas" and "lapack". For
SuSE 10.x, the Fortran compiler is available as package
"gfortran". For SuSE 9.x, the Fortran compiler is available as
package "gcc-g77".
\section sect_compile Compile and Install
\subsection compile_win Windows
On Windows, an .exe setup package with the pre-compiled DLL is
provided. Watch out: This DLL works only with the gcc compiler,
not with the Microsoft Visual Studio C++ (MSVC)
compiler!
For compiling on Windows with the Microsoft Visual Studio C++
(MSVC) compiler:
1. Install the .exe setup package because it contains the
auxiliary libraries LIBBLAS32.LIB and others. The linker library
LIBBLAS32.LIB and LIBLAPACK32.Lib is installed into
c:\\Program-Files\\Lapackpp\\lib\\ whereas the corresponding
LIBBLAS32.DLL and LIBLAPACK32.DLL are installed into your Windows
system directory, e.g. c:\\WINNT. These files are unchanged since
years, so you can safely use these four files from an earlier
release of lapackpp to compile a newer release from source code.
2. Unpack the tar.gz package with the source code, and
3. compile the source code using the provided
lapackpp.vcproj MSVC project file, which will also
compile two small test programs. You might have to adapt the
linker input directories (Project Properties -> Linker -> Input)
so that the LIBBLAS32.LIB linker library can be found in
c:\\Program-Files\\Lapackpp\\lib\\.
4. After successfully compiling the DLL, you need to copy the
LAPACKPP.DLL file to whatever location you consider
appropriate. This can either be your c:\\WINNT directory, or the
working directory of your actual application that should use
lapackpp.
Note: This has been tested only with MSVC 7.1. In older MSVC
versions, lapackpp probably doesn't compile anymore. This might be
due to problems with the data types for complex-valued matrices,
and in that case you can try to compile the real-valued matrices
only by using the included project file lapackpp-onlyreal.vcproj.
For compiling on windows with gcc/mingw32 compiler, see
README.WIN32.
\subsection compile_linux Linux/Unix
If you retrieved this package from CVS, you first need to run
./autogen.sh
and continue with compilation after that.
For compilation, run the following commands:
\verbatim
./configure --prefix=/your/install/path
make
make install
\endverbatim
Type ./configure --help to see more information. After
successful compilation, you can run various test programs by the
command "make check".
\section sect_doc Documentation
The documentation is in the header files. The comments in the
header files are used by the doxygen tool for this
auto-generated HTML documentation, see e.g. \ref LaGenMatComplex,
\ref Blas_Add_Mult, \ref Blas_Mat_Vec_Mult, \ref
Blas_Mat_Mat_Mult, \ref LaLinearSolveIP, or \ref LaSVD_IP.
Documentation for the underlying LAPACK (without the '++') package
can be found on http://www.netlib.org/lapack and a search engine
is on http://www.cs.colorado.edu/~lapack , but please keep in mind
that these are only the underlying libraries, not Lapack++ itself.
LAPACK routines in turn are written so that as much as possible of
the computation is performed by calls to the Basic Linear Algebra
Subprograms (BLAS). Information about BLAS can be found on
http://www.netlib.org/blas and
http://www.cs.colorado.edu/~lapack/aboutBlas.html , but please
keep in mind that these are only the underlying libraries, not
Lapack++ itself.
There is some old, outdated information about the original
LAPACK++-1.1 in the LAPACK++ User's Manual and Class Reference
Manual, all available from http://www.netlib.org/ or on
http://math.nist.gov/lapack++/ , but please keep in mind that this
is old and outdated!
\section sect_usage Library Usage
The resulting shared library is called "liblapackpp.so" or, on
Windows, "liblapackpp32.dll".
To use it in your program, you need to specify the location of the
header files by the compiler argument \c -I (for gcc), the
location of the shared library by the compiler argument \c -L and
the library itself by \c -llapackpp . All of these arguments can
be obtained from the pkg-config helper program, see "man
pkg-config". A linker command might look like this:
\verbatim
gcc `pkg-config lapackpp --libs` foo.o
\endverbatim
If your application uses autoconf/automake, these compiler
arguments can alternatively be obtained from the \c ACX_LAPACKPP
macro from \c macros/acx_lapackpp.m4. A linker command might look
like this:
\verbatim
gcc -L/usr/local/lib -llapackpp foo.o
\endverbatim
To switch on the support for complex-valued matrices, you need to
define the macro \c LA_COMPLEX_SUPPORT in the source code of your
application.
\section sect_Other Related projects
* http://www.cvmlib.com/ CVM Class Library with a long history of improvements
* http://sourceforge.net/projects/lpp/ Recently started; only low-level classes
\section sect_LAPACKPP LAPACK++ v1.1 vs. v1.9 and higher
The original LAPACK++ (up to v1.1a) has been written by R. Pozo et
al. at the University of Tennessee, Knoxvilee, TN., and Oak Ridge
National Laboratory, Oak Ridge, TN, and is available on
http://math.nist.gov/lapack++/
However, they abandoned LAPACK in the year 2000 and stated: "Lapack++
is no longer actively supported. The successor to this project is that
Template Numerical Toolkit (TNT), see http://math.nist.gov/tnt for
details." Unfortunately, the project TNT never really took off.
Therefore this fork from the original LAPACK++ has been started. There
are a whole number of changes now in here. Most notably, this local
copy has complex matrices enabled again by adding a custom copy of
stdc++'s complex type (see include/lacomplex.h and include/lacomplex).
Along these lines, wrapper functions for more and more LAPACK and BLAS
routines have been added. Also, this includes fixes in various wrong
default arguments.
\section sect_features Features
LAPACK++ v. 1.9 supports various matrix classes for vectors, non-symmetric
matrices, symmetric positive definite (SPD) matrices, symmetric matrices,
banded, triangular, and tridiagonal matrices; however, Version 1.1 does
not include all of the capabilities of original f77 LAPACK. Emphasis is
given to routines for solving linear systems consisting of non-symmetric
matrices, symmetric positive definite systems, and solving linear least-
square systems.
2004-01-14, Christian Stimming
*/