Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
SpecFuncMathMore.h
Go to the documentation of this file.
1 // @(#)root/mathmore:$Id$
2 // Authors: L. Moneta, A. Zsenei 08/2005
3 
4 // Authors: Andras Zsenei & Lorenzo Moneta 06/2005
5 
6  /**********************************************************************
7  * *
8  * Copyright (c) 2004 ROOT Foundation, CERN/PH-SFT *
9  * *
10  * This library is free software; you can redistribute it and/or *
11  * modify it under the terms of the GNU General Public License *
12  * as published by the Free Software Foundation; either version 2 *
13  * of the License, or (at your option) any later version. *
14  * *
15  * This library is distributed in the hope that it will be useful, *
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
18  * General Public License for more details. *
19  * *
20  * You should have received a copy of the GNU General Public License *
21  * along with this library (see file COPYING); if not, write *
22  * to the Free Software Foundation, Inc., 59 Temple Place, Suite *
23  * 330, Boston, MA 02111-1307 USA, or contact the author. *
24  * *
25  **********************************************************************/
26 
27 /**
28 
29 Special mathematical functions.
30 The naming and numbering of the functions is taken from
31 <A HREF="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1687.pdf">
32 Matt Austern,
33 (Draft) Technical Report on Standard Library Extensions,
34 N1687=04-0127, September 10, 2004</A>
35 
36 @author Created by Andras Zsenei on Mon Nov 8 2004
37 
38 @defgroup SpecFunc Special functions
39 
40 */
41 
42 
43 
44 
45 
46 #ifndef ROOT_Math_SpecFuncMathMore
47 #define ROOT_Math_SpecFuncMathMore
48 
49 
50 
51 
52 namespace ROOT {
53 namespace Math {
54 
55  /** @name Special Functions from MathMore */
56 
57 
58  /**
59 
60 
61  Computes the generalized Laguerre polynomials for
62  \f$ n \geq 0, m > -1 \f$.
63  They are defined in terms of the confluent hypergeometric function.
64  For integer values of m they can be defined in terms of the Laguerre polynomials \f$L_n(x)\f$:
65 
66  \f[ L_{n}^{m}(x) = (-1)^{m} \frac{d^m}{dx^m} L_{n+m}(x) \f]
67 
68 
69  For detailed description see
70  <A HREF="http://mathworld.wolfram.com/LaguerrePolynomial.html">Mathworld</A>.
71  The implementation used is that of
72  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Laguerre-Functions.html">GSL</A>.
73 
74  This function is an extension of C++0x, also consistent in GSL,
75  Abramowitz and Stegun 1972 and MatheMathica that uses non-integer values for m.
76  C++0x calls for 'int m', more restrictive than necessary.
77  The definition for was incorrect in 'n1687.pdf', but fixed in
78  <A HREF="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">n1836.pdf</A>,
79  the most recent draft as of 2007-07-01
80 
81 
82  @ingroup SpecFunc
83 
84  */
85  // [5.2.1.1] associated Laguerre polynomials
86 
87  double assoc_laguerre(unsigned n, double m, double x);
88 
89 
90 
91 
92  /**
93 
94  Computes the associated Legendre polynomials.
95 
96  \f[ P_{l}^{m}(x) = (1-x^2)^{m/2} \frac{d^m}{dx^m} P_{l}(x) \f]
97 
98  with \f$m \geq 0\f$, \f$ l \geq m \f$ and \f$ |x|<1 \f$.
99  There are two sign conventions for associated Legendre polynomials.
100  As is the case with the above formula, some authors (e.g., Arfken
101  1985, pp. 668-669) omit the Condon-Shortley phase \f$(-1)^m\f$,
102  while others include it (e.g., Abramowitz and Stegun 1972).
103  One possible way to distinguish the two conventions is due to
104  Abramowitz and Stegun (1972, p. 332), who use the notation
105 
106  \f[ P_{lm} (x) = (-1)^m P_{l}^{m} (x)\f]
107 
108  to distinguish the two. For detailed description see
109  <A HREF="http://mathworld.wolfram.com/LegendrePolynomial.html">
110  Mathworld</A>. The implementation used is that of
111  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Associated-Legendre-Polynomials-and-Spherical-Harmonics.html">GSL</A>.
112 
113  The definition uses is the one of C++0x, \f$ P_{lm}\f$, while GSL and MatheMatica use the \f$P_{l}^{m}\f$ definition. Note that C++0x and GSL definitions agree instead for the normalized associated Legendre polynomial,
114  sph_legendre(l,m,theta).
115 
116  @ingroup SpecFunc
117 
118  */
119  // [5.2.1.2] associated Legendre functions
120 
121  double assoc_legendre(unsigned l, unsigned m, double x);
122 
123  // Shortcut for RooFit to call the gsl legendre functions without the branches in the above implementation.
124  namespace internal{
125  double legendre(unsigned l, unsigned m, double x);
126  }
127 
128 
129  /**
130 
131  Calculates the complete elliptic integral of the first kind.
132 
133  \f[ K(k) = F(k, \pi / 2) = \int_{0}^{\pi /2} \frac{d \theta}{\sqrt{1 - k^2 \sin^2{\theta}}} \f]
134 
135  with \f$0 \leq k^2 \leq 1\f$. For detailed description see
136  <A HREF="http://mathworld.wolfram.com/CompleteEllipticIntegraloftheFirstKind.html">
137  Mathworld</A>. The implementation used is that of
138  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC100">GSL</A>.
139 
140  @ingroup SpecFunc
141 
142  */
143  // [5.2.1.4] (complete) elliptic integral of the first kind
144 
145  double comp_ellint_1(double k);
146 
147 
148 
149 
150  /**
151 
152  Calculates the complete elliptic integral of the second kind.
153 
154  \f[ E(k) = E(k , \pi / 2) = \int_{0}^{\pi /2} \sqrt{1 - k^2 \sin^2{\theta}} d \theta \f]
155 
156  with \f$0 \leq k^2 \leq 1\f$. For detailed description see
157  <A HREF="http://mathworld.wolfram.com/CompleteEllipticIntegraloftheSecondKind.html">
158  Mathworld</A>. The implementation used is that of
159  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC100">GSL</A>.
160 
161  @ingroup SpecFunc
162 
163  */
164  // [5.2.1.5] (complete) elliptic integral of the second kind
165 
166  double comp_ellint_2(double k);
167 
168 
169 
170 
171  /**
172 
173  Calculates the complete elliptic integral of the third kind.
174 
175  \f[ \Pi (n, k, \pi / 2) = \int_{0}^{\pi /2} \frac{d \theta}{(1 - n \sin^2{\theta})\sqrt{1 - k^2 \sin^2{\theta}}} \f]
176 
177  with \f$0 \leq k^2 \leq 1\f$. There are two sign conventions
178  for elliptic integrals of the third kind. Some authors (Abramowitz
179  and Stegun,
180  <A HREF="http://mathworld.wolfram.com/EllipticIntegraloftheThirdKind.html">
181  Mathworld</A>,
182  <A HREF="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1687.pdf">
183  C++ standard proposal</A>) use the above formula, while others
184  (<A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC95">
185  GSL</A>, <A HREF="http://planetmath.org/encyclopedia/EllipticIntegralsAndJacobiEllipticFunctions.html">
186  Planetmath</A> and
187  <A HREF="https://cern-tex.web.cern.ch/cern-tex/shortwrupsdir/c346/top.html">
188  CERNLIB</A>) use the + sign in front of n in the denominator. In
189  order to be C++ compliant, the present library uses the former
190  convention. The implementation used is that of
191  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC101">GSL</A>.
192 
193  @ingroup SpecFunc
194 
195  */
196  // [5.2.1.6] (complete) elliptic integral of the third kind
197  double comp_ellint_3(double n, double k);
198 
199 
200 
201 
202  /**
203 
204  Calculates the confluent hypergeometric functions of the first kind.
205 
206  \f[ _{1}F_{1}(a;b;z) = \frac{\Gamma(b)}{\Gamma(a)} \sum_{n=0}^{\infty} \frac{\Gamma(a+n)}{\Gamma(b+n)} \frac{z^n}{n!} \f]
207 
208  For detailed description see
209  <A HREF="http://mathworld.wolfram.com/ConfluentHypergeometricFunctionoftheFirstKind.html">
210  Mathworld</A>. The implementation used is that of
211  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC125">GSL</A>.
212 
213  @ingroup SpecFunc
214 
215  */
216  // [5.2.1.7] confluent hypergeometric functions
217 
218  double conf_hyperg(double a, double b, double z);
219 
220 
221  /**
222 
223  Calculates the confluent hypergeometric functions of the second kind, known also as Kummer function of the second kind,
224  it is related to the confluent hypergeometric functions of the first kind.
225 
226  \f[ U(a,b,z) = \frac{ \pi}{ \sin{\pi b } } \left[ \frac{ _{1}F_{1}(a,b,z) } {\Gamma(a-b+1) }
227  - \frac{ z^{1-b} { _{1}F_{1}}(a-b+1,2-b,z)}{\Gamma(a)} \right] \f]
228 
229  For detailed description see
230  <A HREF="http://mathworld.wolfram.com/ConfluentHypergeometricFunctionoftheSecondKind.html">
231  Mathworld</A>. The implementation used is that of
232  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC125">GSL</A>.
233  This function is not part of the C++ standard proposal
234 
235  @ingroup SpecFunc
236 
237  */
238  // confluent hypergeometric functions of second type
239 
240  double conf_hypergU(double a, double b, double z);
241 
242 
243 
244  /**
245 
246  Calculates the modified Bessel function of the first kind
247  (also called regular modified (cylindrical) Bessel function).
248 
249  \f[ I_{\nu} (x) = i^{-\nu} J_{\nu}(ix) = \sum_{k=0}^{\infty} \frac{(\frac{1}{2}x)^{\nu + 2k}}{k! \Gamma(\nu + k + 1)} \f]
250 
251  for \f$x>0, \nu > 0\f$. For detailed description see
252  <A HREF="http://mathworld.wolfram.com/ModifiedBesselFunctionoftheFirstKind.html">
253  Mathworld</A>. The implementation used is that of
254  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC71">GSL</A>.
255 
256  @ingroup SpecFunc
257 
258  */
259  // [5.2.1.8] regular modified cylindrical Bessel functions
260 
261  double cyl_bessel_i(double nu, double x);
262 
263 
264 
265 
266  /**
267 
268  Calculates the (cylindrical) Bessel functions of the first kind (also
269  called regular (cylindrical) Bessel functions).
270 
271  \f[ J_{\nu} (x) = \sum_{k=0}^{\infty} \frac{(-1)^k(\frac{1}{2}x)^{\nu + 2k}}{k! \Gamma(\nu + k + 1)} \f]
272 
273  For detailed description see
274  <A HREF="http://mathworld.wolfram.com/BesselFunctionoftheFirstKind.html">
275  Mathworld</A>. The implementation used is that of
276  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC69">GSL</A>.
277 
278  @ingroup SpecFunc
279 
280  */
281  // [5.2.1.9] cylindrical Bessel functions (of the first kind)
282 
283  double cyl_bessel_j(double nu, double x);
284 
285 
286 
287 
288 
289  /**
290 
291  Calculates the modified Bessel functions of the second kind
292  (also called irregular modified (cylindrical) Bessel functions).
293 
294  \f[ K_{\nu} (x) = \frac{\pi}{2} i^{\nu + 1} (J_{\nu} (ix) + iN(ix)) = \left\{ \begin{array}{cl} \frac{\pi}{2} \frac{I_{-\nu}(x) - I_{\nu}(x)}{\sin{\nu \pi}} & \mbox{for non-integral $\nu$} \\ \frac{\pi}{2} \lim{\mu \to \nu} \frac{I_{-\mu}(x) - I_{\mu}(x)}{\sin{\mu \pi}}
295 & \mbox{for integral $\nu$} \end{array} \right. \f]
296 
297  for \f$x>0, \nu > 0\f$. For detailed description see
298  <A HREF="http://mathworld.wolfram.com/ModifiedBesselFunctionoftheSecondKind.html">
299  Mathworld</A>. The implementation used is that of
300  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC72">GSL</A>.
301 
302  @ingroup SpecFunc
303 
304  */
305  // [5.2.1.10] irregular modified cylindrical Bessel functions
306 
307  double cyl_bessel_k(double nu, double x);
308 
309 
310 
311 
312  /**
313 
314  Calculates the (cylindrical) Bessel functions of the second kind
315  (also called irregular (cylindrical) Bessel functions or
316  (cylindrical) Neumann functions).
317 
318  \f[ N_{\nu} (x) = Y_{\nu} (x) = \left\{ \begin{array}{cl} \frac{J_{\nu} \cos{\nu \pi}-J_{-\nu}(x)}{\sin{\nu \pi}} & \mbox{for non-integral $\nu$} \\ \lim{\mu \to \nu} \frac{J_{\mu} \cos{\mu \pi}-J_{-\mu}(x)}{\sin{\mu \pi}} & \mbox{for integral $\nu$} \end{array} \right. \f]
319 
320  For detailed description see
321  <A HREF="http://mathworld.wolfram.com/BesselFunctionoftheSecondKind.html">
322  Mathworld</A>. The implementation used is that of
323  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC70">GSL</A>.
324 
325  @ingroup SpecFunc
326 
327  */
328  // [5.2.1.11] cylindrical Neumann functions;
329  // cylindrical Bessel functions (of the second kind)
330 
331  double cyl_neumann(double nu, double x);
332 
333 
334 
335 
336  /**
337 
338  Calculates the incomplete elliptic integral of the first kind.
339 
340  \f[ F(k, \phi) = \int_{0}^{\phi} \frac{d \theta}{\sqrt{1 - k^2 \sin^2{\theta}}} \f]
341 
342  with \f$0 \leq k^2 \leq 1\f$. For detailed description see
343  <A HREF="http://mathworld.wolfram.com/EllipticIntegraloftheFirstKind.html">
344  Mathworld</A>. The implementation used is that of
345  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC101">GSL</A>.
346 
347  @param k
348  @param phi angle in radians
349 
350  @ingroup SpecFunc
351 
352  */
353  // [5.2.1.12] (incomplete) elliptic integral of the first kind
354  // phi in radians
355 
356  double ellint_1(double k, double phi);
357 
358 
359 
360 
361  /**
362 
363  Calculates the complete elliptic integral of the second kind.
364 
365  \f[ E(k , \phi) = \int_{0}^{\phi} \sqrt{1 - k^2 \sin^2{\theta}} d \theta \f]
366 
367  with \f$0 \leq k^2 \leq 1\f$. For detailed description see
368  <A HREF="http://mathworld.wolfram.com/EllipticIntegraloftheSecondKind.html">
369  Mathworld</A>. The implementation used is that of
370  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC101">GSL</A>.
371 
372  @param k
373  @param phi angle in radians
374 
375  @ingroup SpecFunc
376 
377  */
378  // [5.2.1.13] (incomplete) elliptic integral of the second kind
379  // phi in radians
380 
381  double ellint_2(double k, double phi);
382 
383 
384 
385 
386  /**
387 
388  Calculates the complete elliptic integral of the third kind.
389 
390  \f[ \Pi (n, k, \phi) = \int_{0}^{\phi} \frac{d \theta}{(1 - n \sin^2{\theta})\sqrt{1 - k^2 \sin^2{\theta}}} \f]
391 
392  with \f$0 \leq k^2 \leq 1\f$. There are two sign conventions
393  for elliptic integrals of the third kind. Some authors (Abramowitz
394  and Stegun,
395  <A HREF="http://mathworld.wolfram.com/EllipticIntegraloftheThirdKind.html">
396  Mathworld</A>,
397  <A HREF="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1687.pdf">
398  C++ standard proposal</A>) use the above formula, while others
399  (<A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC95">
400  GSL</A>, <A HREF="http://planetmath.org/encyclopedia/EllipticIntegralsAndJacobiEllipticFunctions.html">
401  Planetmath</A> and
402  <A HREF="https://cern-tex.web.cern.ch/cern-tex/shortwrupsdir/c346/top.html">
403  CERNLIB</A>) use the + sign in front of n in the denominator. In
404  order to be C++ compliant, the present library uses the former
405  convention. The implementation used is that of
406  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC101">GSL</A>.
407 
408  @param n
409  @param k
410  @param phi angle in radians
411 
412  @ingroup SpecFunc
413 
414  */
415  // [5.2.1.14] (incomplete) elliptic integral of the third kind
416  // phi in radians
417 
418  double ellint_3(double n, double k, double phi);
419 
420 
421 
422 
423  /**
424 
425  Calculates the exponential integral.
426 
427  \f[ Ei(x) = - \int_{-x}^{\infty} \frac{e^{-t}}{t} dt \f]
428 
429  For detailed description see
430  <A HREF="http://mathworld.wolfram.com/ExponentialIntegral.html">
431  Mathworld</A>. The implementation used is that of
432  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC115">GSL</A>.
433 
434  @ingroup SpecFunc
435 
436  */
437  // [5.2.1.15] exponential integral
438 
439  double expint(double x);
440  double expint_n(int n, double x);
441 
442 
443 
444  // [5.2.1.16] Hermite polynomials
445 
446  //double hermite(unsigned n, double x);
447 
448 
449 
450 
451 
452  /**
453 
454  Calculates Gauss' hypergeometric function.
455 
456  \f[ _{2}F_{1}(a,b;c;x) = \frac{\Gamma(c)}{\Gamma(a) \Gamma(b)} \sum_{n=0}^{\infty} \frac{\Gamma(a+n)\Gamma(b+n)}{\Gamma(c+n)} \frac{x^n}{n!} \f]
457 
458  For detailed description see
459  <A HREF="http://mathworld.wolfram.com/HypergeometricFunction.html">
460  Mathworld</A>. The implementation used is that of
461  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC125">GSL</A>.
462 
463  @ingroup SpecFunc
464 
465  */
466  // [5.2.1.17] hypergeometric functions
467 
468  double hyperg(double a, double b, double c, double x);
469 
470 
471 
472  /**
473 
474  Calculates the Laguerre polynomials
475 
476  \f[ P_{l}(x) = \frac{ e^x}{n!} \frac{d^n}{dx^n} (x^n - e^{-x}) \f]
477 
478  for \f$x \geq 0 \f$ in the Rodrigues representation.
479  They corresponds to the associated Laguerre polynomial of order m=0.
480  See Abramowitz and Stegun, (22.5.16)
481  For detailed description see
482  <A HREF="http://mathworld.wolfram.com/LaguerrePolynomial.html">
483  Mathworld</A>.
484  The are implemented using the associated Laguerre polynomial of order m=0.
485 
486  @ingroup SpecFunc
487 
488  */
489  // [5.2.1.18] Laguerre polynomials
490 
491  double laguerre(unsigned n, double x);
492 
493 
494  /**
495 
496  Calculates the Legendre polynomials.
497 
498  \f[ P_{l}(x) = \frac{1}{2^l l!} \frac{d^l}{dx^l} (x^2 - 1)^l \f]
499 
500  for \f$l \geq 0, |x|\leq1\f$ in the Rodrigues representation.
501  For detailed description see
502  <A HREF="http://mathworld.wolfram.com/LegendrePolynomial.html">
503  Mathworld</A>. The implementation used is that of
504  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC129">GSL</A>.
505 
506  @ingroup SpecFunc
507 
508  */
509  // [5.2.1.19] Legendre polynomials
510 
511  double legendre(unsigned l, double x);
512 
513 
514 
515 
516  /**
517 
518  Calculates the Riemann zeta function.
519 
520  \f[ \zeta (x) = \left\{ \begin{array}{cl} \sum_{k=1}^{\infty}k^{-x} & \mbox{for $x > 1$} \\ 2^x \pi^{x-1} \sin{(\frac{1}{2}\pi x)} \Gamma(1-x) \zeta (1-x) & \mbox{for $x < 1$} \end{array} \right. \f]
521 
522  For detailed description see
523  <A HREF="http://mathworld.wolfram.com/RiemannZetaFunction.html">
524  Mathworld</A>. The implementation used is that of
525  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC149">GSL</A>.
526 
527  CHECK WHETHER THE IMPLEMENTATION CALCULATES X<1
528 
529  @ingroup SpecFunc
530 
531  */
532  // [5.2.1.20] Riemann zeta function
533 
534  double riemann_zeta(double x);
535 
536 
537  /**
538 
539  Calculates the spherical Bessel functions of the first kind
540  (also called regular spherical Bessel functions).
541 
542  \f[ j_{n}(x) = \sqrt{\frac{\pi}{2x}} J_{n+1/2}(x) \f]
543 
544  For detailed description see
545  <A HREF="http://mathworld.wolfram.com/SphericalBesselFunctionoftheFirstKind.html">
546  Mathworld</A>. The implementation used is that of
547  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC73">GSL</A>.
548 
549  @ingroup SpecFunc
550 
551  */
552  // [5.2.1.21] spherical Bessel functions of the first kind
553 
554  double sph_bessel(unsigned n, double x);
555 
556 
557  /**
558 
559  Computes the spherical (normalized) associated Legendre polynomials,
560  or spherical harmonic without azimuthal dependence (\f$e^(im\phi)\f$).
561 
562  \f[ Y_l^m(theta,0) = \sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(cos \theta) \f]
563 
564  for \f$m \geq 0, l \geq m\f$,
565  where the Condon-Shortley phase \f$(-1)^m\f$ is included in P_l^m(x)
566  This function is consistent with both C++0x and GSL,
567  even though there is a discrepancy in where to include the phase.
568  There is no reference in Abramowitz and Stegun.
569 
570 
571  @ingroup SpecFunc
572 
573  */
574 
575  // [5.2.1.22] spherical associated Legendre functions
576 
577  double sph_legendre(unsigned l, unsigned m, double theta);
578 
579 
580  /**
581 
582  Calculates the spherical Bessel functions of the second kind
583  (also called irregular spherical Bessel functions or
584  spherical Neumann functions).
585 
586  \f[ n_n(x) = y_n(x) = \sqrt{\frac{\pi}{2x}} N_{n+1/2}(x) \f]
587 
588  For detailed description see
589  <A HREF="http://mathworld.wolfram.com/SphericalBesselFunctionoftheSecondKind.html">
590  Mathworld</A>. The implementation used is that of
591  <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_7.html#SEC74">GSL</A>.
592 
593  @ingroup SpecFunc
594 
595  */
596  // [5.2.1.23] spherical Neumann functions
597 
598  double sph_neumann(unsigned n, double x);
599 
600  /**
601 
602  Calculates the Airy function Ai
603 
604  \f[ Ai(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} \cos(xt + t^3/3) dt \f]
605 
606  For detailed description see
607  <A HREF="http://mathworld.wolfram.com/AiryFunctions.html">
608  Mathworld</A>
609  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
610  The implementation used is that of
611  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Airy-Functions.html">GSL</A>.
612 
613  @ingroup SpecFunc
614 
615  */
616  // Airy function Ai
617 
618  double airy_Ai(double x);
619 
620  /**
621 
622  Calculates the Airy function Bi
623 
624  \f[ Bi(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} [\exp(xt-t^3/3) + \cos(xt + t^3/3)] dt \f]
625 
626  For detailed description see
627  <A HREF="http://mathworld.wolfram.com/AiryFunctions.html">
628  Mathworld</A>
629  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
630  The implementation used is that of
631  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Airy-Functions.html">GSL</A>.
632 
633  @ingroup SpecFunc
634 
635  */
636  // Airy function Bi
637 
638  double airy_Bi(double x);
639 
640  /**
641 
642  Calculates the derivative of the Airy function Ai
643 
644  \f[ Ai(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} \cos(xt + t^3/3) dt \f]
645 
646  For detailed description see
647  <A HREF="http://mathworld.wolfram.com/AiryFunctions.html">
648  Mathworld</A>
649  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
650  The implementation used is that of
651  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Derivatives-of-Airy-Functions.html">GSL</A>.
652 
653  @ingroup SpecFunc
654 
655  */
656  // Derivative of the Airy function Ai
657 
658  double airy_Ai_deriv(double x);
659 
660  /**
661 
662  Calculates the derivative of the Airy function Bi
663 
664  \f[ Bi(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} [\exp(xt-t^3/3) + \cos(xt + t^3/3)] dt \f]
665 
666  For detailed description see
667  <A HREF="http://mathworld.wolfram.com/AiryFunctions.html">
668  Mathworld</A>
669  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
670  The implementation used is that of
671  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Derivatives-of-Airy-Functions.html">GSL</A>.
672 
673  @ingroup SpecFunc
674 
675  */
676  // Derivative of the Airy function Bi
677 
678  double airy_Bi_deriv(double x);
679 
680  /**
681 
682  Calculates the zeroes of the Airy function Ai
683 
684  \f[ Ai(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} \cos(xt + t^3/3) dt \f]
685 
686  For detailed description see
687  <A HREF="http://mathworld.wolfram.com/AiryFunctionZeros.html">
688  Mathworld</A>
689  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
690  The implementation used is that of
691  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Zeros-of-Airy-Functions.html">GSL</A>.
692 
693  @ingroup SpecFunc
694 
695  */
696  // s-th zero of the Airy function Ai
697 
698  double airy_zero_Ai(unsigned int s);
699 
700  /**
701 
702  Calculates the zeroes of the Airy function Bi
703 
704  \f[ Bi(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} [\exp(xt-t^3/3) + \cos(xt + t^3/3)] dt \f]
705 
706  For detailed description see
707  <A HREF="http://mathworld.wolfram.com/AiryFunctionZeros.html">
708  Mathworld</A>
709  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
710  The implementation used is that of
711  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Zeros-of-Airy-Functions.html">GSL</A>.
712 
713  @ingroup SpecFunc
714 
715  */
716  // s-th zero of the Airy function Bi
717 
718  double airy_zero_Bi(unsigned int s);
719 
720  /**
721 
722  Calculates the zeroes of the derivative of the Airy function Ai
723 
724  \f[ Ai(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} \cos(xt + t^3/3) dt \f]
725 
726  For detailed description see
727  <A HREF="http://mathworld.wolfram.com/AiryFunctionZeros.html">
728  Mathworld</A>
729  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
730  The implementation used is that of
731  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Zeros-of-Derivatives-of-Airy-Functions.html">GSL</A>.
732 
733  @ingroup SpecFunc
734 
735  */
736  // s-th zero of the derivative of the Airy function Ai
737 
738  double airy_zero_Ai_deriv(unsigned int s);
739 
740  /**
741 
742  Calculates the zeroes of the derivative of the Airy function Bi
743 
744  \f[ Bi(x) = \frac{1}{\pi} \int\limits_{0}^{\infty} [\exp(xt-t^3/3) + \cos(xt + t^3/3)] dt \f]
745 
746  For detailed description see
747  <A HREF="http://mathworld.wolfram.com/AiryFunctionZeros.html">
748  Mathworld</A>
749  and <A HREF="http://www.nrbook.com/abramowitz_and_stegun/page_446.htm">Abramowitz&Stegun, Sect. 10.4</A>.
750  The implementation used is that of
751  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Zeros-of-Derivatives-of-Airy-Functions.html">GSL</A>.
752 
753  @ingroup SpecFunc
754 
755  */
756  // s-th zero of the derivative of the Airy function Bi
757 
758  double airy_zero_Bi_deriv(unsigned int s);
759 
760  /**
761 
762  Calculates the Wigner 3j coupling coefficients
763 
764  (ja jb jc
765  ma mb mc)
766 
767  where ja,ma,...etc are integers or half integers.
768  The function takes as input arguments only integers which corresponds
769  to half integer units, e.g two_ja = 2 * ja
770 
771  For detailed description see
772  <A HREF="http://mathworld.wolfram.com/Wigner3j-Symbol.html.html">
773  Mathworld</A>.
774  The implementation used is that of
775  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/3_002dj-Symbols.html#g_t3_002dj-Symbols">GSL</A>.
776 
777  @ingroup SpecFunc
778 
779  */
780 
781  double wigner_3j(int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc);
782 
783  /**
784 
785  Calculates the Wigner 6j coupling coefficients
786 
787  (ja jb jc
788  jd je jf)
789 
790  where ja,jb,...etc are integers or half integers.
791  The function takes as input arguments only integers which corresponds
792  to half integer units, e.g two_ja = 2 * ja
793 
794  For detailed description see
795  <A HREF="http://mathworld.wolfram.com/Wigner6j-Symbol.html">
796  Mathworld</A>.
797  The implementation used is that of
798  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/6_002dj-Symbols.html#g_t6_002dj-Symbols">GSL</A>.
799 
800  @ingroup SpecFunc
801 
802  */
803 
804  double wigner_6j(int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf);
805 
806  /**
807 
808  Calculates the Wigner 9j coupling coefficients
809 
810  (ja jb jc
811  jd je jf
812  jg jh ji)
813 
814  where ja,jb...etc are integers or half integers.
815  The function takes as input arguments only integers which corresponds
816  to half integer units, e.g two_ja = 2 * ja
817 
818 
819  For detailed description see
820  <A HREF="http://mathworld.wolfram.com/Wigner9j-Symbol.html">
821  Mathworld</A>.
822  The implementation used is that of
823  <A HREF="http://www.gnu.org/software/gsl/manual/html_node/9_002dj-Symbols.html#g_t9_002dj-Symbols">GSL</A>.
824 
825  @ingroup SpecFunc
826 
827  */
828 
829  double wigner_9j(int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, int two_jg, int two_jh, int two_ji);
830 
831 
832 
833 } // namespace Math
834 } // namespace ROOT
835 
836 
837 #endif //ROOT_Math_SpecFuncMathMore