2006-03-16  Brian Gough  <bjg@network-theory.co.uk>

	* changed to gsl_fft_forward and gsl_fft_backward enums throughout
	internally instead of forward and backward.

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

	* Makefile.am (noinst_HEADERS): removed unused real.c

Tue Jul 24 15:16:50 2001  Brian Gough  <bjg@network-theory.co.uk>

	* single precision fft now uses float throughout, rather than
 	mixing float and double.

Mon Jul 16 12:38:29 2001  Brian Gough  <bjg@network-theory.co.uk>

	* reorganized function names and split work

Tue May  1 14:35:52 2001  Brian Gough  <bjg@network-theory.co.uk>

	* Makefile.am (libgslfft_la_SOURCES): removed spurious headers
 	from SOURCES line

2000-10-19  Brian Gough  <bjg@inweb.aethos.co.uk>

	* hc_init.c (FUNCTION): scratch space changed to n elements
	instead of 2*n (apparently the routine previously allocated too
	much space)

Wed Feb 16 14:43:42 2000  Brian Gough  <bjg@network-theory.co.uk>

	* Makefile.am (pkginclude_HEADERS): added missing
 	pkginclude_HEADERS for float functions.

Mon Feb 14 15:11:55 2000  Brian Gough  <bjg@network-theory.co.uk>

	* made all internal functions static (required a slight
 	reorganization)

Fri Aug  6 11:20:25 1999  Brian Gough  <bjg@network-theory.co.uk>

	*  removed dependence on rand() and RAND_MAX

Sun Feb 14 17:31:21 1999  Brian Gough  <bjg@netsci.freeserve.co.uk>

	* started converting header files to use gsl_complex_packed_array
 	more consistently

Mon Dec 14 22:55:00 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* real_init.c: fixed a possible malloc(0) bug found by Electric Fence.

Mon Nov 23 15:47:13 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* gsl_fft_complex.h, gsl_fft_complex_float.h: removed data[][]
 	type arguments from prototypes since this seems to be non-ANSI.
 	Use **data instead.

1998-11-09    <bjg@ancho.lanl.gov>

	* compare_source.c: fix up int/unsigned format types to prevent
	warnings

Wed Oct 28 15:07:22 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* c.c: added #include <string.h> for memcpy

	* c_float.c: added #include <string.h> for memcpy

Thu Sep 10 12:05:07 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* removed wavetable from function names to make them shorter and
 	avoid confusion, e.g. gsl_fft_complex_wavetable_alloc ->
 	gsl_fft_complex_alloc

Sat Sep  5 22:32:19 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* major work done on templatizing everything so that you can do an
 	fft of a float or a double vector.
	
Tue Sep  1 16:44:06 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* c_main.c: renamed c.c to c_main.c

Tue Jul 28 11:30:43 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* renamed gsl_fft_signals.h to fft_signals.h (not exported)

	* fft.h: a place to keep some local macros

	* c.c: renamed complex.c to c.c

Mon Jul 27 12:46:25 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* bitreverse.c: removed gsl_ftt_ prefix from non-exported functions

Wed Jun 10 17:36:01 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* test.c: Eliminated the need for getopt

	* test_radix2.c: Eliminated the need for getopt

	* test_trap.c: Eliminated the need for getopt

Mon Apr 27 18:48:58 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* fft_alloc functions now return a pointer to a newly allocated
 	wavetable struct (or a null pointer if there isn't enough memory)

Fri Apr 10 15:12:37 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* renamed complex_*.c and halfcomplex_*.c to c_*.c and hc_*.c to
 	avoid linker complaints about long filenames on some platforms

Sun Mar 29 15:56:34 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* To be compatible with other architectures use size_t everywhere
 	instead of unsigned int

Sat Mar 21 17:28:26 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* factorize.c (gsl_fft_factorize): Stopped returning the sum of
 	factors in the status variable. The user can compute it if
 	necessary.

1998-01-27  Mark Galassi  <rosalia@cygnus.com>

	* Makefile.am: fixed a typo: removed trailing \ at the end of this file.
