BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
SpecFuncCephes.h
Go to the documentation of this file.
1 // special functions taken from Cephes library
2 // see: http://www.netlib.org/cephes
3 //
4 // Copyright 1985, 1987, 2000 by Stephen L. Moshier
5 //
6 // granted permission from the author to be used in MathCore
7 //
8 
9 
10 
11 
12 #ifndef ROOT_Math_SpecFunCephes
13 #define ROOT_Math_SpecFunCephes
14 
15 namespace ROOT {
16  namespace Math {
17 
18  namespace Cephes {
19 
20 
21 //---
22 /* the machine roundoff error */
23 #define kMACHEP 1.11022302462515654042363166809e-16
24 
25 /* largest argument for TMath::Exp() */
26 #define kMAXLOG 709.782712893383973096206318587
27 
28 /* smallest argument for TMath::Exp() without underflow */
29 #define kMINLOG -708.396418532264078748994506896
30 
31 /* the maximal number that pow(x,x-0.5) has no overflow */
32 /* we use a (very) conservative portable bound */
33 #define kMAXSTIR 108.116855767857671821730036754
34 
35 #define kMAXLGM 2.556348e305
36 
37 
38 /**
39  incomplete complementary gamma function
40  * igamc(a, x) = 1 - igam(a, x)
41 */
42 double igamc( double a, double x );
43 
44 /* incomplete gamma function*/
45 double igam( double a, double x );
46 
47 /* Logarithm of gamma function */
48 double lgam( double x );
49 
50 /* gamma function*/
51 double gamma( double x );
52 
53 /* beta function*/
54 double beta(double z, double w);
55 
56 /* evaluation of incomplete beta */
57 double incbet( double aa, double bb, double xx );
58 
59 /* Continued fraction expansion #1
60  * for incomplete beta integral
61  * used when xx < (aa-1)/(aa+bb-2)
62  * (and bb*xx > 1 or xx > 0.95)
63 */
64 double incbcf( double a, double b, double x );
65 
66 
67 /* Continued fraction expansion #2
68  * for incomplete beta integral
69  * used when xx > (aa-1)/(aa+bb-2)
70  * (and bb*xx > 1 or xx > 0.95)
71  */
72 double incbd( double a, double b, double x );
73 
74 
75 /* Power series for incomplete beta integral.
76  Use when b*x is small and x not too close to 1. */
77 
78 double pseries( double a, double b, double x );
79 
80 
81 /* error function */
82 double erf( double a );
83 
84 /* complementary error function */
85 double erfc( double a );
86 
87 
88 // inverse function
89 
90 /* normal quantile */
91 double ndtri (double y);
92 
93 /* normal quantile */
94 double ndtri (double y);
95 
96 /* inverse of incomplete gamma */
97 double igami (double a, double y);
98 
99 /* inverse of incomplete beta */
100 double incbi (double a, double b, double y);
101 
102 
103 } // end namespace Cephes
104 
105 /* routines for efficient polynomial evaluation*/
106 double Polynomialeval(double x, double* a, unsigned int N);
107 double Polynomial1eval(double x, double* a, unsigned int N);
108 
109 
110 } // end namespace Math
111 } // end namespace ROOT
112 
113 
114 #endif /* SpecFun */
115 
#define N
Definition: mixmax.h:31
Various mathematical functions.
Definition: Bessel.h:26
double incbd(double a, double b, double x)
double erfc(double a)
double incbcf(double a, double b, double x)
double incbet(double aa, double bb, double xx)
double pseries(double a, double b, double x)
double igam(double a, double x)
double lgam(double x)
double igamc(double a, double x)
double beta(double z, double w)
double igami(double a, double y)
double incbi(double a, double b, double y)
double erf(double a)
double ndtri(double y)
double gamma(double x)
double Polynomial1eval(double x, double *a, unsigned int N)
double Polynomialeval(double x, double *a, unsigned int N)
Definition: TUUID.h:7