### 7.21 Hypergeometric Functions

Hypergeometric functions are described in Abramowitz & Stegun, Chapters 13 and 15. These functions are declared in the header file `gsl_sf_hyperg.h`.

Function: double gsl_sf_hyperg_0F1 (double c, double x)
Function: int gsl_sf_hyperg_0F1_e (double c, double x, gsl_sf_result * result)

  These routines compute the hypergeometric function 0F1(c,x).

Function: double gsl_sf_hyperg_1F1_int (int m, int n, double x)
Function: int gsl_sf_hyperg_1F1_int_e (int m, int n, double x, gsl_sf_result * result)

  These routines compute the confluent hypergeometric function 1F1(m,n,x) = M(m,n,x) for integer parameters m, n.

Function: double gsl_sf_hyperg_1F1 (double a, double b, double x)
Function: int gsl_sf_hyperg_1F1_e (double a, double b, double x, gsl_sf_result * result)

  These routines compute the confluent hypergeometric function 1F1(a,b,x) = M(a,b,x) for general parameters a, b.

Function: double gsl_sf_hyperg_U_int (int m, int n, double x)
Function: int gsl_sf_hyperg_U_int_e (int m, int n, double x, gsl_sf_result * result)

  These routines compute the confluent hypergeometric function U(m,n,x) for integer parameters m, n.

Function: int gsl_sf_hyperg_U_int_e10_e (int m, int n, double x, gsl_sf_result_e10 * result)

  This routine computes the confluent hypergeometric function U(m,n,x) for integer parameters m, n using the `gsl_sf_result_e10` type to return a result with extended range.

Function: double gsl_sf_hyperg_U (double a, double b, double x)
Function: int gsl_sf_hyperg_U_e (double a, double b, double x, gsl_sf_result * result)

  These routines compute the confluent hypergeometric function U(a,b,x).

Function: int gsl_sf_hyperg_U_e10_e (double a, double b, double x, gsl_sf_result_e10 * result)

  This routine computes the confluent hypergeometric function U(a,b,x) using the `gsl_sf_result_e10` type to return a result with extended range.

Function: double gsl_sf_hyperg_2F1 (double a, double b, double c, double x)
Function: int gsl_sf_hyperg_2F1_e (double a, double b, double c, double x, gsl_sf_result * result)

  These routines compute the Gauss hypergeometric function 2F1(a,b,c,x) = F(a,b,c,x) for |x| < 1.

  If the arguments (a,b,c,x) are too close to a singularity then the function can return the error code `GSL_EMAXITER` when the series approximation converges too slowly. This occurs in the region of x=1, c - a - b = m for integer m.

Function: double gsl_sf_hyperg_2F1_conj (double aR, double aI, double c, double x)
Function: int gsl_sf_hyperg_2F1_conj_e (double aR, double aI, double c, double x, gsl_sf_result * result)

  These routines compute the Gauss hypergeometric function 2F1(a_R + i a_I, a_R - i a_I, c, x) with complex parameters for |x| < 1.

Function: double gsl_sf_hyperg_2F1_renorm (double a, double b, double c, double x)
Function: int gsl_sf_hyperg_2F1_renorm_e (double a, double b, double c, double x, gsl_sf_result * result)

  These routines compute the renormalized Gauss hypergeometric function 2F1(a,b,c,x) / \Gamma(c) for |x| < 1.

Function: double gsl_sf_hyperg_2F1_conj_renorm (double aR, double aI, double c, double x)
Function: int gsl_sf_hyperg_2F1_conj_renorm_e (double aR, double aI, double c, double x, gsl_sf_result * result)

  These routines compute the renormalized Gauss hypergeometric function 2F1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c) for |x| < 1.

Function: double gsl_sf_hyperg_2F0 (double a, double b, double x)
Function: int gsl_sf_hyperg_2F0_e (double a, double b, double x, gsl_sf_result * result)

  These routines compute the hypergeometric function 2F0(a,b,x). The series representation is a divergent hypergeometric series. However, for x < 0 we have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)