You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Jiri Pittner 43e53b0bbc optional threshold for sparsemat::simplify 3 days ago
.gitignore implementation of permutations in progress 1 year ago
ChangeLog Version 1.0 migration to git 1 year ago
LICENSE added some aux files previously not migrated 1 year ago
Makefile.am added support for profiling 3 weeks ago
README updated readme 1 year ago
acinclude.m4 Version 1.0 migration to git 1 year ago
aminclude.am Version 1.0 migration to git 1 year ago
auxstorage.h *** empty log message *** 13 years ago
bisection.h *** empty log message *** 13 years ago
bitvector.cc tiny fix in bitvector 11 months ago
bitvector.h implemented optional shift in bitvector mantissa 1 month ago
configure.ac added support for profiling 3 weeks ago
conjgrad.h *** empty log message *** 13 years ago
contfrac.cc finished ContFrac implementation 6 months ago
contfrac.h ContFrac constructor from list 2 months ago
csrmat.cc *** empty log message *** 1 year ago
csrmat.h *** empty log message *** 12 years ago
cuda.h *** empty log message *** 12 years ago
cuda_la.cc cuda 12 years ago
cuda_la.h cuda 12 years ago
davidson.h added warnings in davidson 1 month ago
diis.h *** empty log message *** 5 years ago
doxygen.cfg added some aux files previously not migrated 1 year ago
efector.cc *** empty log message *** 13 years ago
footer.html added some aux files previously not migrated 1 year ago
fortran.h *** empty log message *** 9 years ago
fourindex.cc *** empty log message *** 3 years ago
fourindex.h added symmetry declaration for complex 2-el integrals to fourindex.h 11 months ago
gmres.h *** empty log message *** 13 years ago
la.h a simple class for continued fractions introduced 6 months ago
la_traits.h change in traits.h for compatibility with NRVec as quantum register 2 months ago
laerror.cc _LA_count_check not const 9 months ago
laerror.h _LA_count_check not const 9 months ago
mat.cc dummy conjugateme for real matrices 1 month ago
mat.h NRMat complexify(real,imag) 1 month ago
matexp.h matrix exp() normtype->elementtype for complex exp 4 days ago
noncblas.cc compatibility changes 1 year ago
noncblas.h *** empty log message *** 3 years ago
nonclass.cc realpart() for sparsemat 3 days ago
nonclass.h optional vr vl pointers for gdiagonalize 1 month ago
permutation.cc NRVec sorting moved to .h to be available for newly derived non-plain data types 2 months ago
permutation.h working on contfrac 6 months ago
polynomial.cc implemented Hermite polynomials 10 months ago
polynomial.h basic routines for ContFrac 6 months ago
qsort.h *** empty log message *** 13 years ago
quaternion.cc fix of quaternion.cc for older compiler compatibility 10 months ago
quaternion.h LA traits for Quaternion class 1 month ago
simple.cc simple.h and simple.cc for algorithms independent on external libraries 9 months ago
simple.h simple fit weight scaling 9 months ago
smat.cc continueing on permutations 1 year ago
smat.h diffabs return normtype entity, elementwise abs() implemented 9 months ago
sparsemat.cc optional threshold for sparsemat::simplify 3 days ago
sparsemat.h optional threshold for sparsemat::simplify 3 days ago
sparsemat_traits.h *** empty log message *** 15 years ago
sparsesmat.cc *** empty log message *** 1 year ago
sparsesmat.h *** empty log message *** 12 years ago
strassen.cc *** empty log message *** 13 years ago
t.cc some tests with unitary matrices 1 month ago
t2.cc removed dependence on libtraceback 11 months ago
test.cc *** empty log message *** 13 years ago
vec.cc fixed sparsemat::gemv 3 days ago
vec.h nrvec concatmescaled 4 days ago
vecmat3.cc gauss elimination for vecmat3 9 months ago
vecmat3.h vec3 elementwise_product 9 months ago

README

    LA: linear algebra C++ interface library

Copyright (C) 2008- Jiri Pittner <jiri.pittner@jh-inst.cas.cz> or <jiri@pittnerovi.com>
complex versions written by Roman Curik <roman.curik@jh-inst.cas.cz>
cuda interface contributed by Miroslav Sulc <miroslav.sulc@jh-inst.cas.cz>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
--------------------------------------------------------------------------------------------------
This software provides a C++ vector and matrix class with an interface
to BLAS and ATLAS linear algebra libraries and a few additional features.
Templates are employed in order to achieve generic applicability of the algorithms.
In particular, iterative methods suitable for sparse matrices (Davidson diagonalization, linear solvers, matrix exponential)
can be applied to your custom matrix class, which does not need to contain any explicit
storage of the matrix (only matrix times vector operation has to be provided).
(In quantum chemistry, a particular application of this technique is called direct-CI.)
The library implements reference counting to avoid overhead when copying matrices and passing them by value;
on the other hand it does NOT optimize matrix expressions, you should yourself call gemv, axpy etc. instead of using operator* etc. where appropriate.

vec.h, vec.cc : vector class
mat.h, mat.cc : general matrix class
smat.h, smat.cc: symmetric matrix class
vecmat3.h, vecmat3.cc : simplified class for 3-dimensional entities
quaternion.h, quaternion.cc : quaternions and 3-dim rotations
sparsemat.h sparsemat.cc: sparse matrix class
sparsesmat.h sparsesmat.cc: sparse symmetric matrix class
csrmat.h, csrmat.cc: unfinished work on compressed row format sparse matrices
nonclass.h nonclass.cc: some methods not belonging to a class - linear solver, diagonalization
conjgrad.h: conjugate gradient sparse linear solver
gmres.h: generalized minimal residual sparse linear solver
matexp.h: matrix exponential (suitable both for dense and sparse matrices - cf. exptimes routine)
qsort.h: generic quick-sort template
bitvector.h: bit vector class
bisection.h: generic bisection search
diis.h: DIIS convergence acceleration
davidson.h: Davidson (modified Lanczos) sparse matrix diagonalization
fourindex.h, fourindex.cc: class for four-index quantities, in particular two-electron integrals in quantum chemistry, allows transparent access to externally stored integrals
auxstorage.h: class facilitating simple file IO for the vectors and matrices
permutation.h, qsort.h : permutations and sorting


INSTALLATION:
0. autoreconf --install if ./configure does not exist
1. ./configure with DEBUG, OPTIMIZE and MATPTR options, export CXXFLAGS=-I<path> and export LDFLAGS=-L<path> (and possibly added -latlas -lcblas)
pointing to your preferred BLAS/LAPACK, your preferred --prefix and --enable/--disable options for optimization and debugging
2. make
3. make check (to see that the programs t and test compile and link without errors)
4. make install

USING:
1. #include "la.h"
2. using namespace LA;
3. look at test.cc and t.cc for examples of use
4. remember to always call .copyonwrite() before you start writing to individual matrix elements explicitly
(when modifying a matrix via provided methods or operators other than () and [], copy on write is performed transparently)
5. Note that the library does not attempt to do any optimizations of the evaluation of matrix expressions (by template metaprogramming and postponed evaluation techniques), so instead of inefficient "z=A*2*x + y*1.5 " call gemv and axpy methods. On the other hand it makes shallow copies, so you can pass matrix by value to a subroutine and you are allowed to write x=A*x, as a temporary will be created.
6. you may compile it with DEBUG defined to perform index range and other checks

NOTE:
We named the classes NRMat, NRVec etc. since we started to use them together with the Numerical Recipes library. They can be used with Numerical Recipes in C++, however, they are completely independent of this library.

This is a beta release. The library has already been in use, but not every function/method has been tested.
There is no documentation except the source itself, since I originaly did not intend to distribute it.
I will appreciate your bugfixes, exhancements, suggestions etc.

Jiri Pittner