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

	* vector_bfgs2.c (vector_bfgs2_iterate): use positive step size

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

	* linear_minimize.c (minimize): return GSL_ENOPROG for roundoff

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

	* linear_minimize.c: made all functions static

	* linear_wrapper.c: made all functions static

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

	* linear_wrapper.c: convert multidimensional function to
	one-dimensional for line minimisation

	* linear_minimize.c: one-dimensional minimisation from Fletcher

	* vector_bfgs2.c: added Fletcher's implementation

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

	* vector_bfgs.c (vector_bfgs_iterate): avoid division by zero if
	dxdg == 0

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

	* simplex.c (nmsimplex_set): changed index variable i from int to
	size_t

2003-04-17  Brian Gough  <bjg@network-theory.co.uk>

	* simplex.c (nmsimplex_iterate): bug fix to find the second
	highest point correctly

	* vector_bfgs.c (vector_bfgs_iterate): no need to update g0norm on
	each downhill step, since g0norm is the norm for the initial
	gradient.

	* conjugate_pr.c (conjugate_pr_iterate): no need to update g0norm
	on each downhill step, since g0norm is the norm for the initial
	gradient.

	* conjugate_fr.c (conjugate_fr_iterate): no need to update g0norm
	on each downhill step, since g0norm is the norm for the initial
	gradient.

Sun Sep 30 20:50:00 2002  Tuomo Keskitalo  <tkeskita@pt.hut.fi>

	* Added Nelder-Mead Simplex optimization algorithm and 
	fminimizer structure.

Sun Feb 10 21:57:36 2002  Brian Gough  <bjg@network-theory.co.uk>

	* conjugate_pr.c (conjugate_pr_iterate): return error ENOPROG if
 	cannot find downward step

	* conjugate_fr.c (conjugate_fr_iterate): return error ENOPROG if
 	cannot find downward step

	* vector_bfgs.c (vector_bfgs_iterate): return error ENOPROG if
 	cannot find downward step

Thu Oct 25 11:56:06 2001  Brian Gough  <bjg@network-theory.co.uk>

	* added a tolerance parameter for the line minimizations

Wed Oct 24 23:18:46 2001  Brian Gough  <bjg@network-theory.co.uk>

	* modified all routines to use a single minimiztion iteration,
 	instead of nested iterations for line and gradient search.

Thu Oct 18 22:56:52 2001  Brian Gough  <bjg@network-theory.co.uk>

	* renamed gsl_multimin_f_minimizer to gsl_multimin_fminimizer for
 	consistency with rest of the library

	* renamed gsl_multimin_fdf_minimizer to gsl_multimin_fdfminimizer
 	for consistency with rest of the library

Mon Oct  8 21:41:51 2001  Brian Gough  <bjg@network-theory.co.uk>

	* diff.c (gsl_multimin_diff): pass params argument using
 	GSL_MULTIMIN_FN_EVAL (3 occurrences)

Sun Jul 15 17:54:15 2001  Brian Gough  <bjg@network-theory.co.uk>

	* fdfminimizer.c (gsl_multimin_fdf_minimizer_alloc): eliminated
 	use of interval type

Sat Apr 28 11:29:08 2001  Brian Gough  <bjg@network-theory.co.uk>

	* diff.c (gsl_multimin_diff): made indices unsigned

Mon Apr 23 13:22:31 2001  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_multimin.h diff.c: made starting_point const throughout to
 	avoid compiler warnings

	* made internal functions static

	* gsl_multimin.h: added missing prototype for gsl_multimin_diff

Tue Apr 17 22:15:37 2001  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_multimin.h: added missing prototype for gsl_multimin_compute_ep

Sun Feb 18 16:35:21 2001  Brian Gough  <bjg@network-theory.co.uk>

	* fdfminimizer.c (gsl_multimin_fdf_minimizer_alloc): modified to
 	account for change in calling convection of
 	gsl_min_fminimizer_alloc

Fri May  5 16:08:34 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (test_fdf): fixed warning about "control reaches end of
 	non-void function" by changing test_fdf to return type void
 
Tue May  2 19:20:46 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (main): added return gsl_test_summary() to main, so that
 	test results are returned through the exit status.

Mon Feb 14 13:12:16 2000  Brian Gough  <bjg@network-theory.co.uk>

	* made all internal functions static

