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

	* log.c (gsl_sf_log_e): removed HIDE_INLINE_STATIC

	* exp.c (gsl_sf_exp_e): removed HIDE_INLINE_STATIC

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

	* mathieu_charv.c: made solve_cubic static

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

	* mathieu_charv.c (figi): ensure that e[ii] is set when
	e2[ii]==0.0 and there is no error condition, as per the original
	eispack routine

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

	* ellint.c (gsl_sf_ellint_F_e): do argument reduction for phi>pi/2
	(gsl_sf_ellint_E_e): do argument reduction for phi>pi/2
	(gsl_sf_ellint_P_e): do argument reduction for phi>pi/2
	(gsl_sf_ellint_D_e): do argument reduction for phi>pi/2
	(gsl_sf_ellint_Dcomp_e): added complete D integral
	(gsl_sf_ellint_Pcomp_e): added complete P integral

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

	* beta.c (gsl_sf_lnbeta_sgn_e): added to support calculations with
	negative a,b
	(gsl_sf_lnbeta_e): rewritten in terms of gsl_sf_lnbeta_sgn_e
	(gsl_sf_beta_e): handle negative a,b

	* gamma.c (gsl_sf_lngamma_sgn_e): make error calculations an exact
	copy of gsl_sf_lngamma_e (these functions could be merged to avoid
	duplication)

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

	* test_legendre.c (test_legendre): added extra test cases for
	underflow

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

	* expint.c (expint_E2_impl): handle x==0.0 as a special case
	(expint_E2_impl): corrected error term

	* gsl_sf_log.h: removed inline version of log

	* gsl_sf_exp.h: removed inline version of exp

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

	* hyperg_1F1.c (hyperg_1F1_1_series): increase accuracy by factor
	of 4 in sum, tighter convergence condition, increase error
	estimate to allow for accumulated roundoff
	(hyperg_1F1_1): use series when |x| > |b|
	(gsl_sf_hyperg_1F1_e): only use Kummer when |x| < 100 otherwise
	exponential takes extreme value

	* hyperg.c (gsl_sf_hyperg_1F1_series_e): allow 10000 iterations in
	series to extend valid range
	(gsl_sf_hyperg_1F1_series_e): increase accuracy by factor of 4 in
	sum, tighter convergence condition

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

	* laguerre.c (laguerre_large_n): use the second term in the
	asymptotic expansion from Slater, p.73.

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

	* hyperg_1F1.c (hyperg_1F1_largebx): asymptotic expansion for
	large b and x, with |x|<|b| from Slater 4.3.7
	(hyperg_1F1_1): use new asymptotic expansion for |x|<|b|
	(hyperg_1F1_small_a_bgt0): use new asymptotic expansion for |x|<|b|
	(hyperg_1F1_renorm_b0): add neglected terms in expansion for AS13.3.7

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

	* legendre_poly.c (gsl_sf_legendre_sphPlm_e): added explicit
	computation of error term to allow for case when final term is
	zero.

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

	* trig.c (gsl_sf_angle_restrict_symm_err_e): compute edge cases
	more reliably, return NaN when total loss of precision
	(gsl_sf_angle_restrict_pos_err_e): as above

	* legendre_poly.c (gsl_sf_legendre_Pl_e): improve error estimate
	for large l by including rounding error at each step of recurrence

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

	* poch.c (gsl_sf_lnpoch_e, gsl_sf_lnpoch_sgn_e): corrected
	result->val to 0.0 for x==0, previously returned incorrect value
	1.0

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

	* laguerre.c (laguerre_large_n): work with small angles to avoid
	cancellation error, computer angular reduction exactly for integer
	eta.

2006-09-22  Brian Gough  <bjg@network-theory.co.uk>

	* zeta.c (gsl_sf_zeta_e): make sin_term exactly zero for negative
	even integers
	(gsl_sf_zetam1_int_e): return value is -1 for zetam1_int with
	negative even integers

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

	* fermi_dirac.c (fd_neg): initialize s to zero (avoid spurious
	warning from compiler)

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

	* coulomb.c (gsl_sf_coulomb_wave_FG_e): fixed sign of F_lam_min,
	covers case when k_lam_G is nonzero and F_lam_min and F_lam differ
	in sign.

2006-01-21  Brian Gough  <bjg@network-theory.co.uk>

	* synchrotron.c (gsl_sf_synchrotron_1_e): added first order
	correction term for the taylor expansion
	(gsl_sf_synchrotron_2_e): added first order correction term for
	the taylor expansion

2006-01-20  Brian Gough  <bjg@network-theory.co.uk>

	* bessel_j.c (gsl_sf_bessel_jl_e): limit the use of
	gsl_sf_bessel_Jnu_asympx_e to the range x>100*l*l to satisfy
	the requirement x>>l*l in the asymptotic expansion

	* bessel_In.c (gsl_sf_bessel_In_scaled_e): limit the use of
	gsl_sf_bessel_I_CF1_ser to the region where the continued
	converges with the allowed 20000 terms (|x|<1e7)

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

	* debye.c (gsl_sf_debye_5_e, gsl_sf_debye_6_e): added n=5,6
	(R. J. Mathar)

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

	* dilog.c (dilog_xge0): fix calculation of error estimate

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

	* coulomb.c (gsl_sf_coulomb_wave_sphF_array): fix warning about
	variable shadowing for k

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

	* gamma_inc.c (gsl_sf_gamma_inc_Q_e): use continued fraction close
	to peak of the integrand x > a - sqrt(a)

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

	* elljac.c (gsl_sf_elljac_e): use separate iterations to avoid
	division by zero, new algorithm from Bulirsch avoids inverse trig
	functions.

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

	* legendre_poly.c (gsl_sf_legendre_sphPlm_e): compute exponential
	internally to avoid underflow error when calling gsl_sf_exp_err

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

	* bessel_i.c (gsl_sf_bessel_il_scaled_array): handle x==0 as a
	special case

	* bessel_k.c (gsl_sf_bessel_kl_scaled_array): added lmax==0 as a
	special case

	* bessel_y.c (gsl_sf_bessel_yl_array): added lmax==0 as a special
	case

	* transport.c (gsl_sf_transport_2_e): improve error estimate for
	small x

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

	* test_sf.c (test_jac): added tests over the full period for
	elljac functions

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

	* test_bessel.c (test_bessel): added test for steed(99,1,...)

	* legendre_H3d.c (legendre_H3d_CF1): use hypot
	(legendre_H3d_CF1_ser): use hypot
	(gsl_sf_legendre_H3d_e): use hypot
	(gsl_sf_legendre_H3d_e): use hypot
	(gsl_sf_legendre_H3d_array): use hypot

	* dilog.c (dilogc_unitdisk): use hypot

	* coulomb.c (gsl_sf_coulomb_CL_array): use hypot
	(coulomb_F_recur): use hypot
	(coulomb_G_recur): use hypot
	(coulomb_jwkb): use hypot
	(gsl_sf_coulomb_wave_F_array): use hypot
	(gsl_sf_coulomb_wave_FG_array): use hypot
	(gsl_sf_coulomb_wave_FGp_array): use hypot

	* bessel_j.c (gsl_sf_bessel_jl_steed_array): use hypot

	* bessel.c (gsl_sf_bessel_Inu_scaled_asymp_unif_e): use hypot
	(gsl_sf_bessel_Knu_scaled_asymp_unif_e): use hypot

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

	* coulomb_bound.c (gsl_sf_hydrogenicR_e): don't check for
	underflow when function is known to be zero (e.g. r=0 l>0 or at
	zeroes of the laguerre polynomial).

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

	* dilog.c (gsl_sf_complex_dilog_e): use const consistently in
	arguments of declaration and definition
	(gsl_sf_complex_dilog_xy_e): as above

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

	* gamma_inc.c (gamma_inc_D): improve error estimate for case of
	u=x/a to include cancellation errors and only use it when x < 0.5*a
	since the cancellation errors are significant for x/a ~ 1

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

	* gsl_sf_coupling.h: fixed declaration to
	gsl_sf_coupling_6j_INCORRECT instead of
	gsl_sf_coupling_INCORRECT_6j

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

	* psi.c (gsl_sf_psi_1): added missing function definition
	gsl_sf_psi_1

2004-10-11  Brian Gough  <bjg@network-theory.co.uk>

	* expint.c (gsl_sf_expint_Ei_scaled): fixed call to incorrect
	function gsl_sf_expint_Ei_e

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

	* psi.c (psi_n_xg0): added missing return type int

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

	* gsl_sf_log.h: added missing headers for inline functions

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

	* test_sf.c: added preprocessor definitions TEST_FACTOR and
	TEST_SIGMA to allow larger tolerances on released versions (to
	reduce the number of spurious bug reports).

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

	* gamma.c (gsl_sf_choose_e): declare k as unsigned int instead of
	int
	(gsl_sf_gamma_e): avoid shadowed declaration of sgn

	* bessel_sequence.c (gsl_sf_bessel_sequence_Jnu_e): declare i as
	size_t instead of int

2003-06-11  Brian Gough  <bjg@network-theory.co.uk>

	* coupling.c (gsl_sf_coupling_6j_INCORRECT_e): fixed typo in test
	for two_jf < 0
	(gsl_sf_coupling_6j_e): moved the implementation from the
	INCORRECT function into the correct function

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

	* test_sf.c (test_coupling): added some regression tests for
	coupling functions

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

	* gamma_inc.c (gamma_inc_D): handle x<a, a>10 as a special case

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

	* gamma.c (gsl_sf_gammainv_e): handle any singularities in
	gamma(x) up front and return zero directly

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

	* psi.c: changed value of psi(1,1) in table psi_1_table to be
	positive ((-)^2 * 1! * zeta(2)), in accordance with Abramowitz &
	Stegun 6.4.2.

2003-04-08  G. Jungman

    * erfc.c, gsl_sf_erf.h: added gsl_sf_hazard_e() and
    gsl_sf_hazard() functions

2003-04-07  G. Jungman

    * gamma_inc.c, gsl_sf_gamma.h: added gsl_sf_gamma_inc_e() and
    gsl_sf_gamma_inc(), implmentations of the non-normalized incomplete
    gamma function

2003-03-09  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_sf_legendre.h: added missing const to formal parameter on
	gsl_sf_legendre_sphPlm_deriv_array

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

	* test_gamma.c (test_gamma): added a test for
	gamma_inc_P(10,1e-16) (BUG#12)

Sat Sep  7 15:56:15 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test_sf.h (TEST_FACTOR): include an overall factor in the test
 	tolerances, otherwise there are too many bug reports for minor
 	failures.

Sun Sep  1 17:34:27 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test_legendre.c (test_legendre): increased tolerance on test

Sat Jul 13 23:11:37 2002  Brian Gough  <bjg@network-theory.co.uk>

	* ellint.c (gsl_sf_ellint_Kcomp_e): improved error estimate to
 	take cancellation of y=1-k^2 into account near k=1 

Sun Jul  7 21:39:12 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test_bessel.c (test_bessel): increased tolerance on test of
 	bessel_Jn_array

Tue May 28 21:04:29 2002  Brian Gough  <bjg@network-theory.co.uk>

	* psi.c (gsl_sf_psi_1piy_e): changed log(y) to log(ay) since
 	function is even and can be extended to negative y

Mon Jan 28 19:02:42 2002  Brian Gough  <bjg@network-theory.co.uk>

	* gamma_inc.c (gamma_inc_Q_CF): express 'small' constant in terms
 	of GSL_DBL_EPSILON
	(gamma_inc_Q_CF): patch for more reliable series from Hans Plesser

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

	* test_gamma.c (test_gamma): increased tolerance on a test

	* test_hyperg.c (test_hyperg): increased tolerance on a couple of
 	tests

Fri Jan 18 15:12:30 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test_airy.c (test_airy): increased tolerance on test

Tue Jan  8 14:31:04 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test_legendre.c (test_legendre): increased tolerance by one
 	level on _array tests

	* hyperg_1F1.c (hyperg_1F1_small_a_bgt0): fix branch for a==1

Fri Dec  7 12:38:40 2001  Brian Gough  <bjg@network-theory.co.uk>

	* laguerre.c (laguerre_n_cp): catch internal error, not global
 	error

	* error.h (INTERNAL_OVERFLOW_ERROR): added internal error macros
 	which do not call the error handler.

Wed Dec  5 19:25:26 2001  Brian Gough  <bjg@network-theory.co.uk>

	* gamma.c (gamma_xgthalf): return gamma(x) exactly when x is an
 	integer

	* hyperg_1F1.c (hyperg_1F1_ab_posint):  fix bug in recurrence
 	initialisation, as done for hyperg_1F1_ab_pos

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

	* coulomb.c (gsl_sf_coulomb_CL_array): renamed from
 	gsl_sf_coulomb_CL_list for consistency

Sat Oct 13 15:55:56 2001  Brian Gough  <bjg@network-theory.co.uk>

	* cheb_eval.c (cheb_eval_e): keep track of cancellation error to
 	prevent underestimates of total error.

Fri Oct 12 16:39:27 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test_hyperg.c (test_hyperg): increased tolerance from TOL0 to
 	TOL1 on one test to allow it to pass under different optimizations

Thu Oct 11 14:21:34 2001  Brian Gough  <bjg@network-theory.co.uk>

	* gegenbauer.c (gsl_sf_gegenpoly_n_e): initialize variable gk to
 	zero to avoid warning

	* bessel_i.c (gsl_sf_bessel_il_scaled_e): initialize variable
 	iellm1 to zero to avoid warning

	* bessel_Jnu.c (gsl_sf_bessel_Jnu_e): initialize variable Ynp1 to
 	zero to avoid warning

	* legendre_poly.c (gsl_sf_legendre_sphPlm_e): initialize variables
 	p_ell, y_ell to zero to avoid warning

Thu Sep  6 10:38:51 2001  Brian Gough  <bjg@network-theory.co.uk>

	* clausen.c: added missing initialiser to cheb_series struct

	* pow_int.c (gsl_sf_pow_int_e): handle the case x == 0, n < 0

	* legendre_poly.c (gsl_sf_legendre_array_size): added missing
 	static version of this inline function

Wed Aug 15 20:18:43 2001  Brian Gough  <bjg@network-theory.co.uk>

	* hyperg_1F1.c (hyperg_1F1_ab_pos): fix bug in recurrence
 	initialisation
	(hyperg_1F1_ab_neg): if all else fails, try the series.

Wed Aug  8 19:55:34 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test_sf.c (test_coupling): used analytic expressions for the
 	exact values to problems with insufficient precision

Thu Jul 12 15:25:04 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test_legendre.c (test_legendre): corrected tests to use exact
	floating point arguments near singularities.

	* legendre_Qn.c (gsl_sf_legendre_Q0_e): removed unnecessary error
 	terms that I added
	(gsl_sf_legendre_Q1_e): removed unnecessary error terms that I
 	added

Wed Jul 11 16:06:45 2001  Brian Gough  <bjg@network-theory.co.uk>

	* error.h: moved domain, overflow and underflow errors into
 	macros, return Nan for domain error, Inf for overflow.

Tue Jul 10 22:00:55 2001  Brian Gough  <bjg@network-theory.co.uk>

	* erfc.c (gsl_sf_log_erfc_e): introduce an additional log(erfc)
 	branch to prevent loss of accuracy for small x

	* test_sf.c (test_zeta): increased tolerance on zeta function test
 	to take into account differences in rounding

2001-07-10  Brian Gough  <bjg@hppav.local>

	* legendre_Qn.c (gsl_sf_legendre_Q0_e): use (log1p(x) - log1p(-x))
	instead of log((1+x)/(1-x)), for accuracy
	(gsl_sf_legendre_Q1_e): use (log1p(x) - log1p(-x)) instead of
	log((1+x)/(1-x)), for accuracy
	(gsl_sf_legendre_Q0_e): improve error estimate near singular
	points
	(gsl_sf_legendre_Q1_e): improve error estimate near singular
	points
	(gsl_sf_legendre_Q0_e): fixed incorrect factor of 2 in asymptotic
	expansion

	* check.h (CHECK_UNDERFLOW): provide macro for checking results
	for underflow

Fri Jul  6 20:16:19 2001  Brian Gough  <bjg@network-theory.co.uk>

	* zeta.c (riemann_zeta1m_slt0): added a function to compute
 	zeta(1-s) without loss of accuracy for s near zero, as used by the
 	reflection formula.  This fixes a bug in the accuracy of results
 	of zeta(-x) for small x, where loss of precision previously
 	occurred by evaluating 1-x.

2001-07-06  Brian Gough  <bjg@network-theory.co.uk>

	* bessel_I0.c (gsl_sf_bessel_I0_scaled_e): added missing scaling
	factor of exp(-x) for case x<2sqrt(epsilon)

Thu Jul  5 16:16:13 2001  Brian Gough  <bjg@network-theory.co.uk>

	* erfc.c (gsl_sf_erfc_e): corrected case of -10<x<-5 to take into
 	account that chebyshev fit is defined in terms of positive x.

Tue Jul  3 12:09:33 2001  Brian Gough  <bjg@network-theory.co.uk>

	* eval.h (EVAL_DOUBLE): avoid returning the status value as a
 	numerical result

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

	* elementary.c (gsl_sf_multiply_e): use GSL_COERCE_DBL macro to
	deal with extended register problem

	* coupling.c: include stdlib.h for prototype of abs()

Wed Jun 27 21:20:22 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test_sf.c (test_fermidirac): increased tolerance on test of
 	gsl_sf_fermi_dirac_int(9,500) by factor of two to allow for MSVC

Tue Jun 26 12:10:17 2001  Brian Gough  <bjg@network-theory.co.uk>

	* gsl_sf_gamma.h: added const to prototype, to match function
 	definition

Sun May  6 13:01:01 2001  Brian Gough  <bjg@network-theory.co.uk>

	* test_sf.c: initialize message_buff to null string to prevent
 	random segmentation faults

	* test_sf.h: simplified test macros to reduce stack usage

Mon Apr 30 12:38:15 2001  Brian Gough  <bjg@network-theory.co.uk>

	* airy_zero.c bessel_zero.c: zeros are now counted using an
 	unsigned int

	* poly.c: moved poly_eval function into poly/ directory

Wed Apr 25 17:28:48 2001  Brian Gough  <bjg@network-theory.co.uk>

	* trig.c (gsl_sf_polar_to_rect): dropped _e from polar/rect
 	conversion functions

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

	* split out chebyshev functions into their own cheb/ directory,
 	leaving behind an internal cheb struct and cheb evaluation
 	function.

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

	* changed tests for EFAULT into a commented-out macro, since
 	EFAULT should only apply to invalid non-null pointers, but it
 	might be useful to keep the tests around for debugging in this
 	directory.

	* unified error handling conventions to _e for error handling
 	functions and no suffix for plain functions, so _impl functions
 	are no longer needed.

1999-08-02  Mark Galassi  <rosalia@lanl.gov>

	* fermi_dirac.c: took out the use of some "const int" constants
	which were being used to size arrays, since this is not portable
	(thanks to Bernd Petrovitsch <bernd@ict.tuwien.ac.at> for pointing
	this out).

1999-01-02  Mark Galassi  <rosalia@cygnus.com>

	* trig.c (gsl_sf_rect_to_polar_impl): introduced an #ifdef
	HAVE_HYPOT for systems that do not have the hypot() routine.

Sun Feb 14 20:59:50 1999  Brian Gough  <bjg@netsci.freeserve.co.uk>

	* Makefile.am (include_HEADERS): added gsl_sf_result.h

1998-12-05  Mark Galassi  <rosalia@cygnus.com>

	* Makefile.am: t-erf.c was commented out, which is a problem
	(pointed out by automake-1.3b).  Moved the commented-out t-erf.c
	line to the end of the long list of files.

	* legendre_poly.c (gsl_sf_legendre_Pl_impl):
	* legendre_con.c (gsl_sf_conicalP_xgt1_neg_mu_largetau_impl):
	added an ugly fix to the invocation of gsl_sf_bessel_Jn_impl() to
	give it two bogus arguments so that it builds.  I hope Jerry fixes
	it up soon!

	* gsl_sf_airy.h: added an include of gsl_precision.h so that
	gsl_prec_t is defined.

Tue Nov 17 17:29:31 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added #include <config.h> to all top-level source files

	* chebyshev.c (gsl_sf_cheb_eval_n): changed local gslMIN and
 	gslMAX to the standard GSL_MIN and GSL_MAX macros

Tue Aug 18 13:36:15 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* coulomb.c (C0sq): changed to using gsl_sf_expm1_impl instead of
 	expm1, since the latter is a GNU extension.

Mon Aug  3 14:43:16 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* bessel_amp_phase.h: undefined consts are now declared extern

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

	* gamma.c: changed all the factorial functions to take unsigned
 	int arguments, since negative values are not allowed.
	(gsl_sf_choose): fixed off by one error in call to factorial.

Sun Jul 12 13:21:41 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* gsl_sf_legendre.h, gsl_sf_poly.h, gsl_sf_pow_int.h: added
 	HAVE_INLINE around some inline definitions in the header files

	* gamma.c: implemented the natural versions of gsl_sf_lnchoose and
	gsl_sf_choose.

Wed Apr 15 21:27:48 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added the return code as the second argument of GSL_WARNING, so
 	we can filter on the error number or output a standard message for
 	each one.

1998-02-02  Mark Galassi  <rosalia@cygnus.com>

	* Makefile.am (include_HEADERS): added gsl_specfunc.h so it gets
	into the distribution.
	(INCLUDES): added -I$(top_srcdir) so that bessel.c can find
	gsl_math.h
