File:  BLinAlg-FFT.tar.gz
Author: Oleg Kiselyov (oleg@pobox.com)
Release: 4.3 (Dec 25, 1998)
Compatibility: R4
Location: contrib/development
Description: Basic Linear Algebra, Optimization, FFT classlib
Notes:  cross-platform source code plus compiled BeOS R4 PPC library


This classlib declares Matrix, Vector, subMatrices, and LAStreams over real domain; contains efficient  
and fool-proof  implementations of level 1 and 2 BLAS (element-wise operations and various 
multiplications), transposition, determinant evaluation and matrix inverse. There are 
operations on a single row/col/diagonal of a matrix. Distinct features of the package are Matrix 
views, various Matrix streams, and LazyMatrices. Lazy construction allows one to write matrix 
expressions in a natural way while imposing no hidden temporaries, no deep copying, and no 
reference counting. 

LinAlg stresses Matrix streams, which provide a sequential view/access to a matrix or its parts. 
LABlockStreams may span over an arbitrary rectangular block of a matrix, including the whole 
matrix, a single matrix element, and all other block sizes in between. Matrix streams are seek-
able and subrange-able. A stream or a substream are always created in-line; they do not allocate 
any heap storage, and are safe. 

The package proves that many of Linear Algebra algorithms indeed require only sequential 
access to a matrix or its subblocks, which is simpler and faster than a random access. Notable 
examples of such "serial algorithms" are matrix inverse and Householder bidiagonalizations. 
Every feature of the package is extensively tested by validation code (included). 

Major attractions of the current complete release (v4.3) are 

- Hooke-Jeeves multidimensional optimization of functors 
- Aitken-Lagrange interpolation 
- Singular Value Decomposition and its application to solving Ax=b, where matrix A does 
not have to be square, and b does not have to be a vector. 
- More support for Matrix and Vector promises:
	Matrix A = inverse(D); C = A*B;
  do what they say, as efficiently as possible. 
- A great variety of matrix streams, e.g.:
	assert(
  		of_every(ConstMatrixRow(m,i)).max_abs(of_every(vect))
  	== 2.0 ); 

A README file tells much more about the features and how to use them. It contains many 
commented code snippets.  NumMath.dr file tells what the other files are for. In addition, the archive contains an already built library -- libla.a, BeOS PPC R4b4. But the source code is cross-platform compatible and compiles as it is on various flavors of UNIX, Linux, and WinNT. See the README file for more details.