fourindex.h, fourindex.cc: class for four-index quantities, in particular two-electron integrals in quantum chemistry, allows transparent access to externally stored integrals
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.