## 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 @c{\${}_0F_1(c,x)\$} @math{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 @math{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 @math{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 @math{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 @math{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)
These routines compute the confluent hypergeometric function @math{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 @math{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 @math{2F1(a,b,c,x)} for @math{|x| < 1}.

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 @math{2F1(a_R + i a_I, a_R - i a_I, c, x)} with complex parameters for @math{|x| < 1}. exceptions:

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 @math{2F1(a,b,c,x) / \Gamma(c)} for @math{|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 @math{2F1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c)} for @math{|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 @c{\${}_2F_0(a,b,x)\$} @math{2F0(a,b,x)}. The series representation is a divergent hypergeometric series. However, for @math{x < 0} we have @math{2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)}