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

	* test_source.c (FUNCTION): avoid running tests on char, because
	it can be unsigned

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

	* minmax_source.c: added support for NaNs

2006-10-31  Brian Gough  <bjg@network-theory.co.uk>

	* prop_source.c: added functions gsl_vector_ispos,
	gsl_vector_isneg

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

	* swap_source.c (gsl_vector_swap): fixed bug where stride of
	first argument v was used for second argument w

	* test.c: improved test coverage

2003-01-01  Brian Gough  <brian.gough@network-theory.co.uk>

	* gsl_vector_complex_float.h (gsl_vector_complex_float_get):
	removed const from zero

	* vector_source.c (FUNCTION): removed const from zero

Sun Jan 27 22:29:54 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test.c: ensure that range check is working when running the
 	tests

Fri Sep 14 19:13:20 2001  Brian Gough  <bjg@network-theory.co.uk>

	* view.c (USE_QUALIFIER): added missing qualified types

Thu Aug 23 13:22:29 2001  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_vector_complex_float.h: added const to second argument of
 	_ptr functions

	* gsl_vector.h: changed definition of gsl_vector_const_view to
 	compile with Sun's cc

Fri Aug  3 14:11:51 2001  Brian Gough  <bjg@network-theory.co.uk>

	* added gsl_vector_ptr and gsl_vector_const_ptr functions

Mon Jul 16 21:28:37 2001  Brian Gough  <bjg@network-theory.co.uk>

	* reim_source.c: initialized views to null

Fri Jul 13 21:29:06 2001  Brian Gough  <bjg@network-theory.co.uk>

	* changed views to be structs and used casts to initialize them

Mon Jul  2 12:34:43 2001  Brian Gough  <bjg@network-theory.co.uk>

	* view.h: provide macros for initializing null vectors and views

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

	* introduction of new-style vector views

	* view_source.c: changed order of arguments to be consistent with
 	rest of library for _with_stride functions

Mon May 14 22:43:18 2001  Brian Gough  <bjg@network-theory.co.uk>

	* vector_source.c (FUNCTION): removed unnecessary inline from
 	static function definition

Tue Mar 27 15:12:07 2001  Brian Gough  <bjg@network-theory.co.uk>

	* view_source.c: split view functions into a separate file

Sat Sep  9 16:45:15 2000  Brian Gough  <bjg@network-theory.co.uk>

	* added an owner field for indicating whether the underlying
 	memory is owned by the vector. Changed the meaning of the block
 	field to always be the address of the underlying block, even for
 	subviews (previously the block field was set to NULL in this
 	case).

Sun Jul 16 10:39:39 2000  Brian Gough  <bjg@network-theory.co.uk>

	* init_source.c (FUNCTION): added gsl_vector_view function for
 	creating a vector view of an ordinary C array

Sat Jul 15 21:44:49 2000  Brian Gough  <bjg@network-theory.co.uk>

	* changed GSL_EDOM to GSL_EINVAL for invalid vector size arguments

Sat Jun 17 15:37:57 2000  Brian Gough  <bjg@network-theory.co.uk>

	* fixed up missing MULTIPLICITY factors in various functions 

Sun May 28 12:25:31 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test_complex_source.c (FUNCTION): use binary mode "b" when
 	reading and writing binary files

	* test_source.c (FUNCTION): use binary mode "b" when reading and
 	writing binary files

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

	* oper_source.c (FUNCTION): changed functions
 	gsl_vector_mul_elements and gsl_vector_div_elements to
 	gsl_vector_mul and gsl_vector_div since the _elements suffix is
 	redundant for vectors (unlike matrices).

	* oper.c: added simple arithmetic operations (+,-,*,/,scale,+const)

Wed Apr 26 14:17:14 2000  Brian Gough  <bjg@network-theory.co.uk>

	* prop_source.c (FUNCTION): added const to argument of
 	gsl_vector_isnull

	* init_source.c (FUNCTION): added gsl_vector_set_basis(v,i) to set
 	v to basis vector v = e_i  (0,0,...,1,...,0)

Tue Apr 25 11:31:38 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test_source.c (FUNCTION): modified the tests so that they work
 	more cleanly with checkergcc when using long doubles. The trick
 	seems to be to avoid having any long doubles on the stack.

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

	* init_source.c (FUNCTION): separated subvector functions into
 	gsl_vector_subvector and gsl_vector_subvector_with_stride

Sat Mar 25 20:23:58 2000  Brian Gough  <bjg@network-theory.co.uk>

	* swap_source.c (FUNCTION): renames gsl_vector_swap to
 	gsl_vector_swap_elements

Tue Mar 21 21:15:10 2000  Brian Gough  <bjg@network-theory.co.uk>

	* vector_source.c (FUNCTION): added set_zero function

Thu Feb 24 16:19:55 2000  Brian Gough  <bjg@network-theory.co.uk>

	* added missing prototypes for gsl_vector_complex_..._reverse

Fri Feb 18 20:48:32 2000  Brian Gough  <bjg@network-theory.co.uk>

	* swap_source.c (FUNCTION): added gsl_vector_reverse function for
 	flipping the order of a vector

	* copy_source.c: renamed gsl_vector_copy to gsl_vector_cpy
	since it acts like memcpy (dest, src) not 'cp(copy) from to'

Thu Dec  2 20:39:02 1999  Brian Gough  <bjg@network-theory.co.uk>

	* init_source.c: fixed bug, block element needs to be null in
 	gsl_vector_alloc_from_vector to maintain correct ownership,
	added gsl_vector_view_from_vector (Thanks to Fabrice Rossi)

Tue Oct 19 14:13:14 1999  Brian Gough  <bjg@network-theory.co.uk>

	* added gsl_vector_swap function to exchange elements

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

	* removed support for gsl_vector_ptr. Use set/get instead.

	* now uses separate block directory for memory management

Mon Mar  1 19:38:16 1999  Brian Gough  <bjg@netsci.freeserve.co.uk>

	* test_source.c: added tests for gsl_vector_ptr with and without
 	stride

	* gsl_vector_char.h: added missing code to gsl_vector_char_ptr for
 	stride in char case.
	

Sun Nov  8 18:39:40 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* test_io.c, test_complex_io.c: split out the printf/scanf
 	routines since these aren't supported on all platforms
	for long double

Fri Jul 24 19:44:52 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added parent pointer in structs, to determine whether or not
 	we're allowed to free the memory pointed to by * data.

Wed Jun 10 19:13:35 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* init_source.c: added a cast for each malloc

Sun Apr 26 14:10:06 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added support for complex vectors

Mon Apr  6 15:06:38 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* make range checking the default, you have to define
 	GSL_RANGE_CHECK_OFF to turn it off

