2007-01-26  Brian Gough  <bjg@network-theory.co.uk>

	* fsolver.c (gsl_multiroot_fsolver_set): made vector argument x
	const

	* fdfsolver.c (gsl_multiroot_fdfsolver_set): made vector argument
	x const

Tue Nov 12 22:26:40 2002  Brian Gough  <bjg@network-theory.co.uk>

	* newton.c (newton_alloc): return error code, not null

	* hybridj.c (hybridj_alloc): return error code, not null

	* hybrid.c (hybrid_alloc): return error code, not null

	* gnewton.c (gnewton_alloc): return error code, not null

	* dnewton.c (dnewton_alloc): return error code, not null

	* broyden.c (broyden_alloc): return error code, not null

Wed May  1 21:40:55 2002  Brian Gough  <bjg@network-theory.co.uk>

	* fdfsolver.c (gsl_multiroot_fdfsolver_dx): new function to return
 	dx
	(gsl_multiroot_fdfsolver_f): new function to return f

	* fsolver.c (gsl_multiroot_fsolver_dx): new function to return dx
	(gsl_multiroot_fsolver_f): new function to return f

Sat Jan 26 17:11:34 2002  Brian Gough  <bjg@network-theory.co.uk>

	* hybrid.c (set): fix broken 'if' statement

Thu Jan 10 19:26:55 2002  Brian Gough  <bjg@network-theory.co.uk>

	* hybrid.c dnewton.c: return status values for user-function
 	(Theis Peter Hansen)

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

	* hybrid.c: removed workspace for linalg calls, no longer needed

	* hybridj.c: removed workspace for linalg calls, no longer needed

Wed Jun  6 13:31:18 2001  Brian Gough  <bjg@network-theory.co.uk>

	* hybridj.c: updated to use new QR calling convention (now passes
 	workspace)

	* hybrid.c: updated to use new QR calling convention (now passes
 	workspace)

Mon Apr 23 12:55:39 2001  Brian Gough  <bjg@network-theory.co.uk>

	* Makefile.am (test_LDADD): added cblas lib

Mon Apr 16 20:18:08 2001  Brian Gough  <bjg@network-theory.co.uk>

	* dnewton.c (dnewton_iterate): removed unnecessary status variable

Sun Feb 18 11:26:45 2001  Brian Gough  <bjg@network-theory.co.uk>

	* fdfsolver.c fsolver.c: changed so that the solver _alloc
 	function no longer calls _set, the user must do that separately.
	
Thu Nov 30 21:48:39 2000  Brian Gough  <bjg@network-theory.co.uk>

	* newton.c (newton_iterate): return GSL_EBADFUNC if error in
 	function evaluation

	* hybridj.c (iterate): return GSL_EBADFUNC if error in
 	function evaluation

	* hybrid.c (iterate): return GSL_EBADFUNC if error in function
 	evaluation

	* gnewton.c (gnewton_iterate): return GSL_EBADFUNC if error in
 	function evaluation

	* fdjac.c (gsl_multiroot_fdjacobian): return GSL_EBADFUNC if error
 	in function evaluation

	* dnewton.c (dnewton_iterate): return GSL_EBADFUNC if error in
 	function evaluation

	* broyden.c (broyden_iterate): return GSL_EBADFUNC if error in
 	function evaluation

Sun Aug 27 13:43:13 2000  Brian Gough  <bjg@network-theory.co.uk>

	* hybridj.c hybrid.c dogleg.c: begin comments with a capital
 	letter to improve readability

Sat Aug 26 16:12:19 2000  Brian Gough  <bjg@network-theory.co.uk>

	* hybridj.c hybrid.c: renamed rdiag to tau, since it plays that
 	role here and is not the diagonal of R (see qr.c documentation for
 	more details)

Wed Feb 23 15:36:39 2000  Brian Gough  <bjg@network-theory.co.uk>

	* changed gsl_vector_copy to gsl_vector_cpy 

Fri Feb 18 18:45:02 2000  Brian Gough  <bjg@network-theory.co.uk>

	* fixed various .c files to use permutation

Wed Feb 16 21:13:24 2000  Brian Gough  <bjg@network-theory.co.uk>

	* fixed Makefiles that include gsl_linalg.h to add
 	-I$(srcdir)/../permutation to their include path

