Chris@16
|
1 // math_fwd.hpp
|
Chris@16
|
2
|
Chris@16
|
3 // TODO revise completely for new distribution classes.
|
Chris@16
|
4
|
Chris@16
|
5 // Copyright Paul A. Bristow 2006.
|
Chris@16
|
6 // Copyright John Maddock 2006.
|
Chris@16
|
7
|
Chris@16
|
8 // Use, modification and distribution are subject to the
|
Chris@16
|
9 // Boost Software License, Version 1.0.
|
Chris@16
|
10 // (See accompanying file LICENSE_1_0.txt
|
Chris@16
|
11 // or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
12
|
Chris@16
|
13 // Omnibus list of forward declarations of math special functions.
|
Chris@16
|
14
|
Chris@16
|
15 // IT = Integer type.
|
Chris@16
|
16 // RT = Real type (built-in floating-point types, float, double, long double) & User Defined Types
|
Chris@16
|
17 // AT = Integer or Real type
|
Chris@16
|
18
|
Chris@16
|
19 #ifndef BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
Chris@16
|
20 #define BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
Chris@16
|
21
|
Chris@16
|
22 #ifdef _MSC_VER
|
Chris@16
|
23 #pragma once
|
Chris@16
|
24 #endif
|
Chris@16
|
25
|
Chris@16
|
26 #include <boost/math/special_functions/detail/round_fwd.hpp>
|
Chris@16
|
27 #include <boost/math/tools/promotion.hpp> // for argument promotion.
|
Chris@16
|
28 #include <boost/math/policies/policy.hpp>
|
Chris@16
|
29 #include <boost/mpl/comparison.hpp>
|
Chris@101
|
30 #include <boost/utility/enable_if.hpp>
|
Chris@16
|
31 #include <boost/config/no_tr1/complex.hpp>
|
Chris@16
|
32
|
Chris@16
|
33 #define BOOST_NO_MACRO_EXPAND /**/
|
Chris@16
|
34
|
Chris@16
|
35 namespace boost
|
Chris@16
|
36 {
|
Chris@16
|
37 namespace math
|
Chris@16
|
38 { // Math functions (in roughly alphabetic order).
|
Chris@16
|
39
|
Chris@16
|
40 // Beta functions.
|
Chris@16
|
41 template <class RT1, class RT2>
|
Chris@16
|
42 typename tools::promote_args<RT1, RT2>::type
|
Chris@16
|
43 beta(RT1 a, RT2 b); // Beta function (2 arguments).
|
Chris@16
|
44
|
Chris@16
|
45 template <class RT1, class RT2, class A>
|
Chris@16
|
46 typename tools::promote_args<RT1, RT2, A>::type
|
Chris@16
|
47 beta(RT1 a, RT2 b, A x); // Beta function (3 arguments).
|
Chris@16
|
48
|
Chris@16
|
49 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
50 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
51 beta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Beta function (3 arguments).
|
Chris@16
|
52
|
Chris@16
|
53 template <class RT1, class RT2, class RT3>
|
Chris@16
|
54 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
55 betac(RT1 a, RT2 b, RT3 x);
|
Chris@16
|
56
|
Chris@16
|
57 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
58 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
59 betac(RT1 a, RT2 b, RT3 x, const Policy& pol);
|
Chris@16
|
60
|
Chris@16
|
61 template <class RT1, class RT2, class RT3>
|
Chris@16
|
62 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
63 ibeta(RT1 a, RT2 b, RT3 x); // Incomplete beta function.
|
Chris@16
|
64
|
Chris@16
|
65 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
66 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
67 ibeta(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta function.
|
Chris@16
|
68
|
Chris@16
|
69 template <class RT1, class RT2, class RT3>
|
Chris@16
|
70 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
71 ibetac(RT1 a, RT2 b, RT3 x); // Incomplete beta complement function.
|
Chris@16
|
72
|
Chris@16
|
73 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
74 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
75 ibetac(RT1 a, RT2 b, RT3 x, const Policy& pol); // Incomplete beta complement function.
|
Chris@16
|
76
|
Chris@16
|
77 template <class T1, class T2, class T3, class T4>
|
Chris@16
|
78 typename tools::promote_args<T1, T2, T3, T4>::type
|
Chris@16
|
79 ibeta_inv(T1 a, T2 b, T3 p, T4* py);
|
Chris@16
|
80
|
Chris@16
|
81 template <class T1, class T2, class T3, class T4, class Policy>
|
Chris@16
|
82 typename tools::promote_args<T1, T2, T3, T4>::type
|
Chris@16
|
83 ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy& pol);
|
Chris@16
|
84
|
Chris@16
|
85 template <class RT1, class RT2, class RT3>
|
Chris@16
|
86 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
87 ibeta_inv(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
|
Chris@16
|
88
|
Chris@16
|
89 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
90 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
91 ibeta_inv(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
|
Chris@16
|
92
|
Chris@16
|
93 template <class RT1, class RT2, class RT3>
|
Chris@16
|
94 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
95 ibeta_inva(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
|
Chris@16
|
96
|
Chris@16
|
97 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
98 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
99 ibeta_inva(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
|
Chris@16
|
100
|
Chris@16
|
101 template <class RT1, class RT2, class RT3>
|
Chris@16
|
102 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
103 ibeta_invb(RT1 a, RT2 b, RT3 p); // Incomplete beta inverse function.
|
Chris@16
|
104
|
Chris@16
|
105 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
106 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
107 ibeta_invb(RT1 a, RT2 b, RT3 p, const Policy&); // Incomplete beta inverse function.
|
Chris@16
|
108
|
Chris@16
|
109 template <class T1, class T2, class T3, class T4>
|
Chris@16
|
110 typename tools::promote_args<T1, T2, T3, T4>::type
|
Chris@16
|
111 ibetac_inv(T1 a, T2 b, T3 q, T4* py);
|
Chris@16
|
112
|
Chris@16
|
113 template <class T1, class T2, class T3, class T4, class Policy>
|
Chris@16
|
114 typename tools::promote_args<T1, T2, T3, T4>::type
|
Chris@16
|
115 ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy& pol);
|
Chris@16
|
116
|
Chris@16
|
117 template <class RT1, class RT2, class RT3>
|
Chris@16
|
118 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
119 ibetac_inv(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
|
Chris@16
|
120
|
Chris@16
|
121 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
122 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
123 ibetac_inv(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
|
Chris@16
|
124
|
Chris@16
|
125 template <class RT1, class RT2, class RT3>
|
Chris@16
|
126 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
127 ibetac_inva(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
|
Chris@16
|
128
|
Chris@16
|
129 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
130 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
131 ibetac_inva(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
|
Chris@16
|
132
|
Chris@16
|
133 template <class RT1, class RT2, class RT3>
|
Chris@16
|
134 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
135 ibetac_invb(RT1 a, RT2 b, RT3 q); // Incomplete beta complement inverse function.
|
Chris@16
|
136
|
Chris@16
|
137 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
138 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
139 ibetac_invb(RT1 a, RT2 b, RT3 q, const Policy&); // Incomplete beta complement inverse function.
|
Chris@16
|
140
|
Chris@16
|
141 template <class RT1, class RT2, class RT3>
|
Chris@16
|
142 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
143 ibeta_derivative(RT1 a, RT2 b, RT3 x); // derivative of incomplete beta
|
Chris@16
|
144
|
Chris@16
|
145 template <class RT1, class RT2, class RT3, class Policy>
|
Chris@16
|
146 typename tools::promote_args<RT1, RT2, RT3>::type
|
Chris@16
|
147 ibeta_derivative(RT1 a, RT2 b, RT3 x, const Policy& pol); // derivative of incomplete beta
|
Chris@16
|
148
|
Chris@101
|
149 // Binomial:
|
Chris@101
|
150 template <class T, class Policy>
|
Chris@101
|
151 T binomial_coefficient(unsigned n, unsigned k, const Policy& pol);
|
Chris@101
|
152 template <class T>
|
Chris@101
|
153 T binomial_coefficient(unsigned n, unsigned k);
|
Chris@101
|
154
|
Chris@16
|
155 // erf & erfc error functions.
|
Chris@16
|
156 template <class RT> // Error function.
|
Chris@16
|
157 typename tools::promote_args<RT>::type erf(RT z);
|
Chris@16
|
158 template <class RT, class Policy> // Error function.
|
Chris@16
|
159 typename tools::promote_args<RT>::type erf(RT z, const Policy&);
|
Chris@16
|
160
|
Chris@16
|
161 template <class RT>// Error function complement.
|
Chris@16
|
162 typename tools::promote_args<RT>::type erfc(RT z);
|
Chris@16
|
163 template <class RT, class Policy>// Error function complement.
|
Chris@16
|
164 typename tools::promote_args<RT>::type erfc(RT z, const Policy&);
|
Chris@16
|
165
|
Chris@16
|
166 template <class RT>// Error function inverse.
|
Chris@16
|
167 typename tools::promote_args<RT>::type erf_inv(RT z);
|
Chris@16
|
168 template <class RT, class Policy>// Error function inverse.
|
Chris@16
|
169 typename tools::promote_args<RT>::type erf_inv(RT z, const Policy& pol);
|
Chris@16
|
170
|
Chris@16
|
171 template <class RT>// Error function complement inverse.
|
Chris@16
|
172 typename tools::promote_args<RT>::type erfc_inv(RT z);
|
Chris@16
|
173 template <class RT, class Policy>// Error function complement inverse.
|
Chris@16
|
174 typename tools::promote_args<RT>::type erfc_inv(RT z, const Policy& pol);
|
Chris@16
|
175
|
Chris@16
|
176 // Polynomials:
|
Chris@16
|
177 template <class T1, class T2, class T3>
|
Chris@16
|
178 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
179 legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
|
Chris@16
|
180
|
Chris@16
|
181 template <class T>
|
Chris@16
|
182 typename tools::promote_args<T>::type
|
Chris@16
|
183 legendre_p(int l, T x);
|
Chris@16
|
184
|
Chris@16
|
185 template <class T, class Policy>
|
Chris@101
|
186 typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
|
Chris@16
|
187 legendre_p(int l, T x, const Policy& pol);
|
Chris@16
|
188
|
Chris@16
|
189 template <class T>
|
Chris@16
|
190 typename tools::promote_args<T>::type
|
Chris@16
|
191 legendre_q(unsigned l, T x);
|
Chris@16
|
192
|
Chris@16
|
193 template <class T, class Policy>
|
Chris@101
|
194 typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
|
Chris@16
|
195 legendre_q(unsigned l, T x, const Policy& pol);
|
Chris@16
|
196
|
Chris@16
|
197 template <class T1, class T2, class T3>
|
Chris@16
|
198 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
199 legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
|
Chris@16
|
200
|
Chris@16
|
201 template <class T>
|
Chris@16
|
202 typename tools::promote_args<T>::type
|
Chris@16
|
203 legendre_p(int l, int m, T x);
|
Chris@16
|
204
|
Chris@16
|
205 template <class T, class Policy>
|
Chris@16
|
206 typename tools::promote_args<T>::type
|
Chris@16
|
207 legendre_p(int l, int m, T x, const Policy& pol);
|
Chris@16
|
208
|
Chris@16
|
209 template <class T1, class T2, class T3>
|
Chris@16
|
210 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
211 laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
|
Chris@16
|
212
|
Chris@16
|
213 template <class T1, class T2, class T3>
|
Chris@16
|
214 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
215 laguerre_next(unsigned n, unsigned l, T1 x, T2 Pl, T3 Plm1);
|
Chris@16
|
216
|
Chris@16
|
217 template <class T>
|
Chris@16
|
218 typename tools::promote_args<T>::type
|
Chris@16
|
219 laguerre(unsigned n, T x);
|
Chris@16
|
220
|
Chris@16
|
221 template <class T, class Policy>
|
Chris@16
|
222 typename tools::promote_args<T>::type
|
Chris@16
|
223 laguerre(unsigned n, unsigned m, T x, const Policy& pol);
|
Chris@16
|
224
|
Chris@16
|
225 template <class T1, class T2>
|
Chris@16
|
226 struct laguerre_result
|
Chris@16
|
227 {
|
Chris@16
|
228 typedef typename mpl::if_<
|
Chris@16
|
229 policies::is_policy<T2>,
|
Chris@16
|
230 typename tools::promote_args<T1>::type,
|
Chris@16
|
231 typename tools::promote_args<T2>::type
|
Chris@16
|
232 >::type type;
|
Chris@16
|
233 };
|
Chris@16
|
234
|
Chris@16
|
235 template <class T1, class T2>
|
Chris@16
|
236 typename laguerre_result<T1, T2>::type
|
Chris@16
|
237 laguerre(unsigned n, T1 m, T2 x);
|
Chris@16
|
238
|
Chris@16
|
239 template <class T>
|
Chris@16
|
240 typename tools::promote_args<T>::type
|
Chris@16
|
241 hermite(unsigned n, T x);
|
Chris@16
|
242
|
Chris@16
|
243 template <class T, class Policy>
|
Chris@16
|
244 typename tools::promote_args<T>::type
|
Chris@16
|
245 hermite(unsigned n, T x, const Policy& pol);
|
Chris@16
|
246
|
Chris@16
|
247 template <class T1, class T2, class T3>
|
Chris@16
|
248 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
249 hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
|
Chris@16
|
250
|
Chris@16
|
251 template <class T1, class T2>
|
Chris@16
|
252 std::complex<typename tools::promote_args<T1, T2>::type>
|
Chris@16
|
253 spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
|
Chris@16
|
254
|
Chris@16
|
255 template <class T1, class T2, class Policy>
|
Chris@16
|
256 std::complex<typename tools::promote_args<T1, T2>::type>
|
Chris@16
|
257 spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
|
Chris@16
|
258
|
Chris@16
|
259 template <class T1, class T2>
|
Chris@16
|
260 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
261 spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
|
Chris@16
|
262
|
Chris@16
|
263 template <class T1, class T2, class Policy>
|
Chris@16
|
264 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
265 spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
|
Chris@16
|
266
|
Chris@16
|
267 template <class T1, class T2>
|
Chris@16
|
268 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
269 spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
|
Chris@16
|
270
|
Chris@16
|
271 template <class T1, class T2, class Policy>
|
Chris@16
|
272 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
273 spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);
|
Chris@16
|
274
|
Chris@16
|
275 // Elliptic integrals:
|
Chris@16
|
276 template <class T1, class T2, class T3>
|
Chris@16
|
277 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
278 ellint_rf(T1 x, T2 y, T3 z);
|
Chris@16
|
279
|
Chris@16
|
280 template <class T1, class T2, class T3, class Policy>
|
Chris@16
|
281 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
282 ellint_rf(T1 x, T2 y, T3 z, const Policy& pol);
|
Chris@16
|
283
|
Chris@16
|
284 template <class T1, class T2, class T3>
|
Chris@16
|
285 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
286 ellint_rd(T1 x, T2 y, T3 z);
|
Chris@16
|
287
|
Chris@16
|
288 template <class T1, class T2, class T3, class Policy>
|
Chris@16
|
289 typename tools::promote_args<T1, T2, T3>::type
|
Chris@16
|
290 ellint_rd(T1 x, T2 y, T3 z, const Policy& pol);
|
Chris@16
|
291
|
Chris@16
|
292 template <class T1, class T2>
|
Chris@16
|
293 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
294 ellint_rc(T1 x, T2 y);
|
Chris@16
|
295
|
Chris@16
|
296 template <class T1, class T2, class Policy>
|
Chris@16
|
297 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
298 ellint_rc(T1 x, T2 y, const Policy& pol);
|
Chris@16
|
299
|
Chris@16
|
300 template <class T1, class T2, class T3, class T4>
|
Chris@16
|
301 typename tools::promote_args<T1, T2, T3, T4>::type
|
Chris@16
|
302 ellint_rj(T1 x, T2 y, T3 z, T4 p);
|
Chris@16
|
303
|
Chris@16
|
304 template <class T1, class T2, class T3, class T4, class Policy>
|
Chris@16
|
305 typename tools::promote_args<T1, T2, T3, T4>::type
|
Chris@16
|
306 ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy& pol);
|
Chris@16
|
307
|
Chris@101
|
308 template <class T1, class T2, class T3>
|
Chris@101
|
309 typename tools::promote_args<T1, T2, T3>::type
|
Chris@101
|
310 ellint_rg(T1 x, T2 y, T3 z);
|
Chris@101
|
311
|
Chris@101
|
312 template <class T1, class T2, class T3, class Policy>
|
Chris@101
|
313 typename tools::promote_args<T1, T2, T3>::type
|
Chris@101
|
314 ellint_rg(T1 x, T2 y, T3 z, const Policy& pol);
|
Chris@101
|
315
|
Chris@16
|
316 template <typename T>
|
Chris@16
|
317 typename tools::promote_args<T>::type ellint_2(T k);
|
Chris@16
|
318
|
Chris@16
|
319 template <class T1, class T2>
|
Chris@16
|
320 typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi);
|
Chris@16
|
321
|
Chris@16
|
322 template <class T1, class T2, class Policy>
|
Chris@16
|
323 typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi, const Policy& pol);
|
Chris@16
|
324
|
Chris@16
|
325 template <typename T>
|
Chris@16
|
326 typename tools::promote_args<T>::type ellint_1(T k);
|
Chris@16
|
327
|
Chris@16
|
328 template <class T1, class T2>
|
Chris@16
|
329 typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi);
|
Chris@16
|
330
|
Chris@16
|
331 template <class T1, class T2, class Policy>
|
Chris@16
|
332 typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi, const Policy& pol);
|
Chris@16
|
333
|
Chris@101
|
334 template <typename T>
|
Chris@101
|
335 typename tools::promote_args<T>::type ellint_d(T k);
|
Chris@101
|
336
|
Chris@101
|
337 template <class T1, class T2>
|
Chris@101
|
338 typename tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi);
|
Chris@101
|
339
|
Chris@101
|
340 template <class T1, class T2, class Policy>
|
Chris@101
|
341 typename tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi, const Policy& pol);
|
Chris@101
|
342
|
Chris@101
|
343 template <class T1, class T2>
|
Chris@101
|
344 typename tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi);
|
Chris@101
|
345
|
Chris@101
|
346 template <class T1, class T2, class Policy>
|
Chris@101
|
347 typename tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi, const Policy& pol);
|
Chris@101
|
348
|
Chris@101
|
349 template <class T1, class T2>
|
Chris@101
|
350 typename tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi);
|
Chris@101
|
351
|
Chris@101
|
352 template <class T1, class T2, class Policy>
|
Chris@101
|
353 typename tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi, const Policy& pol);
|
Chris@101
|
354
|
Chris@16
|
355 namespace detail{
|
Chris@16
|
356
|
Chris@16
|
357 template <class T, class U, class V>
|
Chris@16
|
358 struct ellint_3_result
|
Chris@16
|
359 {
|
Chris@16
|
360 typedef typename mpl::if_<
|
Chris@16
|
361 policies::is_policy<V>,
|
Chris@16
|
362 typename tools::promote_args<T, U>::type,
|
Chris@16
|
363 typename tools::promote_args<T, U, V>::type
|
Chris@16
|
364 >::type type;
|
Chris@16
|
365 };
|
Chris@16
|
366
|
Chris@16
|
367 } // namespace detail
|
Chris@16
|
368
|
Chris@16
|
369
|
Chris@16
|
370 template <class T1, class T2, class T3>
|
Chris@16
|
371 typename detail::ellint_3_result<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi);
|
Chris@16
|
372
|
Chris@16
|
373 template <class T1, class T2, class T3, class Policy>
|
Chris@16
|
374 typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi, const Policy& pol);
|
Chris@16
|
375
|
Chris@16
|
376 template <class T1, class T2>
|
Chris@16
|
377 typename tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v);
|
Chris@16
|
378
|
Chris@16
|
379 // Factorial functions.
|
Chris@16
|
380 // Note: not for integral types, at present.
|
Chris@16
|
381 template <class RT>
|
Chris@16
|
382 struct max_factorial;
|
Chris@16
|
383 template <class RT>
|
Chris@16
|
384 RT factorial(unsigned int);
|
Chris@16
|
385 template <class RT, class Policy>
|
Chris@16
|
386 RT factorial(unsigned int, const Policy& pol);
|
Chris@16
|
387 template <class RT>
|
Chris@16
|
388 RT unchecked_factorial(unsigned int BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(RT));
|
Chris@16
|
389 template <class RT>
|
Chris@16
|
390 RT double_factorial(unsigned i);
|
Chris@16
|
391 template <class RT, class Policy>
|
Chris@16
|
392 RT double_factorial(unsigned i, const Policy& pol);
|
Chris@16
|
393
|
Chris@16
|
394 template <class RT>
|
Chris@16
|
395 typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n);
|
Chris@16
|
396
|
Chris@16
|
397 template <class RT, class Policy>
|
Chris@16
|
398 typename tools::promote_args<RT>::type falling_factorial(RT x, unsigned n, const Policy& pol);
|
Chris@16
|
399
|
Chris@16
|
400 template <class RT>
|
Chris@16
|
401 typename tools::promote_args<RT>::type rising_factorial(RT x, int n);
|
Chris@16
|
402
|
Chris@16
|
403 template <class RT, class Policy>
|
Chris@16
|
404 typename tools::promote_args<RT>::type rising_factorial(RT x, int n, const Policy& pol);
|
Chris@16
|
405
|
Chris@16
|
406 // Gamma functions.
|
Chris@16
|
407 template <class RT>
|
Chris@16
|
408 typename tools::promote_args<RT>::type tgamma(RT z);
|
Chris@16
|
409
|
Chris@16
|
410 template <class RT>
|
Chris@16
|
411 typename tools::promote_args<RT>::type tgamma1pm1(RT z);
|
Chris@16
|
412
|
Chris@16
|
413 template <class RT, class Policy>
|
Chris@16
|
414 typename tools::promote_args<RT>::type tgamma1pm1(RT z, const Policy& pol);
|
Chris@16
|
415
|
Chris@16
|
416 template <class RT1, class RT2>
|
Chris@16
|
417 typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z);
|
Chris@16
|
418
|
Chris@16
|
419 template <class RT1, class RT2, class Policy>
|
Chris@16
|
420 typename tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z, const Policy& pol);
|
Chris@16
|
421
|
Chris@16
|
422 template <class RT>
|
Chris@16
|
423 typename tools::promote_args<RT>::type lgamma(RT z, int* sign);
|
Chris@16
|
424
|
Chris@16
|
425 template <class RT, class Policy>
|
Chris@16
|
426 typename tools::promote_args<RT>::type lgamma(RT z, int* sign, const Policy& pol);
|
Chris@16
|
427
|
Chris@16
|
428 template <class RT>
|
Chris@16
|
429 typename tools::promote_args<RT>::type lgamma(RT x);
|
Chris@16
|
430
|
Chris@16
|
431 template <class RT, class Policy>
|
Chris@16
|
432 typename tools::promote_args<RT>::type lgamma(RT x, const Policy& pol);
|
Chris@16
|
433
|
Chris@16
|
434 template <class RT1, class RT2>
|
Chris@16
|
435 typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z);
|
Chris@16
|
436
|
Chris@16
|
437 template <class RT1, class RT2, class Policy>
|
Chris@16
|
438 typename tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z, const Policy&);
|
Chris@16
|
439
|
Chris@16
|
440 template <class RT1, class RT2>
|
Chris@16
|
441 typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z);
|
Chris@16
|
442
|
Chris@16
|
443 template <class RT1, class RT2, class Policy>
|
Chris@16
|
444 typename tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z, const Policy&);
|
Chris@16
|
445
|
Chris@16
|
446 template <class RT1, class RT2>
|
Chris@16
|
447 typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z);
|
Chris@16
|
448
|
Chris@16
|
449 template <class RT1, class RT2, class Policy>
|
Chris@16
|
450 typename tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z, const Policy&);
|
Chris@16
|
451
|
Chris@16
|
452 template <class T1, class T2>
|
Chris@16
|
453 typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta);
|
Chris@16
|
454
|
Chris@16
|
455 template <class T1, class T2, class Policy>
|
Chris@16
|
456 typename tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta, const Policy&);
|
Chris@16
|
457
|
Chris@16
|
458 template <class T1, class T2>
|
Chris@16
|
459 typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b);
|
Chris@16
|
460
|
Chris@16
|
461 template <class T1, class T2, class Policy>
|
Chris@16
|
462 typename tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b, const Policy&);
|
Chris@16
|
463
|
Chris@16
|
464 template <class T1, class T2>
|
Chris@16
|
465 typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x);
|
Chris@16
|
466
|
Chris@16
|
467 template <class T1, class T2, class Policy>
|
Chris@16
|
468 typename tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x, const Policy&);
|
Chris@16
|
469
|
Chris@16
|
470 // gamma inverse.
|
Chris@16
|
471 template <class T1, class T2>
|
Chris@16
|
472 typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p);
|
Chris@16
|
473
|
Chris@16
|
474 template <class T1, class T2, class Policy>
|
Chris@16
|
475 typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p, const Policy&);
|
Chris@16
|
476
|
Chris@16
|
477 template <class T1, class T2>
|
Chris@16
|
478 typename tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p);
|
Chris@16
|
479
|
Chris@16
|
480 template <class T1, class T2, class Policy>
|
Chris@16
|
481 typename tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p, const Policy&);
|
Chris@16
|
482
|
Chris@16
|
483 template <class T1, class T2>
|
Chris@16
|
484 typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q);
|
Chris@16
|
485
|
Chris@16
|
486 template <class T1, class T2, class Policy>
|
Chris@16
|
487 typename tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q, const Policy&);
|
Chris@16
|
488
|
Chris@16
|
489 template <class T1, class T2>
|
Chris@16
|
490 typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q);
|
Chris@16
|
491
|
Chris@16
|
492 template <class T1, class T2, class Policy>
|
Chris@16
|
493 typename tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q, const Policy&);
|
Chris@16
|
494
|
Chris@16
|
495 // digamma:
|
Chris@16
|
496 template <class T>
|
Chris@16
|
497 typename tools::promote_args<T>::type digamma(T x);
|
Chris@16
|
498
|
Chris@16
|
499 template <class T, class Policy>
|
Chris@16
|
500 typename tools::promote_args<T>::type digamma(T x, const Policy&);
|
Chris@16
|
501
|
Chris@101
|
502 // trigamma:
|
Chris@101
|
503 template <class T>
|
Chris@101
|
504 typename tools::promote_args<T>::type trigamma(T x);
|
Chris@101
|
505
|
Chris@101
|
506 template <class T, class Policy>
|
Chris@101
|
507 typename tools::promote_args<T>::type trigamma(T x, const Policy&);
|
Chris@101
|
508
|
Chris@101
|
509 // polygamma:
|
Chris@101
|
510 template <class T>
|
Chris@101
|
511 typename tools::promote_args<T>::type polygamma(int n, T x);
|
Chris@101
|
512
|
Chris@101
|
513 template <class T, class Policy>
|
Chris@101
|
514 typename tools::promote_args<T>::type polygamma(int n, T x, const Policy&);
|
Chris@101
|
515
|
Chris@16
|
516 // Hypotenuse function sqrt(x ^ 2 + y ^ 2).
|
Chris@16
|
517 template <class T1, class T2>
|
Chris@16
|
518 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
519 hypot(T1 x, T2 y);
|
Chris@16
|
520
|
Chris@16
|
521 template <class T1, class T2, class Policy>
|
Chris@16
|
522 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
523 hypot(T1 x, T2 y, const Policy&);
|
Chris@16
|
524
|
Chris@16
|
525 // cbrt - cube root.
|
Chris@16
|
526 template <class RT>
|
Chris@16
|
527 typename tools::promote_args<RT>::type cbrt(RT z);
|
Chris@16
|
528
|
Chris@16
|
529 template <class RT, class Policy>
|
Chris@16
|
530 typename tools::promote_args<RT>::type cbrt(RT z, const Policy&);
|
Chris@16
|
531
|
Chris@16
|
532 // log1p is log(x + 1)
|
Chris@16
|
533 template <class T>
|
Chris@16
|
534 typename tools::promote_args<T>::type log1p(T);
|
Chris@16
|
535
|
Chris@16
|
536 template <class T, class Policy>
|
Chris@16
|
537 typename tools::promote_args<T>::type log1p(T, const Policy&);
|
Chris@16
|
538
|
Chris@16
|
539 // log1pmx is log(x + 1) - x
|
Chris@16
|
540 template <class T>
|
Chris@16
|
541 typename tools::promote_args<T>::type log1pmx(T);
|
Chris@16
|
542
|
Chris@16
|
543 template <class T, class Policy>
|
Chris@16
|
544 typename tools::promote_args<T>::type log1pmx(T, const Policy&);
|
Chris@16
|
545
|
Chris@16
|
546 // Exp (x) minus 1 functions.
|
Chris@16
|
547 template <class T>
|
Chris@16
|
548 typename tools::promote_args<T>::type expm1(T);
|
Chris@16
|
549
|
Chris@16
|
550 template <class T, class Policy>
|
Chris@16
|
551 typename tools::promote_args<T>::type expm1(T, const Policy&);
|
Chris@16
|
552
|
Chris@16
|
553 // Power - 1
|
Chris@16
|
554 template <class T1, class T2>
|
Chris@16
|
555 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
556 powm1(const T1 a, const T2 z);
|
Chris@16
|
557
|
Chris@16
|
558 template <class T1, class T2, class Policy>
|
Chris@16
|
559 typename tools::promote_args<T1, T2>::type
|
Chris@16
|
560 powm1(const T1 a, const T2 z, const Policy&);
|
Chris@16
|
561
|
Chris@16
|
562 // sqrt(1+x) - 1
|
Chris@16
|
563 template <class T>
|
Chris@16
|
564 typename tools::promote_args<T>::type sqrt1pm1(const T& val);
|
Chris@16
|
565
|
Chris@16
|
566 template <class T, class Policy>
|
Chris@16
|
567 typename tools::promote_args<T>::type sqrt1pm1(const T& val, const Policy&);
|
Chris@16
|
568
|
Chris@16
|
569 // sinus cardinals:
|
Chris@16
|
570 template <class T>
|
Chris@16
|
571 typename tools::promote_args<T>::type sinc_pi(T x);
|
Chris@16
|
572
|
Chris@16
|
573 template <class T, class Policy>
|
Chris@16
|
574 typename tools::promote_args<T>::type sinc_pi(T x, const Policy&);
|
Chris@16
|
575
|
Chris@16
|
576 template <class T>
|
Chris@16
|
577 typename tools::promote_args<T>::type sinhc_pi(T x);
|
Chris@16
|
578
|
Chris@16
|
579 template <class T, class Policy>
|
Chris@16
|
580 typename tools::promote_args<T>::type sinhc_pi(T x, const Policy&);
|
Chris@16
|
581
|
Chris@16
|
582 // inverse hyperbolics:
|
Chris@16
|
583 template<typename T>
|
Chris@16
|
584 typename tools::promote_args<T>::type asinh(T x);
|
Chris@16
|
585
|
Chris@16
|
586 template<typename T, class Policy>
|
Chris@16
|
587 typename tools::promote_args<T>::type asinh(T x, const Policy&);
|
Chris@16
|
588
|
Chris@16
|
589 template<typename T>
|
Chris@16
|
590 typename tools::promote_args<T>::type acosh(T x);
|
Chris@16
|
591
|
Chris@16
|
592 template<typename T, class Policy>
|
Chris@16
|
593 typename tools::promote_args<T>::type acosh(T x, const Policy&);
|
Chris@16
|
594
|
Chris@16
|
595 template<typename T>
|
Chris@16
|
596 typename tools::promote_args<T>::type atanh(T x);
|
Chris@16
|
597
|
Chris@16
|
598 template<typename T, class Policy>
|
Chris@16
|
599 typename tools::promote_args<T>::type atanh(T x, const Policy&);
|
Chris@16
|
600
|
Chris@16
|
601 namespace detail{
|
Chris@16
|
602
|
Chris@16
|
603 typedef mpl::int_<0> bessel_no_int_tag; // No integer optimisation possible.
|
Chris@16
|
604 typedef mpl::int_<1> bessel_maybe_int_tag; // Maybe integer optimisation.
|
Chris@16
|
605 typedef mpl::int_<2> bessel_int_tag; // Definite integer optimistaion.
|
Chris@16
|
606
|
Chris@16
|
607 template <class T1, class T2, class Policy>
|
Chris@16
|
608 struct bessel_traits
|
Chris@16
|
609 {
|
Chris@16
|
610 typedef typename tools::promote_args<
|
Chris@16
|
611 T1, T2
|
Chris@16
|
612 >::type result_type;
|
Chris@16
|
613
|
Chris@16
|
614 typedef typename policies::precision<result_type, Policy>::type precision_type;
|
Chris@16
|
615
|
Chris@16
|
616 typedef typename mpl::if_<
|
Chris@16
|
617 mpl::or_<
|
Chris@16
|
618 mpl::less_equal<precision_type, mpl::int_<0> >,
|
Chris@16
|
619 mpl::greater<precision_type, mpl::int_<64> > >,
|
Chris@16
|
620 bessel_no_int_tag,
|
Chris@16
|
621 typename mpl::if_<
|
Chris@16
|
622 is_integral<T1>,
|
Chris@16
|
623 bessel_int_tag,
|
Chris@16
|
624 bessel_maybe_int_tag
|
Chris@16
|
625 >::type
|
Chris@16
|
626 >::type optimisation_tag;
|
Chris@16
|
627 };
|
Chris@16
|
628 } // detail
|
Chris@16
|
629
|
Chris@16
|
630 // Bessel functions:
|
Chris@16
|
631 template <class T1, class T2, class Policy>
|
Chris@16
|
632 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j(T1 v, T2 x, const Policy& pol);
|
Chris@101
|
633 template <class T1, class T2, class Policy>
|
Chris@101
|
634 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_j_prime(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
635
|
Chris@16
|
636 template <class T1, class T2>
|
Chris@16
|
637 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j(T1 v, T2 x);
|
Chris@101
|
638 template <class T1, class T2>
|
Chris@101
|
639 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_j_prime(T1 v, T2 x);
|
Chris@16
|
640
|
Chris@16
|
641 template <class T, class Policy>
|
Chris@16
|
642 typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel(unsigned v, T x, const Policy& pol);
|
Chris@101
|
643 template <class T, class Policy>
|
Chris@101
|
644 typename detail::bessel_traits<T, T, Policy>::result_type sph_bessel_prime(unsigned v, T x, const Policy& pol);
|
Chris@16
|
645
|
Chris@16
|
646 template <class T>
|
Chris@16
|
647 typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x);
|
Chris@101
|
648 template <class T>
|
Chris@101
|
649 typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel_prime(unsigned v, T x);
|
Chris@16
|
650
|
Chris@16
|
651 template <class T1, class T2, class Policy>
|
Chris@16
|
652 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i(T1 v, T2 x, const Policy& pol);
|
Chris@101
|
653 template <class T1, class T2, class Policy>
|
Chris@101
|
654 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_i_prime(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
655
|
Chris@16
|
656 template <class T1, class T2>
|
Chris@16
|
657 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i(T1 v, T2 x);
|
Chris@101
|
658 template <class T1, class T2>
|
Chris@101
|
659 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_i_prime(T1 v, T2 x);
|
Chris@16
|
660
|
Chris@16
|
661 template <class T1, class T2, class Policy>
|
Chris@16
|
662 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k(T1 v, T2 x, const Policy& pol);
|
Chris@101
|
663 template <class T1, class T2, class Policy>
|
Chris@101
|
664 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_bessel_k_prime(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
665
|
Chris@16
|
666 template <class T1, class T2>
|
Chris@16
|
667 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k(T1 v, T2 x);
|
Chris@101
|
668 template <class T1, class T2>
|
Chris@101
|
669 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_bessel_k_prime(T1 v, T2 x);
|
Chris@16
|
670
|
Chris@16
|
671 template <class T1, class T2, class Policy>
|
Chris@16
|
672 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann(T1 v, T2 x, const Policy& pol);
|
Chris@101
|
673 template <class T1, class T2, class Policy>
|
Chris@101
|
674 typename detail::bessel_traits<T1, T2, Policy>::result_type cyl_neumann_prime(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
675
|
Chris@16
|
676 template <class T1, class T2>
|
Chris@16
|
677 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann(T1 v, T2 x);
|
Chris@101
|
678 template <class T1, class T2>
|
Chris@101
|
679 typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type cyl_neumann_prime(T1 v, T2 x);
|
Chris@16
|
680
|
Chris@16
|
681 template <class T, class Policy>
|
Chris@16
|
682 typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann(unsigned v, T x, const Policy& pol);
|
Chris@101
|
683 template <class T, class Policy>
|
Chris@101
|
684 typename detail::bessel_traits<T, T, Policy>::result_type sph_neumann_prime(unsigned v, T x, const Policy& pol);
|
Chris@16
|
685
|
Chris@16
|
686 template <class T>
|
Chris@16
|
687 typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann(unsigned v, T x);
|
Chris@101
|
688 template <class T>
|
Chris@101
|
689 typename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_neumann_prime(unsigned v, T x);
|
Chris@16
|
690
|
Chris@16
|
691 template <class T, class Policy>
|
Chris@16
|
692 typename detail::bessel_traits<T, T, Policy>::result_type cyl_bessel_j_zero(T v, int m, const Policy& pol);
|
Chris@16
|
693
|
Chris@16
|
694 template <class T>
|
Chris@16
|
695 typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_bessel_j_zero(T v, int m);
|
Chris@16
|
696
|
Chris@16
|
697 template <class T, class OutputIterator>
|
Chris@16
|
698 OutputIterator cyl_bessel_j_zero(T v,
|
Chris@16
|
699 int start_index,
|
Chris@16
|
700 unsigned number_of_zeros,
|
Chris@16
|
701 OutputIterator out_it);
|
Chris@16
|
702
|
Chris@16
|
703 template <class T, class OutputIterator, class Policy>
|
Chris@16
|
704 OutputIterator cyl_bessel_j_zero(T v,
|
Chris@16
|
705 int start_index,
|
Chris@16
|
706 unsigned number_of_zeros,
|
Chris@16
|
707 OutputIterator out_it,
|
Chris@16
|
708 const Policy&);
|
Chris@16
|
709
|
Chris@16
|
710 template <class T, class Policy>
|
Chris@16
|
711 typename detail::bessel_traits<T, T, Policy>::result_type cyl_neumann_zero(T v, int m, const Policy& pol);
|
Chris@16
|
712
|
Chris@16
|
713 template <class T>
|
Chris@16
|
714 typename detail::bessel_traits<T, T, policies::policy<> >::result_type cyl_neumann_zero(T v, int m);
|
Chris@16
|
715
|
Chris@16
|
716 template <class T, class OutputIterator>
|
Chris@16
|
717 OutputIterator cyl_neumann_zero(T v,
|
Chris@16
|
718 int start_index,
|
Chris@16
|
719 unsigned number_of_zeros,
|
Chris@16
|
720 OutputIterator out_it);
|
Chris@16
|
721
|
Chris@16
|
722 template <class T, class OutputIterator, class Policy>
|
Chris@16
|
723 OutputIterator cyl_neumann_zero(T v,
|
Chris@16
|
724 int start_index,
|
Chris@16
|
725 unsigned number_of_zeros,
|
Chris@16
|
726 OutputIterator out_it,
|
Chris@16
|
727 const Policy&);
|
Chris@16
|
728
|
Chris@16
|
729 template <class T1, class T2>
|
Chris@16
|
730 std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_1(T1 v, T2 x);
|
Chris@16
|
731
|
Chris@16
|
732 template <class T1, class T2, class Policy>
|
Chris@16
|
733 std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_1(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
734
|
Chris@16
|
735 template <class T1, class T2, class Policy>
|
Chris@16
|
736 std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> cyl_hankel_2(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
737
|
Chris@16
|
738 template <class T1, class T2>
|
Chris@16
|
739 std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> cyl_hankel_2(T1 v, T2 x);
|
Chris@16
|
740
|
Chris@16
|
741 template <class T1, class T2, class Policy>
|
Chris@16
|
742 std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_1(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
743
|
Chris@16
|
744 template <class T1, class T2>
|
Chris@16
|
745 std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_1(T1 v, T2 x);
|
Chris@16
|
746
|
Chris@16
|
747 template <class T1, class T2, class Policy>
|
Chris@16
|
748 std::complex<typename detail::bessel_traits<T1, T2, Policy>::result_type> sph_hankel_2(T1 v, T2 x, const Policy& pol);
|
Chris@16
|
749
|
Chris@16
|
750 template <class T1, class T2>
|
Chris@16
|
751 std::complex<typename detail::bessel_traits<T1, T2, policies::policy<> >::result_type> sph_hankel_2(T1 v, T2 x);
|
Chris@16
|
752
|
Chris@16
|
753 template <class T, class Policy>
|
Chris@16
|
754 typename tools::promote_args<T>::type airy_ai(T x, const Policy&);
|
Chris@16
|
755
|
Chris@16
|
756 template <class T>
|
Chris@16
|
757 typename tools::promote_args<T>::type airy_ai(T x);
|
Chris@16
|
758
|
Chris@16
|
759 template <class T, class Policy>
|
Chris@16
|
760 typename tools::promote_args<T>::type airy_bi(T x, const Policy&);
|
Chris@16
|
761
|
Chris@16
|
762 template <class T>
|
Chris@16
|
763 typename tools::promote_args<T>::type airy_bi(T x);
|
Chris@16
|
764
|
Chris@16
|
765 template <class T, class Policy>
|
Chris@16
|
766 typename tools::promote_args<T>::type airy_ai_prime(T x, const Policy&);
|
Chris@16
|
767
|
Chris@16
|
768 template <class T>
|
Chris@16
|
769 typename tools::promote_args<T>::type airy_ai_prime(T x);
|
Chris@16
|
770
|
Chris@16
|
771 template <class T, class Policy>
|
Chris@16
|
772 typename tools::promote_args<T>::type airy_bi_prime(T x, const Policy&);
|
Chris@16
|
773
|
Chris@16
|
774 template <class T>
|
Chris@16
|
775 typename tools::promote_args<T>::type airy_bi_prime(T x);
|
Chris@16
|
776
|
Chris@16
|
777 template <class T>
|
Chris@101
|
778 T airy_ai_zero(int m);
|
Chris@16
|
779 template <class T, class Policy>
|
Chris@101
|
780 T airy_ai_zero(int m, const Policy&);
|
Chris@16
|
781
|
Chris@16
|
782 template <class OutputIterator>
|
Chris@16
|
783 OutputIterator airy_ai_zero(
|
Chris@101
|
784 int start_index,
|
Chris@16
|
785 unsigned number_of_zeros,
|
Chris@16
|
786 OutputIterator out_it);
|
Chris@16
|
787 template <class OutputIterator, class Policy>
|
Chris@16
|
788 OutputIterator airy_ai_zero(
|
Chris@101
|
789 int start_index,
|
Chris@16
|
790 unsigned number_of_zeros,
|
Chris@16
|
791 OutputIterator out_it,
|
Chris@16
|
792 const Policy&);
|
Chris@16
|
793
|
Chris@16
|
794 template <class T>
|
Chris@101
|
795 T airy_bi_zero(int m);
|
Chris@16
|
796 template <class T, class Policy>
|
Chris@101
|
797 T airy_bi_zero(int m, const Policy&);
|
Chris@16
|
798
|
Chris@16
|
799 template <class OutputIterator>
|
Chris@16
|
800 OutputIterator airy_bi_zero(
|
Chris@101
|
801 int start_index,
|
Chris@16
|
802 unsigned number_of_zeros,
|
Chris@16
|
803 OutputIterator out_it);
|
Chris@16
|
804 template <class OutputIterator, class Policy>
|
Chris@16
|
805 OutputIterator airy_bi_zero(
|
Chris@101
|
806 int start_index,
|
Chris@16
|
807 unsigned number_of_zeros,
|
Chris@16
|
808 OutputIterator out_it,
|
Chris@16
|
809 const Policy&);
|
Chris@16
|
810
|
Chris@16
|
811 template <class T, class Policy>
|
Chris@16
|
812 typename tools::promote_args<T>::type sin_pi(T x, const Policy&);
|
Chris@16
|
813
|
Chris@16
|
814 template <class T>
|
Chris@16
|
815 typename tools::promote_args<T>::type sin_pi(T x);
|
Chris@16
|
816
|
Chris@16
|
817 template <class T, class Policy>
|
Chris@16
|
818 typename tools::promote_args<T>::type cos_pi(T x, const Policy&);
|
Chris@16
|
819
|
Chris@16
|
820 template <class T>
|
Chris@16
|
821 typename tools::promote_args<T>::type cos_pi(T x);
|
Chris@16
|
822
|
Chris@16
|
823 template <class T>
|
Chris@16
|
824 int fpclassify BOOST_NO_MACRO_EXPAND(T t);
|
Chris@16
|
825
|
Chris@16
|
826 template <class T>
|
Chris@16
|
827 bool isfinite BOOST_NO_MACRO_EXPAND(T z);
|
Chris@16
|
828
|
Chris@16
|
829 template <class T>
|
Chris@16
|
830 bool isinf BOOST_NO_MACRO_EXPAND(T t);
|
Chris@16
|
831
|
Chris@16
|
832 template <class T>
|
Chris@16
|
833 bool isnan BOOST_NO_MACRO_EXPAND(T t);
|
Chris@16
|
834
|
Chris@16
|
835 template <class T>
|
Chris@16
|
836 bool isnormal BOOST_NO_MACRO_EXPAND(T t);
|
Chris@16
|
837
|
Chris@16
|
838 template<class T>
|
Chris@16
|
839 int signbit BOOST_NO_MACRO_EXPAND(T x);
|
Chris@16
|
840
|
Chris@16
|
841 template <class T>
|
Chris@16
|
842 int sign BOOST_NO_MACRO_EXPAND(const T& z);
|
Chris@16
|
843
|
Chris@16
|
844 template <class T, class U>
|
Chris@16
|
845 typename tools::promote_args_permissive<T, U>::type copysign BOOST_NO_MACRO_EXPAND(const T& x, const U& y);
|
Chris@16
|
846
|
Chris@16
|
847 template <class T>
|
Chris@16
|
848 typename tools::promote_args_permissive<T>::type changesign BOOST_NO_MACRO_EXPAND(const T& z);
|
Chris@16
|
849
|
Chris@16
|
850 // Exponential integrals:
|
Chris@16
|
851 namespace detail{
|
Chris@16
|
852
|
Chris@16
|
853 template <class T, class U>
|
Chris@16
|
854 struct expint_result
|
Chris@16
|
855 {
|
Chris@16
|
856 typedef typename mpl::if_<
|
Chris@16
|
857 policies::is_policy<U>,
|
Chris@16
|
858 typename tools::promote_args<T>::type,
|
Chris@16
|
859 typename tools::promote_args<U>::type
|
Chris@16
|
860 >::type type;
|
Chris@16
|
861 };
|
Chris@16
|
862
|
Chris@16
|
863 } // namespace detail
|
Chris@16
|
864
|
Chris@16
|
865 template <class T, class Policy>
|
Chris@16
|
866 typename tools::promote_args<T>::type expint(unsigned n, T z, const Policy&);
|
Chris@16
|
867
|
Chris@16
|
868 template <class T, class U>
|
Chris@16
|
869 typename detail::expint_result<T, U>::type expint(T const z, U const u);
|
Chris@16
|
870
|
Chris@16
|
871 template <class T>
|
Chris@16
|
872 typename tools::promote_args<T>::type expint(T z);
|
Chris@16
|
873
|
Chris@16
|
874 // Zeta:
|
Chris@16
|
875 template <class T, class Policy>
|
Chris@16
|
876 typename tools::promote_args<T>::type zeta(T s, const Policy&);
|
Chris@16
|
877
|
Chris@16
|
878 // Owen's T function:
|
Chris@16
|
879 template <class T1, class T2, class Policy>
|
Chris@16
|
880 typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a, const Policy& pol);
|
Chris@16
|
881
|
Chris@16
|
882 template <class T1, class T2>
|
Chris@16
|
883 typename tools::promote_args<T1, T2>::type owens_t(T1 h, T2 a);
|
Chris@16
|
884
|
Chris@16
|
885 // Jacobi Functions:
|
Chris@16
|
886 template <class T, class U, class V, class Policy>
|
Chris@16
|
887 typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&);
|
Chris@16
|
888
|
Chris@16
|
889 template <class T, class U, class V>
|
Chris@16
|
890 typename tools::promote_args<T, U, V>::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0);
|
Chris@16
|
891
|
Chris@16
|
892 template <class U, class T, class Policy>
|
Chris@16
|
893 typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta, const Policy& pol);
|
Chris@16
|
894
|
Chris@16
|
895 template <class U, class T>
|
Chris@16
|
896 typename tools::promote_args<T, U>::type jacobi_sn(U k, T theta);
|
Chris@16
|
897
|
Chris@16
|
898 template <class T, class U, class Policy>
|
Chris@16
|
899 typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta, const Policy& pol);
|
Chris@16
|
900
|
Chris@16
|
901 template <class T, class U>
|
Chris@16
|
902 typename tools::promote_args<T, U>::type jacobi_cn(T k, U theta);
|
Chris@16
|
903
|
Chris@16
|
904 template <class T, class U, class Policy>
|
Chris@16
|
905 typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta, const Policy& pol);
|
Chris@16
|
906
|
Chris@16
|
907 template <class T, class U>
|
Chris@16
|
908 typename tools::promote_args<T, U>::type jacobi_dn(T k, U theta);
|
Chris@16
|
909
|
Chris@16
|
910 template <class T, class U, class Policy>
|
Chris@16
|
911 typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta, const Policy& pol);
|
Chris@16
|
912
|
Chris@16
|
913 template <class T, class U>
|
Chris@16
|
914 typename tools::promote_args<T, U>::type jacobi_cd(T k, U theta);
|
Chris@16
|
915
|
Chris@16
|
916 template <class T, class U, class Policy>
|
Chris@16
|
917 typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta, const Policy& pol);
|
Chris@16
|
918
|
Chris@16
|
919 template <class T, class U>
|
Chris@16
|
920 typename tools::promote_args<T, U>::type jacobi_dc(T k, U theta);
|
Chris@16
|
921
|
Chris@16
|
922 template <class T, class U, class Policy>
|
Chris@16
|
923 typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta, const Policy& pol);
|
Chris@16
|
924
|
Chris@16
|
925 template <class T, class U>
|
Chris@16
|
926 typename tools::promote_args<T, U>::type jacobi_ns(T k, U theta);
|
Chris@16
|
927
|
Chris@16
|
928 template <class T, class U, class Policy>
|
Chris@16
|
929 typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta, const Policy& pol);
|
Chris@16
|
930
|
Chris@16
|
931 template <class T, class U>
|
Chris@16
|
932 typename tools::promote_args<T, U>::type jacobi_sd(T k, U theta);
|
Chris@16
|
933
|
Chris@16
|
934 template <class T, class U, class Policy>
|
Chris@16
|
935 typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta, const Policy& pol);
|
Chris@16
|
936
|
Chris@16
|
937 template <class T, class U>
|
Chris@16
|
938 typename tools::promote_args<T, U>::type jacobi_ds(T k, U theta);
|
Chris@16
|
939
|
Chris@16
|
940 template <class T, class U, class Policy>
|
Chris@16
|
941 typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta, const Policy& pol);
|
Chris@16
|
942
|
Chris@16
|
943 template <class T, class U>
|
Chris@16
|
944 typename tools::promote_args<T, U>::type jacobi_nc(T k, U theta);
|
Chris@16
|
945
|
Chris@16
|
946 template <class T, class U, class Policy>
|
Chris@16
|
947 typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta, const Policy& pol);
|
Chris@16
|
948
|
Chris@16
|
949 template <class T, class U>
|
Chris@16
|
950 typename tools::promote_args<T, U>::type jacobi_nd(T k, U theta);
|
Chris@16
|
951
|
Chris@16
|
952 template <class T, class U, class Policy>
|
Chris@16
|
953 typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta, const Policy& pol);
|
Chris@16
|
954
|
Chris@16
|
955 template <class T, class U>
|
Chris@16
|
956 typename tools::promote_args<T, U>::type jacobi_sc(T k, U theta);
|
Chris@16
|
957
|
Chris@16
|
958 template <class T, class U, class Policy>
|
Chris@16
|
959 typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta, const Policy& pol);
|
Chris@16
|
960
|
Chris@16
|
961 template <class T, class U>
|
Chris@16
|
962 typename tools::promote_args<T, U>::type jacobi_cs(T k, U theta);
|
Chris@16
|
963
|
Chris@16
|
964
|
Chris@16
|
965 template <class T>
|
Chris@16
|
966 typename tools::promote_args<T>::type zeta(T s);
|
Chris@16
|
967
|
Chris@16
|
968 // pow:
|
Chris@16
|
969 template <int N, typename T, class Policy>
|
Chris@16
|
970 typename tools::promote_args<T>::type pow(T base, const Policy& policy);
|
Chris@16
|
971
|
Chris@16
|
972 template <int N, typename T>
|
Chris@16
|
973 typename tools::promote_args<T>::type pow(T base);
|
Chris@16
|
974
|
Chris@16
|
975 // next:
|
Chris@16
|
976 template <class T, class U, class Policy>
|
Chris@16
|
977 typename tools::promote_args<T, U>::type nextafter(const T&, const U&, const Policy&);
|
Chris@16
|
978 template <class T, class U>
|
Chris@16
|
979 typename tools::promote_args<T, U>::type nextafter(const T&, const U&);
|
Chris@16
|
980 template <class T, class Policy>
|
Chris@16
|
981 typename tools::promote_args<T>::type float_next(const T&, const Policy&);
|
Chris@16
|
982 template <class T>
|
Chris@16
|
983 typename tools::promote_args<T>::type float_next(const T&);
|
Chris@16
|
984 template <class T, class Policy>
|
Chris@16
|
985 typename tools::promote_args<T>::type float_prior(const T&, const Policy&);
|
Chris@16
|
986 template <class T>
|
Chris@16
|
987 typename tools::promote_args<T>::type float_prior(const T&);
|
Chris@16
|
988 template <class T, class U, class Policy>
|
Chris@16
|
989 typename tools::promote_args<T, U>::type float_distance(const T&, const U&, const Policy&);
|
Chris@16
|
990 template <class T, class U>
|
Chris@16
|
991 typename tools::promote_args<T, U>::type float_distance(const T&, const U&);
|
Chris@16
|
992 template <class T, class Policy>
|
Chris@16
|
993 typename tools::promote_args<T>::type float_advance(T val, int distance, const Policy& pol);
|
Chris@16
|
994 template <class T>
|
Chris@16
|
995 typename tools::promote_args<T>::type float_advance(const T& val, int distance);
|
Chris@16
|
996
|
Chris@101
|
997 template<class T>
|
Chris@101
|
998 T unchecked_bernoulli_b2n(const std::size_t n);
|
Chris@101
|
999 template <class T, class Policy>
|
Chris@101
|
1000 T bernoulli_b2n(const int i, const Policy &pol);
|
Chris@101
|
1001 template <class T>
|
Chris@101
|
1002 T bernoulli_b2n(const int i);
|
Chris@101
|
1003 template <class T, class OutputIterator, class Policy>
|
Chris@101
|
1004 OutputIterator bernoulli_b2n(const int start_index,
|
Chris@101
|
1005 const unsigned number_of_bernoullis_b2n,
|
Chris@101
|
1006 OutputIterator out_it,
|
Chris@101
|
1007 const Policy& pol);
|
Chris@101
|
1008 template <class T, class OutputIterator>
|
Chris@101
|
1009 OutputIterator bernoulli_b2n(const int start_index,
|
Chris@101
|
1010 const unsigned number_of_bernoullis_b2n,
|
Chris@101
|
1011 OutputIterator out_it);
|
Chris@101
|
1012 template <class T, class Policy>
|
Chris@101
|
1013 T tangent_t2n(const int i, const Policy &pol);
|
Chris@101
|
1014 template <class T>
|
Chris@101
|
1015 T tangent_t2n(const int i);
|
Chris@101
|
1016 template <class T, class OutputIterator, class Policy>
|
Chris@101
|
1017 OutputIterator tangent_t2n(const int start_index,
|
Chris@101
|
1018 const unsigned number_of_bernoullis_b2n,
|
Chris@101
|
1019 OutputIterator out_it,
|
Chris@101
|
1020 const Policy& pol);
|
Chris@101
|
1021 template <class T, class OutputIterator>
|
Chris@101
|
1022 OutputIterator tangent_t2n(const int start_index,
|
Chris@101
|
1023 const unsigned number_of_bernoullis_b2n,
|
Chris@101
|
1024 OutputIterator out_it);
|
Chris@101
|
1025
|
Chris@16
|
1026 } // namespace math
|
Chris@16
|
1027 } // namespace boost
|
Chris@16
|
1028
|
Chris@16
|
1029 #ifdef BOOST_HAS_LONG_LONG
|
Chris@16
|
1030 #define BOOST_MATH_DETAIL_LL_FUNC(Policy)\
|
Chris@16
|
1031 \
|
Chris@16
|
1032 template <class T>\
|
Chris@16
|
1033 inline T modf(const T& v, boost::long_long_type* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
Chris@16
|
1034 \
|
Chris@16
|
1035 template <class T>\
|
Chris@16
|
1036 inline boost::long_long_type lltrunc(const T& v){ using boost::math::lltrunc; return lltrunc(v, Policy()); }\
|
Chris@16
|
1037 \
|
Chris@16
|
1038 template <class T>\
|
Chris@16
|
1039 inline boost::long_long_type llround(const T& v){ using boost::math::llround; return llround(v, Policy()); }\
|
Chris@16
|
1040
|
Chris@16
|
1041 #else
|
Chris@16
|
1042 #define BOOST_MATH_DETAIL_LL_FUNC(Policy)
|
Chris@16
|
1043 #endif
|
Chris@16
|
1044
|
Chris@16
|
1045 #define BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy)\
|
Chris@16
|
1046 \
|
Chris@16
|
1047 BOOST_MATH_DETAIL_LL_FUNC(Policy)\
|
Chris@16
|
1048 \
|
Chris@16
|
1049 template <class RT1, class RT2>\
|
Chris@16
|
1050 inline typename boost::math::tools::promote_args<RT1, RT2>::type \
|
Chris@16
|
1051 beta(RT1 a, RT2 b) { return ::boost::math::beta(a, b, Policy()); }\
|
Chris@16
|
1052 \
|
Chris@16
|
1053 template <class RT1, class RT2, class A>\
|
Chris@16
|
1054 inline typename boost::math::tools::promote_args<RT1, RT2, A>::type \
|
Chris@16
|
1055 beta(RT1 a, RT2 b, A x){ return ::boost::math::beta(a, b, x, Policy()); }\
|
Chris@16
|
1056 \
|
Chris@16
|
1057 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1058 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1059 betac(RT1 a, RT2 b, RT3 x) { return ::boost::math::betac(a, b, x, Policy()); }\
|
Chris@16
|
1060 \
|
Chris@16
|
1061 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1062 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1063 ibeta(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta(a, b, x, Policy()); }\
|
Chris@16
|
1064 \
|
Chris@16
|
1065 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1066 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1067 ibetac(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibetac(a, b, x, Policy()); }\
|
Chris@16
|
1068 \
|
Chris@16
|
1069 template <class T1, class T2, class T3, class T4>\
|
Chris@16
|
1070 inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
|
Chris@16
|
1071 ibeta_inv(T1 a, T2 b, T3 p, T4* py){ return ::boost::math::ibeta_inv(a, b, p, py, Policy()); }\
|
Chris@16
|
1072 \
|
Chris@16
|
1073 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1074 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1075 ibeta_inv(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inv(a, b, p, Policy()); }\
|
Chris@16
|
1076 \
|
Chris@16
|
1077 template <class T1, class T2, class T3, class T4>\
|
Chris@16
|
1078 inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
|
Chris@16
|
1079 ibetac_inv(T1 a, T2 b, T3 q, T4* py){ return ::boost::math::ibetac_inv(a, b, q, py, Policy()); }\
|
Chris@16
|
1080 \
|
Chris@16
|
1081 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1082 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1083 ibeta_inva(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_inva(a, b, p, Policy()); }\
|
Chris@16
|
1084 \
|
Chris@16
|
1085 template <class T1, class T2, class T3>\
|
Chris@16
|
1086 inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
Chris@16
|
1087 ibetac_inva(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_inva(a, b, q, Policy()); }\
|
Chris@16
|
1088 \
|
Chris@16
|
1089 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1090 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1091 ibeta_invb(RT1 a, RT2 b, RT3 p){ return ::boost::math::ibeta_invb(a, b, p, Policy()); }\
|
Chris@16
|
1092 \
|
Chris@16
|
1093 template <class T1, class T2, class T3>\
|
Chris@16
|
1094 inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
Chris@16
|
1095 ibetac_invb(T1 a, T2 b, T3 q){ return ::boost::math::ibetac_invb(a, b, q, Policy()); }\
|
Chris@16
|
1096 \
|
Chris@16
|
1097 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1098 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1099 ibetac_inv(RT1 a, RT2 b, RT3 q){ return ::boost::math::ibetac_inv(a, b, q, Policy()); }\
|
Chris@16
|
1100 \
|
Chris@16
|
1101 template <class RT1, class RT2, class RT3>\
|
Chris@16
|
1102 inline typename boost::math::tools::promote_args<RT1, RT2, RT3>::type \
|
Chris@16
|
1103 ibeta_derivative(RT1 a, RT2 b, RT3 x){ return ::boost::math::ibeta_derivative(a, b, x, Policy()); }\
|
Chris@16
|
1104 \
|
Chris@101
|
1105 template <class T> T binomial_coefficient(unsigned n, unsigned k){ return ::boost::math::binomial_coefficient<T, Policy>(n, k, Policy()); }\
|
Chris@101
|
1106 \
|
Chris@16
|
1107 template <class RT>\
|
Chris@16
|
1108 inline typename boost::math::tools::promote_args<RT>::type erf(RT z) { return ::boost::math::erf(z, Policy()); }\
|
Chris@16
|
1109 \
|
Chris@16
|
1110 template <class RT>\
|
Chris@16
|
1111 inline typename boost::math::tools::promote_args<RT>::type erfc(RT z){ return ::boost::math::erfc(z, Policy()); }\
|
Chris@16
|
1112 \
|
Chris@16
|
1113 template <class RT>\
|
Chris@16
|
1114 inline typename boost::math::tools::promote_args<RT>::type erf_inv(RT z) { return ::boost::math::erf_inv(z, Policy()); }\
|
Chris@16
|
1115 \
|
Chris@16
|
1116 template <class RT>\
|
Chris@16
|
1117 inline typename boost::math::tools::promote_args<RT>::type erfc_inv(RT z){ return ::boost::math::erfc_inv(z, Policy()); }\
|
Chris@16
|
1118 \
|
Chris@16
|
1119 using boost::math::legendre_next;\
|
Chris@16
|
1120 \
|
Chris@16
|
1121 template <class T>\
|
Chris@16
|
1122 inline typename boost::math::tools::promote_args<T>::type \
|
Chris@16
|
1123 legendre_p(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\
|
Chris@16
|
1124 \
|
Chris@16
|
1125 template <class T>\
|
Chris@16
|
1126 inline typename boost::math::tools::promote_args<T>::type \
|
Chris@16
|
1127 legendre_q(unsigned l, T x){ return ::boost::math::legendre_q(l, x, Policy()); }\
|
Chris@16
|
1128 \
|
Chris@16
|
1129 using ::boost::math::legendre_next;\
|
Chris@16
|
1130 \
|
Chris@16
|
1131 template <class T>\
|
Chris@16
|
1132 inline typename boost::math::tools::promote_args<T>::type \
|
Chris@16
|
1133 legendre_p(int l, int m, T x){ return ::boost::math::legendre_p(l, m, x, Policy()); }\
|
Chris@16
|
1134 \
|
Chris@16
|
1135 using ::boost::math::laguerre_next;\
|
Chris@16
|
1136 \
|
Chris@16
|
1137 template <class T>\
|
Chris@16
|
1138 inline typename boost::math::tools::promote_args<T>::type \
|
Chris@16
|
1139 laguerre(unsigned n, T x){ return ::boost::math::laguerre(n, x, Policy()); }\
|
Chris@16
|
1140 \
|
Chris@16
|
1141 template <class T1, class T2>\
|
Chris@16
|
1142 inline typename boost::math::laguerre_result<T1, T2>::type \
|
Chris@16
|
1143 laguerre(unsigned n, T1 m, T2 x) { return ::boost::math::laguerre(n, m, x, Policy()); }\
|
Chris@16
|
1144 \
|
Chris@16
|
1145 template <class T>\
|
Chris@16
|
1146 inline typename boost::math::tools::promote_args<T>::type \
|
Chris@16
|
1147 hermite(unsigned n, T x){ return ::boost::math::hermite(n, x, Policy()); }\
|
Chris@16
|
1148 \
|
Chris@16
|
1149 using boost::math::hermite_next;\
|
Chris@16
|
1150 \
|
Chris@16
|
1151 template <class T1, class T2>\
|
Chris@16
|
1152 inline std::complex<typename boost::math::tools::promote_args<T1, T2>::type> \
|
Chris@16
|
1153 spherical_harmonic(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic(n, m, theta, phi, Policy()); }\
|
Chris@16
|
1154 \
|
Chris@16
|
1155 template <class T1, class T2>\
|
Chris@16
|
1156 inline typename boost::math::tools::promote_args<T1, T2>::type \
|
Chris@16
|
1157 spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi){ return ::boost::math::spherical_harmonic_r(n, m, theta, phi, Policy()); }\
|
Chris@16
|
1158 \
|
Chris@16
|
1159 template <class T1, class T2>\
|
Chris@16
|
1160 inline typename boost::math::tools::promote_args<T1, T2>::type \
|
Chris@16
|
1161 spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi){ return boost::math::spherical_harmonic_i(n, m, theta, phi, Policy()); }\
|
Chris@16
|
1162 \
|
Chris@16
|
1163 template <class T1, class T2, class Policy>\
|
Chris@16
|
1164 inline typename boost::math::tools::promote_args<T1, T2>::type \
|
Chris@16
|
1165 spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy& pol);\
|
Chris@16
|
1166 \
|
Chris@16
|
1167 template <class T1, class T2, class T3>\
|
Chris@16
|
1168 inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
Chris@16
|
1169 ellint_rf(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rf(x, y, z, Policy()); }\
|
Chris@16
|
1170 \
|
Chris@16
|
1171 template <class T1, class T2, class T3>\
|
Chris@16
|
1172 inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
Chris@16
|
1173 ellint_rd(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rd(x, y, z, Policy()); }\
|
Chris@16
|
1174 \
|
Chris@16
|
1175 template <class T1, class T2>\
|
Chris@16
|
1176 inline typename boost::math::tools::promote_args<T1, T2>::type \
|
Chris@16
|
1177 ellint_rc(T1 x, T2 y){ return ::boost::math::ellint_rc(x, y, Policy()); }\
|
Chris@16
|
1178 \
|
Chris@16
|
1179 template <class T1, class T2, class T3, class T4>\
|
Chris@16
|
1180 inline typename boost::math::tools::promote_args<T1, T2, T3, T4>::type \
|
Chris@16
|
1181 ellint_rj(T1 x, T2 y, T3 z, T4 p){ return boost::math::ellint_rj(x, y, z, p, Policy()); }\
|
Chris@16
|
1182 \
|
Chris@101
|
1183 template <class T1, class T2, class T3>\
|
Chris@101
|
1184 inline typename boost::math::tools::promote_args<T1, T2, T3>::type \
|
Chris@101
|
1185 ellint_rg(T1 x, T2 y, T3 z){ return ::boost::math::ellint_rg(x, y, z, Policy()); }\
|
Chris@101
|
1186 \
|
Chris@16
|
1187 template <typename T>\
|
Chris@16
|
1188 inline typename boost::math::tools::promote_args<T>::type ellint_2(T k){ return boost::math::ellint_2(k, Policy()); }\
|
Chris@16
|
1189 \
|
Chris@16
|
1190 template <class T1, class T2>\
|
Chris@16
|
1191 inline typename boost::math::tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi){ return boost::math::ellint_2(k, phi, Policy()); }\
|
Chris@16
|
1192 \
|
Chris@16
|
1193 template <typename T>\
|
Chris@101
|
1194 inline typename boost::math::tools::promote_args<T>::type ellint_d(T k){ return boost::math::ellint_d(k, Policy()); }\
|
Chris@101
|
1195 \
|
Chris@101
|
1196 template <class T1, class T2>\
|
Chris@101
|
1197 inline typename boost::math::tools::promote_args<T1, T2>::type ellint_d(T1 k, T2 phi){ return boost::math::ellint_d(k, phi, Policy()); }\
|
Chris@101
|
1198 \
|
Chris@101
|
1199 template <class T1, class T2>\
|
Chris@101
|
1200 inline typename boost::math::tools::promote_args<T1, T2>::type jacobi_zeta(T1 k, T2 phi){ return boost::math::jacobi_zeta(k, phi, Policy()); }\
|
Chris@101
|
1201 \
|
Chris@101
|
1202 template <class T1, class T2>\
|
Chris@101
|
1203 inline typename boost::math::tools::promote_args<T1, T2>::type heuman_lambda(T1 k, T2 phi){ return boost::math::heuman_lambda(k, phi, Policy()); }\
|
Chris@101
|
1204 \
|
Chris@101
|
1205 template <typename T>\
|
Chris@16
|
1206 inline typename boost::math::tools::promote_args<T>::type ellint_1(T k){ return boost::math::ellint_1(k, Policy()); }\
|
Chris@16
|
1207 \
|
Chris@16
|
1208 template <class T1, class T2>\
|
Chris@16
|
1209 inline typename boost::math::tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi){ return boost::math::ellint_1(k, phi, Policy()); }\
|
Chris@16
|
1210 \
|
Chris@16
|
1211 template <class T1, class T2, class T3>\
|
Chris@16
|
1212 inline typename boost::math::tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 v, T3 phi){ return boost::math::ellint_3(k, v, phi, Policy()); }\
|
Chris@16
|
1213 \
|
Chris@16
|
1214 template <class T1, class T2>\
|
Chris@16
|
1215 inline typename boost::math::tools::promote_args<T1, T2>::type ellint_3(T1 k, T2 v){ return boost::math::ellint_3(k, v, Policy()); }\
|
Chris@16
|
1216 \
|
Chris@16
|
1217 using boost::math::max_factorial;\
|
Chris@16
|
1218 template <class RT>\
|
Chris@16
|
1219 inline RT factorial(unsigned int i) { return boost::math::factorial<RT>(i, Policy()); }\
|
Chris@16
|
1220 using boost::math::unchecked_factorial;\
|
Chris@16
|
1221 template <class RT>\
|
Chris@16
|
1222 inline RT double_factorial(unsigned i){ return boost::math::double_factorial<RT>(i, Policy()); }\
|
Chris@16
|
1223 template <class RT>\
|
Chris@16
|
1224 inline typename boost::math::tools::promote_args<RT>::type falling_factorial(RT x, unsigned n){ return boost::math::falling_factorial(x, n, Policy()); }\
|
Chris@16
|
1225 template <class RT>\
|
Chris@16
|
1226 inline typename boost::math::tools::promote_args<RT>::type rising_factorial(RT x, unsigned n){ return boost::math::rising_factorial(x, n, Policy()); }\
|
Chris@16
|
1227 \
|
Chris@16
|
1228 template <class RT>\
|
Chris@16
|
1229 inline typename boost::math::tools::promote_args<RT>::type tgamma(RT z){ return boost::math::tgamma(z, Policy()); }\
|
Chris@16
|
1230 \
|
Chris@16
|
1231 template <class RT>\
|
Chris@16
|
1232 inline typename boost::math::tools::promote_args<RT>::type tgamma1pm1(RT z){ return boost::math::tgamma1pm1(z, Policy()); }\
|
Chris@16
|
1233 \
|
Chris@16
|
1234 template <class RT1, class RT2>\
|
Chris@16
|
1235 inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma(RT1 a, RT2 z){ return boost::math::tgamma(a, z, Policy()); }\
|
Chris@16
|
1236 \
|
Chris@16
|
1237 template <class RT>\
|
Chris@16
|
1238 inline typename boost::math::tools::promote_args<RT>::type lgamma(RT z, int* sign){ return boost::math::lgamma(z, sign, Policy()); }\
|
Chris@16
|
1239 \
|
Chris@16
|
1240 template <class RT>\
|
Chris@16
|
1241 inline typename boost::math::tools::promote_args<RT>::type lgamma(RT x){ return boost::math::lgamma(x, Policy()); }\
|
Chris@16
|
1242 \
|
Chris@16
|
1243 template <class RT1, class RT2>\
|
Chris@16
|
1244 inline typename boost::math::tools::promote_args<RT1, RT2>::type tgamma_lower(RT1 a, RT2 z){ return boost::math::tgamma_lower(a, z, Policy()); }\
|
Chris@16
|
1245 \
|
Chris@16
|
1246 template <class RT1, class RT2>\
|
Chris@16
|
1247 inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_q(RT1 a, RT2 z){ return boost::math::gamma_q(a, z, Policy()); }\
|
Chris@16
|
1248 \
|
Chris@16
|
1249 template <class RT1, class RT2>\
|
Chris@16
|
1250 inline typename boost::math::tools::promote_args<RT1, RT2>::type gamma_p(RT1 a, RT2 z){ return boost::math::gamma_p(a, z, Policy()); }\
|
Chris@16
|
1251 \
|
Chris@16
|
1252 template <class T1, class T2>\
|
Chris@16
|
1253 inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_delta_ratio(T1 z, T2 delta){ return boost::math::tgamma_delta_ratio(z, delta, Policy()); }\
|
Chris@16
|
1254 \
|
Chris@16
|
1255 template <class T1, class T2>\
|
Chris@16
|
1256 inline typename boost::math::tools::promote_args<T1, T2>::type tgamma_ratio(T1 a, T2 b) { return boost::math::tgamma_ratio(a, b, Policy()); }\
|
Chris@16
|
1257 \
|
Chris@16
|
1258 template <class T1, class T2>\
|
Chris@16
|
1259 inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_derivative(T1 a, T2 x){ return boost::math::gamma_p_derivative(a, x, Policy()); }\
|
Chris@16
|
1260 \
|
Chris@16
|
1261 template <class T1, class T2>\
|
Chris@16
|
1262 inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inv(T1 a, T2 p){ return boost::math::gamma_p_inv(a, p, Policy()); }\
|
Chris@16
|
1263 \
|
Chris@16
|
1264 template <class T1, class T2>\
|
Chris@16
|
1265 inline typename boost::math::tools::promote_args<T1, T2>::type gamma_p_inva(T1 a, T2 p){ return boost::math::gamma_p_inva(a, p, Policy()); }\
|
Chris@16
|
1266 \
|
Chris@16
|
1267 template <class T1, class T2>\
|
Chris@16
|
1268 inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inv(T1 a, T2 q){ return boost::math::gamma_q_inv(a, q, Policy()); }\
|
Chris@16
|
1269 \
|
Chris@16
|
1270 template <class T1, class T2>\
|
Chris@16
|
1271 inline typename boost::math::tools::promote_args<T1, T2>::type gamma_q_inva(T1 a, T2 q){ return boost::math::gamma_q_inva(a, q, Policy()); }\
|
Chris@16
|
1272 \
|
Chris@16
|
1273 template <class T>\
|
Chris@16
|
1274 inline typename boost::math::tools::promote_args<T>::type digamma(T x){ return boost::math::digamma(x, Policy()); }\
|
Chris@16
|
1275 \
|
Chris@101
|
1276 template <class T>\
|
Chris@101
|
1277 inline typename boost::math::tools::promote_args<T>::type trigamma(T x){ return boost::math::trigamma(x, Policy()); }\
|
Chris@101
|
1278 \
|
Chris@101
|
1279 template <class T>\
|
Chris@101
|
1280 inline typename boost::math::tools::promote_args<T>::type polygamma(int n, T x){ return boost::math::polygamma(n, x, Policy()); }\
|
Chris@101
|
1281 \
|
Chris@16
|
1282 template <class T1, class T2>\
|
Chris@16
|
1283 inline typename boost::math::tools::promote_args<T1, T2>::type \
|
Chris@16
|
1284 hypot(T1 x, T2 y){ return boost::math::hypot(x, y, Policy()); }\
|
Chris@16
|
1285 \
|
Chris@16
|
1286 template <class RT>\
|
Chris@16
|
1287 inline typename boost::math::tools::promote_args<RT>::type cbrt(RT z){ return boost::math::cbrt(z, Policy()); }\
|
Chris@16
|
1288 \
|
Chris@16
|
1289 template <class T>\
|
Chris@16
|
1290 inline typename boost::math::tools::promote_args<T>::type log1p(T x){ return boost::math::log1p(x, Policy()); }\
|
Chris@16
|
1291 \
|
Chris@16
|
1292 template <class T>\
|
Chris@16
|
1293 inline typename boost::math::tools::promote_args<T>::type log1pmx(T x){ return boost::math::log1pmx(x, Policy()); }\
|
Chris@16
|
1294 \
|
Chris@16
|
1295 template <class T>\
|
Chris@16
|
1296 inline typename boost::math::tools::promote_args<T>::type expm1(T x){ return boost::math::expm1(x, Policy()); }\
|
Chris@16
|
1297 \
|
Chris@16
|
1298 template <class T1, class T2>\
|
Chris@16
|
1299 inline typename boost::math::tools::promote_args<T1, T2>::type \
|
Chris@16
|
1300 powm1(const T1 a, const T2 z){ return boost::math::powm1(a, z, Policy()); }\
|
Chris@16
|
1301 \
|
Chris@16
|
1302 template <class T>\
|
Chris@16
|
1303 inline typename boost::math::tools::promote_args<T>::type sqrt1pm1(const T& val){ return boost::math::sqrt1pm1(val, Policy()); }\
|
Chris@16
|
1304 \
|
Chris@16
|
1305 template <class T>\
|
Chris@16
|
1306 inline typename boost::math::tools::promote_args<T>::type sinc_pi(T x){ return boost::math::sinc_pi(x, Policy()); }\
|
Chris@16
|
1307 \
|
Chris@16
|
1308 template <class T>\
|
Chris@16
|
1309 inline typename boost::math::tools::promote_args<T>::type sinhc_pi(T x){ return boost::math::sinhc_pi(x, Policy()); }\
|
Chris@16
|
1310 \
|
Chris@16
|
1311 template<typename T>\
|
Chris@16
|
1312 inline typename boost::math::tools::promote_args<T>::type asinh(const T x){ return boost::math::asinh(x, Policy()); }\
|
Chris@16
|
1313 \
|
Chris@16
|
1314 template<typename T>\
|
Chris@16
|
1315 inline typename boost::math::tools::promote_args<T>::type acosh(const T x){ return boost::math::acosh(x, Policy()); }\
|
Chris@16
|
1316 \
|
Chris@16
|
1317 template<typename T>\
|
Chris@16
|
1318 inline typename boost::math::tools::promote_args<T>::type atanh(const T x){ return boost::math::atanh(x, Policy()); }\
|
Chris@16
|
1319 \
|
Chris@16
|
1320 template <class T1, class T2>\
|
Chris@16
|
1321 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_j(T1 v, T2 x)\
|
Chris@16
|
1322 { return boost::math::cyl_bessel_j(v, x, Policy()); }\
|
Chris@16
|
1323 \
|
Chris@101
|
1324 template <class T1, class T2>\
|
Chris@101
|
1325 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type cyl_bessel_j_prime(T1 v, T2 x)\
|
Chris@101
|
1326 { return boost::math::cyl_bessel_j_prime(v, x, Policy()); }\
|
Chris@101
|
1327 \
|
Chris@16
|
1328 template <class T>\
|
Chris@16
|
1329 inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_bessel(unsigned v, T x)\
|
Chris@16
|
1330 { return boost::math::sph_bessel(v, x, Policy()); }\
|
Chris@16
|
1331 \
|
Chris@101
|
1332 template <class T>\
|
Chris@101
|
1333 inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type sph_bessel_prime(unsigned v, T x)\
|
Chris@101
|
1334 { return boost::math::sph_bessel_prime(v, x, Policy()); }\
|
Chris@101
|
1335 \
|
Chris@16
|
1336 template <class T1, class T2>\
|
Chris@16
|
1337 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
Chris@16
|
1338 cyl_bessel_i(T1 v, T2 x) { return boost::math::cyl_bessel_i(v, x, Policy()); }\
|
Chris@16
|
1339 \
|
Chris@16
|
1340 template <class T1, class T2>\
|
Chris@16
|
1341 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
Chris@101
|
1342 cyl_bessel_i_prime(T1 v, T2 x) { return boost::math::cyl_bessel_i_prime(v, x, Policy()); }\
|
Chris@101
|
1343 \
|
Chris@101
|
1344 template <class T1, class T2>\
|
Chris@101
|
1345 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
Chris@16
|
1346 cyl_bessel_k(T1 v, T2 x) { return boost::math::cyl_bessel_k(v, x, Policy()); }\
|
Chris@16
|
1347 \
|
Chris@16
|
1348 template <class T1, class T2>\
|
Chris@16
|
1349 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
Chris@101
|
1350 cyl_bessel_k_prime(T1 v, T2 x) { return boost::math::cyl_bessel_k_prime(v, x, Policy()); }\
|
Chris@101
|
1351 \
|
Chris@101
|
1352 template <class T1, class T2>\
|
Chris@101
|
1353 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
Chris@16
|
1354 cyl_neumann(T1 v, T2 x){ return boost::math::cyl_neumann(v, x, Policy()); }\
|
Chris@16
|
1355 \
|
Chris@101
|
1356 template <class T1, class T2>\
|
Chris@101
|
1357 inline typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type \
|
Chris@101
|
1358 cyl_neumann_prime(T1 v, T2 x){ return boost::math::cyl_neumann_prime(v, x, Policy()); }\
|
Chris@101
|
1359 \
|
Chris@16
|
1360 template <class T>\
|
Chris@16
|
1361 inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type \
|
Chris@16
|
1362 sph_neumann(unsigned v, T x){ return boost::math::sph_neumann(v, x, Policy()); }\
|
Chris@16
|
1363 \
|
Chris@16
|
1364 template <class T>\
|
Chris@101
|
1365 inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type \
|
Chris@101
|
1366 sph_neumann_prime(unsigned v, T x){ return boost::math::sph_neumann_prime(v, x, Policy()); }\
|
Chris@101
|
1367 \
|
Chris@101
|
1368 template <class T>\
|
Chris@16
|
1369 inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_bessel_j_zero(T v, int m)\
|
Chris@16
|
1370 { return boost::math::cyl_bessel_j_zero(v, m, Policy()); }\
|
Chris@16
|
1371 \
|
Chris@16
|
1372 template <class OutputIterator, class T>\
|
Chris@16
|
1373 inline void cyl_bessel_j_zero(T v,\
|
Chris@16
|
1374 int start_index,\
|
Chris@16
|
1375 unsigned number_of_zeros,\
|
Chris@16
|
1376 OutputIterator out_it)\
|
Chris@16
|
1377 { boost::math::cyl_bessel_j_zero(v, start_index, number_of_zeros, out_it, Policy()); }\
|
Chris@16
|
1378 \
|
Chris@16
|
1379 template <class T>\
|
Chris@16
|
1380 inline typename boost::math::detail::bessel_traits<T, T, Policy >::result_type cyl_neumann_zero(T v, int m)\
|
Chris@16
|
1381 { return boost::math::cyl_neumann_zero(v, m, Policy()); }\
|
Chris@16
|
1382 \
|
Chris@16
|
1383 template <class OutputIterator, class T>\
|
Chris@16
|
1384 inline void cyl_neumann_zero(T v,\
|
Chris@16
|
1385 int start_index,\
|
Chris@16
|
1386 unsigned number_of_zeros,\
|
Chris@16
|
1387 OutputIterator out_it)\
|
Chris@16
|
1388 { boost::math::cyl_neumann_zero(v, start_index, number_of_zeros, out_it, Policy()); }\
|
Chris@16
|
1389 \
|
Chris@16
|
1390 template <class T>\
|
Chris@16
|
1391 inline typename boost::math::tools::promote_args<T>::type sin_pi(T x){ return boost::math::sin_pi(x); }\
|
Chris@16
|
1392 \
|
Chris@16
|
1393 template <class T>\
|
Chris@16
|
1394 inline typename boost::math::tools::promote_args<T>::type cos_pi(T x){ return boost::math::cos_pi(x); }\
|
Chris@16
|
1395 \
|
Chris@16
|
1396 using boost::math::fpclassify;\
|
Chris@16
|
1397 using boost::math::isfinite;\
|
Chris@16
|
1398 using boost::math::isinf;\
|
Chris@16
|
1399 using boost::math::isnan;\
|
Chris@16
|
1400 using boost::math::isnormal;\
|
Chris@16
|
1401 using boost::math::signbit;\
|
Chris@16
|
1402 using boost::math::sign;\
|
Chris@16
|
1403 using boost::math::copysign;\
|
Chris@16
|
1404 using boost::math::changesign;\
|
Chris@16
|
1405 \
|
Chris@16
|
1406 template <class T, class U>\
|
Chris@16
|
1407 inline typename boost::math::tools::promote_args<T,U>::type expint(T const& z, U const& u)\
|
Chris@16
|
1408 { return boost::math::expint(z, u, Policy()); }\
|
Chris@16
|
1409 \
|
Chris@16
|
1410 template <class T>\
|
Chris@16
|
1411 inline typename boost::math::tools::promote_args<T>::type expint(T z){ return boost::math::expint(z, Policy()); }\
|
Chris@16
|
1412 \
|
Chris@16
|
1413 template <class T>\
|
Chris@16
|
1414 inline typename boost::math::tools::promote_args<T>::type zeta(T s){ return boost::math::zeta(s, Policy()); }\
|
Chris@16
|
1415 \
|
Chris@16
|
1416 template <class T>\
|
Chris@16
|
1417 inline T round(const T& v){ using boost::math::round; return round(v, Policy()); }\
|
Chris@16
|
1418 \
|
Chris@16
|
1419 template <class T>\
|
Chris@16
|
1420 inline int iround(const T& v){ using boost::math::iround; return iround(v, Policy()); }\
|
Chris@16
|
1421 \
|
Chris@16
|
1422 template <class T>\
|
Chris@16
|
1423 inline long lround(const T& v){ using boost::math::lround; return lround(v, Policy()); }\
|
Chris@16
|
1424 \
|
Chris@16
|
1425 template <class T>\
|
Chris@16
|
1426 inline T trunc(const T& v){ using boost::math::trunc; return trunc(v, Policy()); }\
|
Chris@16
|
1427 \
|
Chris@16
|
1428 template <class T>\
|
Chris@16
|
1429 inline int itrunc(const T& v){ using boost::math::itrunc; return itrunc(v, Policy()); }\
|
Chris@16
|
1430 \
|
Chris@16
|
1431 template <class T>\
|
Chris@16
|
1432 inline long ltrunc(const T& v){ using boost::math::ltrunc; return ltrunc(v, Policy()); }\
|
Chris@16
|
1433 \
|
Chris@16
|
1434 template <class T>\
|
Chris@16
|
1435 inline T modf(const T& v, T* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
Chris@16
|
1436 \
|
Chris@16
|
1437 template <class T>\
|
Chris@16
|
1438 inline T modf(const T& v, int* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
Chris@16
|
1439 \
|
Chris@16
|
1440 template <class T>\
|
Chris@16
|
1441 inline T modf(const T& v, long* ipart){ using boost::math::modf; return modf(v, ipart, Policy()); }\
|
Chris@16
|
1442 \
|
Chris@16
|
1443 template <int N, class T>\
|
Chris@16
|
1444 inline typename boost::math::tools::promote_args<T>::type pow(T v){ return boost::math::pow<N>(v, Policy()); }\
|
Chris@16
|
1445 \
|
Chris@16
|
1446 template <class T> T nextafter(const T& a, const T& b){ return boost::math::nextafter(a, b, Policy()); }\
|
Chris@16
|
1447 template <class T> T float_next(const T& a){ return boost::math::float_next(a, Policy()); }\
|
Chris@16
|
1448 template <class T> T float_prior(const T& a){ return boost::math::float_prior(a, Policy()); }\
|
Chris@16
|
1449 template <class T> T float_distance(const T& a, const T& b){ return boost::math::float_distance(a, b, Policy()); }\
|
Chris@16
|
1450 \
|
Chris@16
|
1451 template <class RT1, class RT2>\
|
Chris@16
|
1452 inline typename boost::math::tools::promote_args<RT1, RT2>::type owens_t(RT1 a, RT2 z){ return boost::math::owens_t(a, z, Policy()); }\
|
Chris@16
|
1453 \
|
Chris@16
|
1454 template <class T1, class T2>\
|
Chris@16
|
1455 inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> cyl_hankel_1(T1 v, T2 x)\
|
Chris@16
|
1456 { return boost::math::cyl_hankel_1(v, x, Policy()); }\
|
Chris@16
|
1457 \
|
Chris@16
|
1458 template <class T1, class T2>\
|
Chris@16
|
1459 inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> cyl_hankel_2(T1 v, T2 x)\
|
Chris@16
|
1460 { return boost::math::cyl_hankel_2(v, x, Policy()); }\
|
Chris@16
|
1461 \
|
Chris@16
|
1462 template <class T1, class T2>\
|
Chris@16
|
1463 inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> sph_hankel_1(T1 v, T2 x)\
|
Chris@16
|
1464 { return boost::math::sph_hankel_1(v, x, Policy()); }\
|
Chris@16
|
1465 \
|
Chris@16
|
1466 template <class T1, class T2>\
|
Chris@16
|
1467 inline std::complex<typename boost::math::detail::bessel_traits<T1, T2, Policy >::result_type> sph_hankel_2(T1 v, T2 x)\
|
Chris@16
|
1468 { return boost::math::sph_hankel_2(v, x, Policy()); }\
|
Chris@16
|
1469 \
|
Chris@16
|
1470 template <class T>\
|
Chris@16
|
1471 inline typename boost::math::tools::promote_args<T>::type jacobi_elliptic(T k, T theta, T* pcn, T* pdn)\
|
Chris@16
|
1472 { return boost::math::jacobi_elliptic(k, theta, pcn, pdn, Policy()); }\
|
Chris@16
|
1473 \
|
Chris@16
|
1474 template <class U, class T>\
|
Chris@16
|
1475 inline typename boost::math::tools::promote_args<T, U>::type jacobi_sn(U k, T theta)\
|
Chris@16
|
1476 { return boost::math::jacobi_sn(k, theta, Policy()); }\
|
Chris@16
|
1477 \
|
Chris@16
|
1478 template <class T, class U>\
|
Chris@16
|
1479 inline typename boost::math::tools::promote_args<T, U>::type jacobi_cn(T k, U theta)\
|
Chris@16
|
1480 { return boost::math::jacobi_cn(k, theta, Policy()); }\
|
Chris@16
|
1481 \
|
Chris@16
|
1482 template <class T, class U>\
|
Chris@16
|
1483 inline typename boost::math::tools::promote_args<T, U>::type jacobi_dn(T k, U theta)\
|
Chris@16
|
1484 { return boost::math::jacobi_dn(k, theta, Policy()); }\
|
Chris@16
|
1485 \
|
Chris@16
|
1486 template <class T, class U>\
|
Chris@16
|
1487 inline typename boost::math::tools::promote_args<T, U>::type jacobi_cd(T k, U theta)\
|
Chris@16
|
1488 { return boost::math::jacobi_cd(k, theta, Policy()); }\
|
Chris@16
|
1489 \
|
Chris@16
|
1490 template <class T, class U>\
|
Chris@16
|
1491 inline typename boost::math::tools::promote_args<T, U>::type jacobi_dc(T k, U theta)\
|
Chris@16
|
1492 { return boost::math::jacobi_dc(k, theta, Policy()); }\
|
Chris@16
|
1493 \
|
Chris@16
|
1494 template <class T, class U>\
|
Chris@16
|
1495 inline typename boost::math::tools::promote_args<T, U>::type jacobi_ns(T k, U theta)\
|
Chris@16
|
1496 { return boost::math::jacobi_ns(k, theta, Policy()); }\
|
Chris@16
|
1497 \
|
Chris@16
|
1498 template <class T, class U>\
|
Chris@16
|
1499 inline typename boost::math::tools::promote_args<T, U>::type jacobi_sd(T k, U theta)\
|
Chris@16
|
1500 { return boost::math::jacobi_sd(k, theta, Policy()); }\
|
Chris@16
|
1501 \
|
Chris@16
|
1502 template <class T, class U>\
|
Chris@16
|
1503 inline typename boost::math::tools::promote_args<T, U>::type jacobi_ds(T k, U theta)\
|
Chris@16
|
1504 { return boost::math::jacobi_ds(k, theta, Policy()); }\
|
Chris@16
|
1505 \
|
Chris@16
|
1506 template <class T, class U>\
|
Chris@16
|
1507 inline typename boost::math::tools::promote_args<T, U>::type jacobi_nc(T k, U theta)\
|
Chris@16
|
1508 { return boost::math::jacobi_nc(k, theta, Policy()); }\
|
Chris@16
|
1509 \
|
Chris@16
|
1510 template <class T, class U>\
|
Chris@16
|
1511 inline typename boost::math::tools::promote_args<T, U>::type jacobi_nd(T k, U theta)\
|
Chris@16
|
1512 { return boost::math::jacobi_nd(k, theta, Policy()); }\
|
Chris@16
|
1513 \
|
Chris@16
|
1514 template <class T, class U>\
|
Chris@16
|
1515 inline typename boost::math::tools::promote_args<T, U>::type jacobi_sc(T k, U theta)\
|
Chris@16
|
1516 { return boost::math::jacobi_sc(k, theta, Policy()); }\
|
Chris@16
|
1517 \
|
Chris@16
|
1518 template <class T, class U>\
|
Chris@16
|
1519 inline typename boost::math::tools::promote_args<T, U>::type jacobi_cs(T k, U theta)\
|
Chris@16
|
1520 { return boost::math::jacobi_cs(k, theta, Policy()); }\
|
Chris@16
|
1521 \
|
Chris@16
|
1522 template <class T>\
|
Chris@16
|
1523 inline typename boost::math::tools::promote_args<T>::type airy_ai(T x)\
|
Chris@16
|
1524 { return boost::math::airy_ai(x, Policy()); }\
|
Chris@16
|
1525 \
|
Chris@16
|
1526 template <class T>\
|
Chris@16
|
1527 inline typename boost::math::tools::promote_args<T>::type airy_bi(T x)\
|
Chris@16
|
1528 { return boost::math::airy_bi(x, Policy()); }\
|
Chris@16
|
1529 \
|
Chris@16
|
1530 template <class T>\
|
Chris@16
|
1531 inline typename boost::math::tools::promote_args<T>::type airy_ai_prime(T x)\
|
Chris@16
|
1532 { return boost::math::airy_ai_prime(x, Policy()); }\
|
Chris@16
|
1533 \
|
Chris@16
|
1534 template <class T>\
|
Chris@16
|
1535 inline typename boost::math::tools::promote_args<T>::type airy_bi_prime(T x)\
|
Chris@16
|
1536 { return boost::math::airy_bi_prime(x, Policy()); }\
|
Chris@16
|
1537 \
|
Chris@16
|
1538 template <class T>\
|
Chris@16
|
1539 inline T airy_ai_zero(int m)\
|
Chris@16
|
1540 { return boost::math::airy_ai_zero<T>(m, Policy()); }\
|
Chris@16
|
1541 template <class T, class OutputIterator>\
|
Chris@16
|
1542 OutputIterator airy_ai_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\
|
Chris@16
|
1543 { return boost::math::airy_ai_zero<T>(start_index, number_of_zeros, out_it, Policy()); }\
|
Chris@16
|
1544 \
|
Chris@16
|
1545 template <class T>\
|
Chris@16
|
1546 inline T airy_bi_zero(int m)\
|
Chris@16
|
1547 { return boost::math::airy_bi_zero<T>(m, Policy()); }\
|
Chris@16
|
1548 template <class T, class OutputIterator>\
|
Chris@16
|
1549 OutputIterator airy_bi_zero(int start_index, unsigned number_of_zeros, OutputIterator out_it)\
|
Chris@16
|
1550 { return boost::math::airy_bi_zero<T>(start_index, number_of_zeros, out_it, Policy()); }\
|
Chris@16
|
1551 \
|
Chris@101
|
1552 template <class T>\
|
Chris@101
|
1553 T bernoulli_b2n(const int i)\
|
Chris@101
|
1554 { return boost::math::bernoulli_b2n<T>(i, Policy()); }\
|
Chris@101
|
1555 template <class T, class OutputIterator>\
|
Chris@101
|
1556 OutputIterator bernoulli_b2n(int start_index, unsigned number_of_bernoullis_b2n, OutputIterator out_it)\
|
Chris@101
|
1557 { return boost::math::bernoulli_b2n<T>(start_index, number_of_bernoullis_b2n, out_it, Policy()); }\
|
Chris@101
|
1558 \
|
Chris@101
|
1559 template <class T>\
|
Chris@101
|
1560 T tangent_t2n(const int i)\
|
Chris@101
|
1561 { return boost::math::tangent_t2n<T>(i, Policy()); }\
|
Chris@101
|
1562 template <class T, class OutputIterator>\
|
Chris@101
|
1563 OutputIterator tangent_t2n(int start_index, unsigned number_of_bernoullis_b2n, OutputIterator out_it)\
|
Chris@101
|
1564 { return boost::math::tangent_t2n<T>(start_index, number_of_bernoullis_b2n, out_it, Policy()); }\
|
Chris@101
|
1565 \
|
Chris@16
|
1566
|
Chris@16
|
1567
|
Chris@16
|
1568
|
Chris@16
|
1569
|
Chris@16
|
1570
|
Chris@16
|
1571 #endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
Chris@16
|
1572
|
Chris@16
|
1573
|