2009-07-04  Brian Gough  <bjg@network-theory.co.uk>

	* luc.c (gsl_linalg_complex_LU_solve, gsl_linalg_complex_LU_svx,
	gsl_linalg_complex_LU_refine, singular): added check
	for singular matrix

2009-06-28  Brian Gough  <bjg@network-theory.co.uk>

	* lu.c (gsl_linalg_LU_solve, gsl_linalg_LU_svx,
	gsl_linalg_LU_refine, gsl_linalg_LU_invert, singular): added check
	for singular matrix

2009-06-04  Brian Gough  <bjg@network-theory.co.uk>

	* hermtd.c (gsl_linalg_hermtd_unpack): use U as matrix name
	instead of Q

2008-10-20  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp_jacobi): change use of
	gsl_coerce_double to macro so it is not called unnecessarily

2008-08-30  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c (solve_cyc_tridiag_nonsym): use x_stride when storing
	in x[] (fixes bug #24162)

2008-08-26  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_QRPT_update_dim): added tests for
	gsl_linalg_QRPT_update

	* qrpt.c (gsl_linalg_QRPT_update): handle rectangular matrices

2008-07-03  Brian Gough  <bjg@hp2.network-theory.co.uk>

	* Makefile.am (INCLUDES): use top_srcdir instead of top_builddir

2008-04-28  Brian Gough  <bjg@network-theory.co.uk>

	* bidiag.c (gsl_linalg_bidiag_unpack, gsl_linalg_bidiag_unpack2):
	use new descending loop convention

	* hermtd.c (gsl_linalg_hermtd_unpack): use new descending loop
	convention

	* hh.c (gsl_linalg_HH_svx): use new descending loop convention

	* lq.c (gsl_linalg_LQ_vecQ, gsl_linalg_LQ_unpack): use new
	descending loop convention

	* qr.c (gsl_linalg_QR_Qvec, gsl_linalg_QR_unpack): use new
	descending loop convention

	* svd.c (gsl_linalg_SV_decomp_mod): use new descending loop
	convention

	* svdstep.c (chase_out_trailing_zero): use new descending loop
	convention

	* symmtd.c (gsl_linalg_symmtd_unpack): use new descending loop
	convention

2008-04-03  Brian Gough  <bjg@network-theory.co.uk>

	* qr.c lq.c: removed unused definition of REAL

2007-08-27  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c: use GSL_ERROR for failed allocation, signal
	 GSL_EZERODIV if matrix is not positive definite

2007-08-17  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp): bail out if number of iterations
	exceeds 100*N

2007-08-16  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (main): add some svd tests with small values that will
	cause underflow in intermediate steps of SVD iteration

2006-08-14  Brian Gough  <bjg@network-theory.co.uk>

	* balancemat.c: balance a general matrix D^-1 A D for rows and
	columns

2006-04-24  Brian Gough  <bjg@network-theory.co.uk>

	* svdstep.c apply_givens.c householder.c: perform linear
	operations with level-1 blas when compiled with USE_BLAS.
	
2006-02-10  Brian Gough  <bjg@network-theory.co.uk>

	* cholesky.c (quiet_sqrt): added a quiet_sqrt to allow checking
	for positive definiteness without a runtime error

2005-08-22  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp_jacobi): reorganised convergence
	tests to increase robustness in the presence of extended precision
	registers.

2005-06-22  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp_jacobi): increased number of sweeps
	to MAX(5*N,12) and track numerical errors for better termination

2005-02-02  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp_jacobi): changed M<N test to correct
	matrix A instead of Q.

2004-12-23  Brian Gough  <bjg@network-theory.co.uk>

	* qr.c (gsl_linalg_R_svx): added missing function

2004-09-13  Brian Gough  <bjg@network-theory.co.uk>

	* test.c: added tests for LQ, P^TLQ solvers

	* ptlq.c: added support for PA = LQ decompositions

	* lq.c: added support for A = LQ decompositions

2004-05-30  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_LU_solve): increase test tolerance to accommodate
	gcc-3.3.3 w/ bounds checking

2004-05-26  Brian Gough  <bjg@network-theory.co.uk>

	* householder.c (gsl_linalg_householder_hm):
	(gsl_linalg_householder_mh):
	(gsl_linalg_householder_hm1): added blas code (but ifdef'd out)

	* test.c (test_SV_decomp_dim): skip NaNs in test
	(test_SV_decomp_mod_dim): skip NaNs in test

2004-04-26  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_TDN_solve): increased tolerance for tests
	(test_TDN_cyc_solve): increased tolerance for tests

2004-03-15  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c: (gsl_linalg_solve_symm_tridiag):
	(gsl_linalg_solve_tridiag):
	(gsl_linalg_solve_symm_cyc_tridiag):
	(gsl_linalg_solve_cyc_tridiag): use GSL_ERROR macro to report
	errors, make size restrictions tighter (no unused elements allowed
	to be passed in).

2004-03-06  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_SV_decomp_mod_dim): added tests for SV_decomp_mod

	* svd.c (gsl_linalg_SV_decomp): handle the case N=1 (SVD of a
	column vector)
	(gsl_linalg_SV_decomp_mod): handle the case N=1 (SVD of a column
	vector)

2004-03-05  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_SV_decomp): add tests with inf/nan

	* svd.c (gsl_linalg_SV_decomp): handle nans in block reduction

	* balance.c: handle infinity/nan when scaling input matrix

2003-07-24  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c (solve_cyc_tridiag_nonsym): fixed declarations of i so
	they do not shadow each other

2003-05-30  Brian Gough  <bjg@network-theory.co.uk>

	* householder.c (gsl_linalg_householder_hv): converted to use blas
	routines

2003-05-08  Brian Gough  <bjg@network-theory.co.uk>

	* test.c: added tests for QR_QRsolve and QRPT_QRsolve

	* qrpt.c (gsl_linalg_QRPT_QRsolve): fixed dgemv to use CblasTrans
	when computing Q^T b

	* qr.c (gsl_linalg_QR_QRsolve): fixed dgemv to use CblasTrans when
	computing Q^T b

Fri Oct 18 17:46:30 2002  Brian Gough  <bjg@network-theory.co.uk>

	* householdercomplex.c (gsl_linalg_complex_householder_transform):
	return tau = 0 to prevent division by zero for beta_r = 0

Mon Aug 12 20:12:55 2002  Brian Gough  <bjg@network-theory.co.uk>

	* bidiag.c (gsl_linalg_bidiag_unpack_B): fixed to copy
 	superdiagonal and not subdiagonal, as was incorrectly done
 	previously.

Sun Jun 16 11:57:00 2002  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp): keep track of maximum value
 	correctly when sorting singular values

	* test.c (test_SV_decomp): add 3x3 of SVD

	* svdstep.c (chase_out_intermediate_zero): handle case of dk=0
	(chase_out_trailing_zero): handle case of dn=0

Wed Apr 17 20:04:11 2002  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c (gsl_linalg_solve_tridiag):
	(gsl_linalg_solve_cyc_tridiag): added tridiagonal solvers for
 	non-symmetric case (David Necas <yeti@physics.muni.cz>)

Mon Apr 15 19:55:40 2002  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c (solve_cyc_tridiag): corrected typographical error in
 	Engeln-Mullges Algorithm 4.35, step 1.7 (f_(n-1) should be
 	alpha_(n-1))

Thu Sep 13 12:26:17 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_SV_decomp): added brute force testing of 2x2 svd

	* svdstep.c (svd2): fixed bug where singular values in 2x2 svd
 	were not ordered correctly.

Mon Sep 10 22:35:24 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_LUc_solve): added a test for complex LU

Tue Sep  4 17:22:58 2001  Brian Gough  <bjg@network-theory.co.uk>

	* luc.c: added LU decomposition for complex matrices

Wed Aug 29 16:34:50 2001  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp_jacobi): make sure all singular
 	vectors are zero, not just first.

	* svdstep.c (svd2): added explicit calculation of 2x2 svd, fixes
 	bug that prevents convergence.

Thu Aug  2 18:19:08 2001  Brian Gough  <bjg@network-theory.co.uk>

	* svdstep.c (trailing_eigenvalue): chose better value of mu when
 	dt=0.

Sun Jul  8 18:03:05 2001  Brian Gough  <bjg@network-theory.co.uk>

	* qrpt.c (gsl_linalg_QRPT_decomp): fix bug where null column
 	caused division by zero in norm-update calculation

Sun Jul  1 22:43:22 2001  Brian Gough  <bjg@network-theory.co.uk>

	* modified to use new-style vector views, affects most
 	functions

Wed Jun 20 13:38:24 2001  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp): added error checking

Tue Jun 19 23:19:49 2001  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp): Golub-Reinsch svd, has more
 	deterministic convergence
	(gsl_linalg_SV_decomp_mod):  Golub-Reinsch with
 	Preconditioning, much more efficient for M>>N

	* balance.c (gsl_linalg_balance_columns): balances (or
 	"equilibrates") the columns of a matrix

Sun Jun 17 21:49:03 2001  Brian Gough  <bjg@network-theory.co.uk>

	* givens.c: split out apply_givens functions into separate file
 	apply_givens.c

Wed Jun 13 23:41:34 2001  Brian Gough  <bjg@network-theory.co.uk>

	* qr.c (gsl_linalg_QR_decomp): simplified reverse loop

	* bidiag.c: bidiagonalisation of a matrix (needed for
 	Golub-Reinsch SVD)

Wed Jun  6 12:36:58 2001  Brian Gough  <bjg@network-theory.co.uk>

	* householdercomplex.c: split out complex functions into a
 	separate file to reduce linking dependencies

	* qrpt.c (gsl_linalg_QRPT_decomp): provide workspace as an
 	argument, to avoid allocating it on each call
	(gsl_linalg_QRPT_decomp2): provide workspace as an argument, to
 	avoid allocating it on each call

	* qr.c (gsl_linalg_QR_decomp): provide workspace as an argument,
 	to avoid allocating it on each call

Thu May 17 17:01:45 2001  Brian Gough  <bjg@network-theory.co.uk>

	* qr.c (gsl_linalg_QR_lssolve): added least squares solver

Sat Apr 28 00:39:53 2001  Brian Gough  <bjg@network-theory.co.uk>

	* qr.c (gsl_linalg_QR_update): fixed QR update to work correctly
 	with rectangular matrices where M > N

Mon Apr 23 10:29:01 2001  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c: removed EFAULT test since this should only apply to
 	non-null invalid pointers

Fri Apr 13 20:43:38 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test.c: replaced uses of matmult by dgemm

Sun Oct 22 13:56:30 2000  Brian Gough  <bjg@network-theory.co.uk>

	* householder.c (gsl_linalg_householder_transform): changed calls
 	to gsl_hypot() to hypot() so that the system function is used in
 	preference (the configure script will define hypot to gsl_hypot if
 	hypot is unavailable)

	* svd.c (gsl_linalg_SV_decomp): changed calls to gsl_hypot() to
 	hypot()

Sat Oct 21 15:54:56 2000  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.c (solve_tridiag): prevent out-of-bounds array access
 	for small N (attempt to access element[N-2] when N is 1).

Tue Sep 19 21:42:13 2000  Brian Gough  <bjg@network-theory.co.uk>

	* qrpt.c (gsl_linalg_QRPT_decomp2): added convenience function to
 	compute q,r unpacked decomposition directly

Wed Aug 16 19:50:35 2000  Brian Gough  <bjg@network-theory.co.uk>

	* svd.c (gsl_linalg_SV_decomp): take more care with singular
 	values, set the associated vectors to zero

Sun Aug 13 16:39:40 2000  Brian Gough  <bjg@network-theory.co.uk>

	* qrpt.c (gsl_linalg_QRPT_decomp): fixed obvious bug in selection
 	of column with max norm

Wed May 31 19:42:59 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_QR_update): increased tolerances on results to
 	allow tests to pass with other compilers

Wed May  3 21:19:45 2000  Brian Gough  <bjg@network-theory.co.uk>

	* cholesky.c: added cholesky decomposition/solve from Thomas
 	Walter. Modified for GSL.

Fri Apr 28 17:13:00 2000  Brian Gough  <bjg@network-theory.co.uk>

	* renamed all matrices to use upper case variable names, e.g. A

Thu Apr 27 20:31:46 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test.c: tightened up accuracy of the decomp test

	* test_la.c: renamed to test.c for consistency
	(test_QR_decomp): added the "moler" matrix as a test for SVD

	* svd.c (gsl_linalg_SV_decomp): improved the convergence criterion
 	for rank deficient case.

Wed Apr 26 19:37:46 2000  Brian Gough  <bjg@network-theory.co.uk>

	* renamed rhs -> b, and solution -> x throughout for consistency

Mon Apr 24 17:04:52 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test_la.c (main): added tests for MxN matrices
	
	* test_la.c (main): added tests for SV decomposition and solve.

	* svd.c (gsl_linalg_SV_decomp): made use of vector row/column
 	functions, tidied up the algorithm a bit. Use a standard tolerance
 	of 10*GSL_DBL_EPSILON.
	(gsl_linalg_SV_solve): added a least squares solver

Sun Apr 23 21:18:04 2000  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_linalg.h, svd.c (gsl_linalg_SV_decomp): changed function
 	name to new naming convention

	* qr.c (gsl_linalg_QR_unpack): fixed index ranges for rectangular
 	case when unpacking R

Sat Apr 22 15:05:21 2000  Brian Gough  <bjg@network-theory.co.uk>

	* matrix.c: removed, equivalent functions now in matrix directory

Sat Mar 11 17:36:33 2000  Brian Gough  <bjg@network-theory.co.uk>

	* multiply.c: removed _impl from these functions since all the
 	errors they can return are fatal.

Wed Feb 16 12:03:00 2000  Brian Gough  <bjg@network-theory.co.uk>

	* multiply.c (gsl_la_matmult_mod_impl): fixed error in transposed
 	matrix memory access, expressions should always be of the form
	M->data[i*M->size2 + j] even when i,j are transposed.

	Safer to replace matrix access by gsl_matrix_set and
 	gsl_matrix_get, which is what I have done now. Shouldn't be any
 	cost in the production version of the library where we have
 	inlines and range checking off.

Tue Feb 15 17:46:19 2000  Brian Gough  <bjg@network-theory.co.uk>

	* tridiag.h (solve_cyc_tridiag): fixed typo in header, was
 	solve_cyctridiag, missing _.

	* converted all functions to use gsl_permutation instead of
 	gsl_vector_int

Fri Oct  1 15:51:02 1999  Brian Gough  <bjg@network-theory.co.uk>

	* temporary changes resulting from changes to block/vector/matrix
 	organization

Fri Aug  6 14:42:23 1999  Brian Gough  <bjg@network-theory.co.uk>

	* linalg_simple.c: include <string.h> to declare memcpy

