### Coulomb Wave Functions

The Coulomb wave functions @math{F_L(\eta,x)}, @math{G_L(\eta,x)} are described in Abramowitz & Stegun, Chapter 14. Because there can be a large dynamic range of values for these functions, overflows are handled gracefully. If an overflow occurs, GSL_EOVRFLW is signalled and exponent(s) are returned through the modifiable parameters exp_F, exp_G. The full solution can be reconstructed from the following relations,

Function: int gsl_sf_coulomb_wave_FG_e (double eta, double x, double L_F, int k, gsl_sf_result * F, gsl_sf_result * Fp, gsl_sf_result * G, gsl_sf_result * Gp, double * exp_F, double * exp_G)
This function computes the coulomb wave functions @math{F_L(\eta,x)}, @math{G_{L-k}(\eta,x)} and their derivatives with respect to @math{x}, @math{F'_L(\eta,x)} @math{G'_{L-k}(\eta,x)}. The parameters are restricted to @math{L, L-k > -1/2}, @math{x > 0} and integer @math{k}. Note that @math{L} itself is not restricted to being an integer. The results are stored in the parameters F, G for the function values and Fp, Gp for the derivative values. If an overflow occurs, GSL_EOVRFLW is returned and scaling exponents are stored in the modifiable parameters exp_F, exp_G.

Function: int gsl_sf_coulomb_wave_F_array (double L_min, int kmax, double eta, double x, double fc_array[], double * F_exponent)
This function computes the function @math{F_L(eta,x)} for @math{L = Lmin \dots Lmin + kmax} storing the results in fc_array. In the case of overflow the exponent is stored in F_exponent.

Function: int gsl_sf_coulomb_wave_FG_array (double L_min, int kmax, double eta, double x, double fc_array[], double gc_array[], double * F_exponent, double * G_exponent)
This function computes the functions @math{F_L(\eta,x)}, @math{G_L(\eta,x)} for @math{L = Lmin \dots Lmin + kmax} storing the results in fc_array and gc_array. In the case of overflow the exponents are stored in F_exponent and G_exponent.

Function: int gsl_sf_coulomb_wave_FGp_array (double L_min, int kmax, double eta, double x, double fc_array[], double fcp_array[], double gc_array[], double gcp_array[], double * F_exponent, double * G_exponent)
This function computes the functions @math{F_L(\eta,x)}, @math{G_L(\eta,x)} and their derivatives @math{F'_L(\eta,x)}, @math{G'_L(\eta,x)} for @math{L = Lmin \dots Lmin + kmax} storing the results in fc_array, gc_array, fcp_array and gcp_array. In the case of overflow the exponents are stored in F_exponent and G_exponent.

Function: int gsl_sf_coulomb_wave_sphF_array (double L_min, int kmax, double eta, double x, double fc_array[], double F_exponent[])
This function computes the Coulomb wave function divided by the argument @math{F_L(\eta, x)/x} for @math{L = Lmin \dots Lmin + kmax}, storing the results in fc_array. In the case of overflow the exponent is stored in F_exponent. This function reduces to spherical Bessel functions in the limit @math{\eta \to 0}.