1/* specfunc/gsl_sf_hyperg.h
2 *
3 * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or (at
8 * your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19
20/* Author: G. Jungman */
21
22#ifndef __GSL_SF_HYPERG_H__
23#define __GSL_SF_HYPERG_H__
24
25#include <gsl/gsl_sf_result.h>
26
27#undef __BEGIN_DECLS
28#undef __END_DECLS
29#ifdef __cplusplus
30# define __BEGIN_DECLS extern "C" {
31# define __END_DECLS }
32#else
33# define __BEGIN_DECLS /* empty */
34# define __END_DECLS /* empty */
35#endif
36
37__BEGIN_DECLS
38
39
40/* Hypergeometric function related to Bessel functions
41 * 0F1[c,x] =
42 * Gamma[c] x^(1/2(1-c)) I_{c-1}(2 Sqrt[x])
43 * Gamma[c] (-x)^(1/2(1-c)) J_{c-1}(2 Sqrt[-x])
44 *
45 * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
46 */
47int gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result);
48double gsl_sf_hyperg_0F1(const double c, const double x);
49
50
51/* Confluent hypergeometric function for integer parameters.
52 * 1F1[m,n,x] = M(m,n,x)
53 *
54 * exceptions:
55 */
56int gsl_sf_hyperg_1F1_int_e(const int m, const int n, const double x, gsl_sf_result * result);
57double gsl_sf_hyperg_1F1_int(const int m, const int n, double x);
58
59
60/* Confluent hypergeometric function.
61 * 1F1[a,b,x] = M(a,b,x)
62 *
63 * exceptions:
64 */
65int gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, gsl_sf_result * result);
66double gsl_sf_hyperg_1F1(double a, double b, double x);
67
68
69/* Confluent hypergeometric function for integer parameters.
70 * U(m,n,x)
71 *
72 * exceptions:
73 */
74int gsl_sf_hyperg_U_int_e(const int m, const int n, const double x, gsl_sf_result * result);
75double gsl_sf_hyperg_U_int(const int m, const int n, const double x);
76
77
78/* Confluent hypergeometric function for integer parameters.
79 * U(m,n,x)
80 *
81 * exceptions:
82 */
83int gsl_sf_hyperg_U_int_e10_e(const int m, const int n, const double x, gsl_sf_result_e10 * result);
84
85
86/* Confluent hypergeometric function.
87 * U(a,b,x)
88 *
89 * exceptions:
90 */
91int gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result);
92double gsl_sf_hyperg_U(const double a, const double b, const double x);
93
94
95/* Confluent hypergeometric function.
96 * U(a,b,x)
97 *
98 * exceptions:
99 */
100int gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, gsl_sf_result_e10 * result);
101
102
103/* Gauss hypergeometric function 2F1[a,b,c,x]
104 * |x| < 1
105 *
106 * exceptions:
107 */
108int gsl_sf_hyperg_2F1_e(double a, double b, const double c, const double x, gsl_sf_result * result);
109double gsl_sf_hyperg_2F1(double a, double b, double c, double x);
110
111
112/* Gauss hypergeometric function
113 * 2F1[aR + I aI, aR - I aI, c, x]
114 * |x| < 1
115 *
116 * exceptions:
117 */
118int gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
119double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x);
120
121
122/* Renormalized Gauss hypergeometric function
123 * 2F1[a,b,c,x] / Gamma[c]
124 * |x| < 1
125 *
126 * exceptions:
127 */
128int gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, gsl_sf_result * result);
129double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x);
130
131
132/* Renormalized Gauss hypergeometric function
133 * 2F1[aR + I aI, aR - I aI, c, x] / Gamma[c]
134 * |x| < 1
135 *
136 * exceptions:
137 */
138int gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
139double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x);
140
141
142/* Mysterious hypergeometric function. The series representation
143 * is a divergent hypergeometric series. However, for x < 0 we
144 * have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)
145 *
146 * exceptions: GSL_EDOM
147 */
148int gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result);
149double gsl_sf_hyperg_2F0(const double a, const double b, const double x);
150
151
152__END_DECLS
153
154#endif /* __GSL_SF_HYPERG_H__ */
155