o----------------o
| SELDON HISTORY |
o----------------o


Version 4.1 (2003-12-14)
-----------

** Improvements:

- Added all Blas level 2 and level 3 functions (except if they involve
  matrices not defined in Seldon, e.g. triangular matrices).

- Added symmetric sparse matrices.
- Added complex sparse matrices.
- Added symmetric complex sparse matrices.

- Added class 'Array3D' for 3D arrays.

- 'Vector<T>' now refers to 'Vector<T, Vect_Full>'.
- 'Matrix<T>' now refers to 'Matrix<T, General, RowMajor>'.

- Removed (temporarily) class 'Matrix_Calculation' (and 'IColMajor'
  and 'IRowMajor') from Seldon.

- Added allocator 'NaNAlloc' which sets allocated elements to "not a number".
- Added allocator 'MallocAlloc' based on 'malloc'.
- 'MallocAlloc' is now the default allocator (instead of 'CallocAlloc').
- Added the ability to set the default allocator (through 'SELDON_DEFAULT_ALLOCATOR').

- Added inclusion guards to allow multiple inclusions of Seldon.

- Changed 'Matrix_Sparse::Reallocate(int, int, Vector&, Vector&, Vector&)'
  behavior: input vectors are not copied anymore, their 'data_' arrays are set
  as part of the matrix and the vectors are nullified on exit ('Vector::Nullify').
- Renamed 'Matrix_Sparse::Reallocate(int, int, Vector&, Vector&, Vector&)'
  into 'Matrix_Sparse::SetData(int, int, Vector&, Vector&, Vector&)'.

- Added method 'Vector<Vect_Full>::Nullify'.
- Added methods (for sparse matrices):
   + 'Matrix_Sparse::Clear'
   + 'Matrix_Sparse::GetNonZeros'
- Added functions 'Mlt' for symmetric complex sparse matrices.
- Added functions 'Mlt' for complex sparse matrices.
- Added functions 'Mlt' for sparse and symmetric sparse matrices.
- Added 'MltTrans(alpha, Matrix&, Vector&, Vector&)' for symmetric sparse matrices.
- Added 'MltTrans(alpha, Matrix&, Vector&, Vector&)' for sparse matrices.
- Renamed 'MltTrans(alpha, Matrix&, Vector&, Vector&)' into
  'Mlt(alpha, SeldonTranspose&, Matrix&, Vector&, Vector&)'.

- Constructor 'Matrix_Pointers::Matrix_Pointers(int, int)' may now
  throw an exception in case the program runs out of memory.
- Constructor 'Matrix_Sparse::Matrix_Sparse(int, int, Vector&, Vector&, Vector&)'
  may now throw an exception in case the program runs out of memory.

- Cleaned up debug-levels definitions.

** Bug fixes:


Version 4.0 (2003-08-31)
-----------

** Improvements:

- Added row-major and column-major symmetric matrices stored
  in packed form (Blas format).
- Added an interface to Blas (level 1) functions:
   + 'Add' (xAXPY)
   + 'ApplyModifRot' (xROTM)
   + 'ApplyRot' (xROT)
   + 'Copy' (xCOPY)
   + 'DotProd' (xDOT)
   + 'DotProjConj' (xDOTC)
   + 'DotProdDouble' (SDSDOT)
   + 'GetMaxAbsIndex' (IxAMAX)
   + 'GenModifRot' (xROTMG)
   + 'GenRot' (xROTG)
   + 'Mlt(const T, Vector&)' (xSCAL)
   + 'Norm1' (xASUM)
   + 'Norm2' (xNRM2)
   + 'Swap' (xSWAP)
- Added an interface to some Blas (level 2) functions:
   + 'MltAdd' (xGEMV and xSPMV)
- Overloaded operator << for matrices and vectors.
- Overloaded methods 'Write', 'WriteText' and 'Read' (for matrices
  and vectors) with arguments of 'ofstream' or 'ifstream' type.
- Added methods:
   + 'Clear'
   + 'SetData'
  to matrices and vectors classes to allow for low level
  manipulations.
- Improved error management in methods 'Write', 'WriteText'
  and 'Read' (for matrices and vectors).
- Improved error messages in case of indices out of range.

** Bug fixes:

- 'FILE_FUNCTIONS_VECTOR_CXX' was not defined at the end
  of "Functions_Vector.cxx", which led to compilation problems
  in case of multiple inclusions.


Version 3.3 (2003-08-02)
-----------

** Improvements:

- Improved input/output operations ('Write', 'WriteText' and 'Read').
- Added convenient macros and functions:
   + to_str and to_num
   + ERR, DISP and DISPLAY
- Changed 'include' statements to be fully compliant with the C++ standard.

** Bug fixes:


Version 3.2 (2003-06-09)
-----------
