1/* specfunc/gsl_sf_expint.h
2 *
3 * Copyright (C) 2007 Brian Gough
4 * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or (at
9 * your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
20
21/* Author: G. Jungman */
22
23#ifndef __GSL_SF_EXPINT_H__
24#define __GSL_SF_EXPINT_H__
25
26#include <gsl/gsl_sf_result.h>
27
28#undef __BEGIN_DECLS
29#undef __END_DECLS
30#ifdef __cplusplus
31# define __BEGIN_DECLS extern "C" {
32# define __END_DECLS }
33#else
34# define __BEGIN_DECLS /* empty */
35# define __END_DECLS /* empty */
36#endif
37
38__BEGIN_DECLS
39
40
41/* E_1(x) := Re[ Integrate[ Exp[-xt]/t, {t,1,Infinity}] ]
42 *
43 * x != 0.0
44 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
45 */
46int gsl_sf_expint_E1_e(const double x, gsl_sf_result * result);
47double gsl_sf_expint_E1(const double x);
48
49
50/* E_2(x) := Re[ Integrate[ Exp[-xt]/t^2, {t,1,Infinity}] ]
51 *
52 * x != 0.0
53 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
54 */
55int gsl_sf_expint_E2_e(const double x, gsl_sf_result * result);
56double gsl_sf_expint_E2(const double x);
57
58
59/* E_n(x) := Re[ Integrate[ Exp[-xt]/t^n, {t,1,Infinity}] ]
60 *
61 * x != 0.0
62 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
63 */
64int gsl_sf_expint_En_e(const int n, const double x, gsl_sf_result * result);
65double gsl_sf_expint_En(const int n, const double x);
66
67
68/* E_1_scaled(x) := exp(x) E_1(x)
69 *
70 * x != 0.0
71 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
72 */
73int gsl_sf_expint_E1_scaled_e(const double x, gsl_sf_result * result);
74double gsl_sf_expint_E1_scaled(const double x);
75
76
77/* E_2_scaled(x) := exp(x) E_2(x)
78 *
79 * x != 0.0
80 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
81 */
82int gsl_sf_expint_E2_scaled_e(const double x, gsl_sf_result * result);
83double gsl_sf_expint_E2_scaled(const double x);
84
85/* E_n_scaled(x) := exp(x) E_n(x)
86 *
87 * x != 0.0
88 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
89 */
90int gsl_sf_expint_En_scaled_e(const int n, const double x, gsl_sf_result * result);
91double gsl_sf_expint_En_scaled(const int n, const double x);
92
93
94/* Ei(x) := - PV Integrate[ Exp[-t]/t, {t,-x,Infinity}]
95 * := PV Integrate[ Exp[t]/t, {t,-Infinity,x}]
96 *
97 * x != 0.0
98 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
99 */
100int gsl_sf_expint_Ei_e(const double x, gsl_sf_result * result);
101double gsl_sf_expint_Ei(const double x);
102
103
104/* Ei_scaled(x) := exp(-x) Ei(x)
105 *
106 * x != 0.0
107 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
108 */
109int gsl_sf_expint_Ei_scaled_e(const double x, gsl_sf_result * result);
110double gsl_sf_expint_Ei_scaled(const double x);
111
112
113/* Shi(x) := Integrate[ Sinh[t]/t, {t,0,x}]
114 *
115 * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
116 */
117int gsl_sf_Shi_e(const double x, gsl_sf_result * result);
118double gsl_sf_Shi(const double x);
119
120
121/* Chi(x) := Re[ M_EULER + log(x) + Integrate[(Cosh[t]-1)/t, {t,0,x}] ]
122 *
123 * x != 0.0
124 * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
125 */
126int gsl_sf_Chi_e(const double x, gsl_sf_result * result);
127double gsl_sf_Chi(const double x);
128
129
130/* Ei_3(x) := Integral[ Exp[-t^3], {t,0,x}]
131 *
132 * x >= 0.0
133 * exceptions: GSL_EDOM
134 */
135int gsl_sf_expint_3_e(const double x, gsl_sf_result * result);
136double gsl_sf_expint_3(double x);
137
138
139/* Si(x) := Integrate[ Sin[t]/t, {t,0,x}]
140 *
141 * exceptions: none
142 */
143int gsl_sf_Si_e(const double x, gsl_sf_result * result);
144double gsl_sf_Si(const double x);
145
146
147/* Ci(x) := -Integrate[ Cos[t]/t, {t,x,Infinity}]
148 *
149 * x > 0.0
150 * exceptions: GSL_EDOM
151 */
152int gsl_sf_Ci_e(const double x, gsl_sf_result * result);
153double gsl_sf_Ci(const double x);
154
155
156/* AtanInt(x) := Integral[ Arctan[t]/t, {t,0,x}]
157 *
158 *
159 * exceptions:
160 */
161int gsl_sf_atanint_e(const double x, gsl_sf_result * result);
162double gsl_sf_atanint(const double x);
163
164
165__END_DECLS
166
167#endif /* __GSL_SF_EXPINT_H__ */
168