38 #if !defined(R__SOLARIS) && !defined(R__ACC) && !defined(R__FBSD) 70 if(x==0.0)
return 0.0;
72 return log(x+ax*
sqrt(1.+1./(ax*ax)));
83 if(x==0.0)
return 0.0;
85 return log(x+ax*
sqrt(1.-1./(ax*ax)));
96 return log((1+x)/(1-x))/2;
121 const Double_t c[20] = {0.42996693560813697, 0.40975987533077105,
122 -0.01858843665014592, 0.00145751084062268,-0.00014304184442340,
123 0.00001588415541880,-0.00000190784959387, 0.00000024195180854,
124 -0.00000003193341274, 0.00000000434545063,-0.00000000060578480,
125 0.00000000008612098,-0.00000000001244332, 0.00000000000182256,
126 -0.00000000000027007, 0.00000000000004042,-0.00000000000000610,
127 0.00000000000000093,-0.00000000000000014, 0.00000000000000002};
130 t=h=y=s=a=alfa=b1=b2=b0=0.;
134 }
else if (x == -1) {
143 a = -pi3+hf*(b1*b1-b2*b2);
149 }
else if (t <= -0.5) {
173 for (
Int_t i=19;i>=0;i--){
174 b0 = c[i] + alfa*b1-b2;
178 h = -(s*(b0-h*b2)+a);
210 Double_t kConst = 0.8862269254527579;
215 Double_t erfi, derfi, y0,y1,dy0,dy1;
220 for (
Int_t iter=0; iter<kMaxit; iter++) {
223 if (TMath::Abs(dy1) < kEps) {
if (x < 0)
return -erfi;
else return erfi;}
228 if(TMath::Abs(derfi/erfi) < kEps) {
if (x < 0)
return -erfi;
else return erfi;}
252 if (n <= 0)
return 1.;
271 const Double_t w2 = 1.41421356237309505;
273 const Double_t p10 = 2.4266795523053175e+2, q10 = 2.1505887586986120e+2,
274 p11 = 2.1979261618294152e+1, q11 = 9.1164905404514901e+1,
275 p12 = 6.9963834886191355e+0, q12 = 1.5082797630407787e+1,
276 p13 =-3.5609843701815385e-2, q13 = 1;
278 const Double_t p20 = 3.00459261020161601e+2, q20 = 3.00459260956983293e+2,
279 p21 = 4.51918953711872942e+2, q21 = 7.90950925327898027e+2,
280 p22 = 3.39320816734343687e+2, q22 = 9.31354094850609621e+2,
281 p23 = 1.52989285046940404e+2, q23 = 6.38980264465631167e+2,
282 p24 = 4.31622272220567353e+1, q24 = 2.77585444743987643e+2,
283 p25 = 7.21175825088309366e+0, q25 = 7.70001529352294730e+1,
284 p26 = 5.64195517478973971e-1, q26 = 1.27827273196294235e+1,
285 p27 =-1.36864857382716707e-7, q27 = 1;
287 const Double_t p30 =-2.99610707703542174e-3, q30 = 1.06209230528467918e-2,
288 p31 =-4.94730910623250734e-2, q31 = 1.91308926107829841e-1,
289 p32 =-2.26956593539686930e-1, q32 = 1.05167510706793207e+0,
290 p33 =-2.78661308609647788e-1, q33 = 1.98733201817135256e+0,
291 p34 =-2.23192459734184686e-2, q34 = 1;
342 if (x > 0)
return 0.5 +0.5*
h;
386 if (a <= 0 || x <= 0)
return 0;
394 for (
Int_t i=1; i<=itmax; i++) {
398 if (
Abs(d) < fpmin) d = fpmin;
400 if (
Abs(c) < fpmin) c = fpmin;
404 if (
Abs(del-1) < eps)
break;
422 if (a <= 0 || x <= 0)
return 0;
444 Double_t bw = gamma/((x-mean)*(x-mean) + gamma*gamma/4);
455 if (sigma == 0)
return 1.e30;
458 if (arg < -39.0 || arg > 39.0)
return 0.0;
460 if (!norm)
return res;
461 return res/(2.50662827463100024*sigma);
475 if (sigma <= 0)
return 0;
477 if (!norm)
return den;
524 if( av0 >= av1 && av0 >= av2 ) {
530 else if (av1 >= av0 && av1 >= av2) {
545 Double_t foofrac = foo/amax, barfrac = bar/amax;
546 Double_t d = amax *
Sqrt(1.+foofrac*foofrac+barfrac*barfrac);
578 return Exp(lnpoisson);
624 if (ndf <= 0)
return 0;
627 if (chi2 < 0)
return 0;
674 }
else if (u < 0.755) {
677 }
else if (u < 6.8116) {
683 for (
Int_t j=0; j<maxj;j++) {
686 p = 2*(
r[0] -
r[1] +
r[2] -
r[3]);
793 if (!a || !b || na <= 2 || nb <= 2) {
794 Error(
"KolmogorovTest",
"Sets must have more than 2 points");
810 for (
Int_t i=0;i<na+nb;i++) {
814 if (ia >= na) {ok =
kTRUE;
break;}
815 }
else if (a[ia] > b[ib]) {
818 if (ib >= nb) {ok =
kTRUE;
break;}
822 while(a[ia] == x && ia < na) {
826 while(b[ib] == x && ib < nb) {
830 if (ia >= na) {ok =
kTRUE;
break;}
831 if (ib >= nb) {ok =
kTRUE;
break;}
845 printf(
" Kolmogorov Probability = %g, Max Dist = %g\n",prob,rdmax);
877 if ((sigma < 0 || lg < 0) || (sigma==0 && lg==0)) {
882 return lg * 0.159154943 / (xx*xx + lg*lg /4);
886 return 0.39894228 / sigma *
TMath::Exp(-xx*xx / (2*sigma*sigma));
890 x = xx / sigma / 1.41421356;
891 y = lg / 2 / sigma / 1.41421356;
910 Double_t c[6] = { 1.0117281, -0.75197147, 0.012557727, 0.010022008, -0.00024206814, 0.00000050084806};
911 Double_t s[6] = { 1.393237, 0.23115241, -0.15535147, 0.0062183662, 0.000091908299, -0.00000062752596};
912 Double_t t[6] = { 0.31424038, 0.94778839, 1.5976826, 2.2795071, 3.0206370, 3.8897249};
919 Double_t xlim0, xlim1, xlim2, xlim3, xlim4;
920 Double_t a0=0, d0=0, d2=0, e0=0, e2=0, e4=0, h0=0, h2=0, h4=0, h6=0;
921 Double_t p0=0,
p2=0, p4=0, p6=0, p8=0, z0=0, z2=0, z4=0, z6=0, z8=0;
922 Double_t xp[6], xm[6], yp[6], ym[6];
923 Double_t mq[6], pq[6], mf[6], pf[6];
938 xlim3 = 3.097 * y - 0.45;
940 xlim4 = 18.1 * y + 1.65;
949 k = yrrtpi / (xq + yq);
950 }
else if ( abx > xlim1 ) {
957 d = rrtpi / (d0 + xq*(d2 + xq));
958 k = d * y * (a0 + xq);
959 }
else if ( abx > xlim2 ) {
962 h0 = 0.5625 + yq * (4.5 + yq * (10.5 + yq * (6.0 + yq)));
964 h2 = -4.5 + yq * (9.0 + yq * ( 6.0 + yq * 4.0));
965 h4 = 10.5 - yq * (6.0 - yq * 6.0);
966 h6 = -6.0 + yq * 4.0;
967 e0 = 1.875 + yq * (8.25 + yq * (5.5 + yq));
968 e2 = 5.25 + yq * (1.0 + yq * 3.0);
971 d = rrtpi / (h0 + xq * (h2 + xq * (h4 + xq * (h6 + xq))));
972 k = d * y * (e0 + xq * (e2 + xq * (e4 + xq)));
973 }
else if ( abx < xlim3 ) {
976 z0 = 272.1014 + y * (1280.829 + y *
986 z2 = 211.678 + y * (902.3066 + y *
994 z4 = 78.86585 + y * (308.1852 + y *
998 (80.39278 + y * 10.0)
1000 z6 = 22.03523 + y * (55.02933 + y *
1002 (53.59518 + y * 10.0)
1004 z8 = 1.496460 + y * (13.39880 + y * 5.0);
1005 p0 = 153.5168 + y * (549.3954 + y *
1012 (4.264678 + y * 0.3183291)
1014 p2 = -34.16955 + y * (-1.322256+ y *
1019 (12.79458 + y * 1.2733163)
1021 p4 = 2.584042 + y * (10.46332 + y *
1024 (12.79568 + y * 1.9099744)
1026 p6 = -0.07272979 + y * (0.9377051 + y *
1027 (4.266322 + y * 1.273316));
1028 p8 = 0.0005480304 + y * 0.3183291;
1030 d = 1.7724538 / (z0 + xq * (z2 + xq * (z4 + xq * (z6 + xq * (z8 + xq)))));
1031 k = d * (p0 + xq * (
p2 + xq * (p4 + xq * (p6 + xq * p8))));
1034 ypy0q = ypy0 * ypy0;
1036 for (j = 0; j <= 5; j++) {
1039 mf[j] = 1.0 / (mq[j] + ypy0q);
1041 ym[j] = mf[j] * ypy0;
1044 pf[j] = 1.0 / (pq[j] + ypy0q);
1046 yp[j] = pf[j] * ypy0;
1048 if ( abx <= xlim4 ) {
1049 for (j = 0; j <= 5; j++) {
1050 k = k + c[j]*(ym[j]+yp[j]) - s[j]*(xm[j]-xp[j]) ;
1054 for ( j = 0; j <= 5; j++) {
1056 (mq[j] * mf[j] - y0 * ym[j])
1057 + s[j] * yf * xm[j]) / (mq[j]+y0q)
1058 + (c[j] * (pq[j] * pf[j] - y0 * yp[j])
1059 - s[j] * yf * xp[j]) / (pq[j]+y0q);
1061 k = y * k +
exp( -xq );
1064 return k / 2.506628 / sigma;
1080 Double_t r,s,t,p,
q,d,ps3,ps33,qs2,u,
v,tmp,lnu,lnv,su,sv,y1,y2,y3;
1084 if (coef[3] == 0)
return complex;
1085 r = coef[2]/coef[3];
1086 s = coef[1]/coef[3];
1087 t = coef[0]/coef[3];
1090 q = (2*r*r*
r)/27.0 - (r*s)/3 + t;
1176 if (type<1 || type>9){
1177 printf(
"illegal value of type\n");
1183 if (index) ind = index;
1186 isAllocated =
kTRUE;
1195 for (
Int_t i=0; i<nprob; i++){
1205 nppm = n*prob[i]-0.5;
1227 if (type == 4) { a = 0; b = 1; }
1228 else if (type == 5) { a = 0.5; b = 0.5; }
1229 else if (type == 6) { a = 0.; b = 0.; }
1230 else if (type == 7) { a = 1.; b = 1.; }
1231 else if (type == 8) { a = 1./3.; b =
a; }
1232 else if (type == 9) { a = 3./8.; b =
a; }
1236 nppm = a + prob[i] * ( n + 1 -a -b);
1239 if (gamma < eps) gamma = 0;
1244 int first = (j > 0 && j <=
n) ? j-1 : ( j <=0 ) ? 0 : n-1;
1245 int second = (j > 0 && j <
n) ? j : ( j <=0 ) ? 0 : n-1;
1255 quantiles[i] = (1-
gamma)*xj + gamma*xjj;
1279 if (Narr <= 0)
return;
1280 double *localArr1 =
new double[Narr];
1281 int *localArr2 =
new int[Narr];
1285 for(iEl = 0; iEl < Narr; iEl++) {
1286 localArr1[iEl] = arr1[iEl];
1287 localArr2[iEl] = iEl;
1290 for (iEl = 0; iEl < Narr; iEl++) {
1291 for (iEl2 = Narr-1; iEl2 > iEl; --iEl2) {
1292 if (localArr1[iEl2-1] < localArr1[iEl2]) {
1293 double tmp = localArr1[iEl2-1];
1294 localArr1[iEl2-1] = localArr1[iEl2];
1295 localArr1[iEl2] = tmp;
1297 int tmp2 = localArr2[iEl2-1];
1298 localArr2[iEl2-1] = localArr2[iEl2];
1299 localArr2[iEl2] = tmp2;
1304 for (iEl = 0; iEl < Narr; iEl++) {
1305 arr2[iEl] = localArr2[iEl];
1307 delete [] localArr2;
1308 delete [] localArr1;
1318 if (Narr <= 0)
return;
1319 double *localArr1 =
new double[Narr];
1320 int *localArr2 =
new int[Narr];
1324 for (iEl = 0; iEl < Narr; iEl++) {
1325 localArr1[iEl] = arr1[iEl];
1326 localArr2[iEl] = iEl;
1329 for (iEl = 0; iEl < Narr; iEl++) {
1330 for (iEl2 = Narr-1; iEl2 > iEl; --iEl2) {
1331 if (localArr1[iEl2-1] > localArr1[iEl2]) {
1332 double tmp = localArr1[iEl2-1];
1333 localArr1[iEl2-1] = localArr1[iEl2];
1334 localArr1[iEl2] = tmp;
1336 int tmp2 = localArr2[iEl2-1];
1337 localArr2[iEl2-1] = localArr2[iEl2];
1338 localArr2[iEl2] = tmp2;
1343 for (iEl = 0; iEl < Narr; iEl++) {
1344 arr2[iEl] = localArr2[iEl];
1346 delete [] localArr2;
1347 delete [] localArr1;
1393 p4=1.2067492, p5=0.2659732, p6=3.60768e-2, p7=4.5813e-3;
1395 const Double_t q1= 0.39894228, q2= 1.328592e-2, q3= 2.25319e-3,
1396 q4=-1.57565e-3, q5= 9.16281e-3, q6=-2.057706e-2,
1397 q7= 2.635537e-2, q8=-1.647633e-2, q9= 3.92377e-3;
1407 result = p1+y*(
p2+y*(
p3+y*(p4+y*(p5+y*(p6+y*p7)))));
1427 p4= 3.488590e-2, p5=2.62698e-3, p6=1.0750e-4, p7=7.4e-6;
1429 const Double_t q1= 1.25331414, q2=-7.832358e-2, q3= 2.189568e-2,
1430 q4=-1.062446e-2, q5= 5.87872e-3, q6=-2.51540e-3, q7=5.3208e-4;
1433 Error(
"TMath::BesselK0",
"*K0* Invalid argument x = %g\n",x);
1444 result = (
exp(-x)/
sqrt(x))*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*(q6+y*q7))))));
1461 p4=0.15084934, p5=2.658733e-2, p6=3.01532e-3, p7=3.2411e-4;
1463 const Double_t q1= 0.39894228, q2=-3.988024e-2, q3=-3.62018e-3,
1464 q4= 1.63801e-3, q5=-1.031555e-2, q6= 2.282967e-2,
1465 q7=-2.895312e-2, q8= 1.787654e-2, q9=-4.20059e-3;
1475 result = x*(p1+y*(
p2+y*(
p3+y*(p4+y*(p5+y*(p6+y*p7))))));
1478 result = (
exp(ax)/
sqrt(ax))*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*(q6+y*(q7+y*(q8+y*q9))))))));
1496 p4=-0.18156897, p5=-1.919402e-2, p6=-1.10404e-3, p7=-4.686e-5;
1498 const Double_t q1= 1.25331414, q2= 0.23498619, q3=-3.655620e-2,
1499 q4= 1.504268e-2, q5=-7.80353e-3, q6= 3.25614e-3, q7=-6.8245e-4;
1502 Error(
"TMath::BesselK1",
"*K1* Invalid argument x = %g\n",x);
1513 result = (
exp(-x)/
sqrt(x))*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*(q6+y*q7))))));
1526 if (x <= 0 || n < 0) {
1527 Error(
"TMath::BesselK",
"*K* Invalid argument(s) (n,x) = (%d, %g)\n",n,x);
1539 for (
Int_t j=1; j<
n; j++) {
1556 const Double_t kBigPositive = 1.e10;
1557 const Double_t kBigNegative = 1.e-10;
1560 Error(
"TMath::BesselI",
"*I* Invalid argument (n,x) = (%d, %g)\n",n,x);
1567 if (x == 0)
return 0;
1575 for (
Int_t j=m; j>=1; j--) {
1581 result *= kBigNegative;
1583 bip *= kBigNegative;
1585 if (j==n) result=bip;
1589 if ((x < 0) && (n%2 == 1)) result = -
result;
1601 const Double_t p1 = 57568490574.0,
p2 = -13362590354.0,
p3 = 651619640.7;
1602 const Double_t p4 = -11214424.18, p5 = 77392.33017, p6 = -184.9052456;
1603 const Double_t p7 = 57568490411.0, p8 = 1029532985.0, p9 = 9494680.718;
1604 const Double_t p10 = 59272.64853, p11 = 267.8532712;
1607 const Double_t q2 = -0.1098628627e-2, q3 = 0.2734510407e-4;
1608 const Double_t q4 = -0.2073370639e-5, q5 = 0.2093887211e-6;
1609 const Double_t q6 = -0.1562499995e-1, q7 = 0.1430488765e-3;
1610 const Double_t q8 = -0.6911147651e-5, q9 = 0.7621095161e-6;
1611 const Double_t q10 = 0.934935152e-7, q11 = 0.636619772;
1613 if ((ax=
fabs(x)) < 8) {
1615 result1 = p1 + y*(
p2 + y*(
p3 + y*(p4 + y*(p5 + y*p6))));
1616 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 +
y))));
1617 result = result1/result2;
1622 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1623 result2 = q6 + y*(q7 + y*(q8 + y*(q9 - y*q10)));
1624 result =
sqrt(q11/ax)*(
cos(xx)*result1-z*
sin(xx)*result2);
1636 const Double_t p1 = 72362614232.0,
p2 = -7895059235.0,
p3 = 242396853.1;
1637 const Double_t p4 = -2972611.439, p5 = 15704.48260, p6 = -30.16036606;
1638 const Double_t p7 = 144725228442.0, p8 = 2300535178.0, p9 = 18583304.74;
1639 const Double_t p10 = 99447.43394, p11 = 376.9991397;
1642 const Double_t q2 = 0.183105e-2, q3 = -0.3516396496e-4;
1643 const Double_t q4 = 0.2457520174e-5, q5 = -0.240337019e-6;
1644 const Double_t q6 = 0.04687499995, q7 = -0.2002690873e-3;
1645 const Double_t q8 = 0.8449199096e-5, q9 = -0.88228987e-6;
1646 const Double_t q10 = 0.105787412e-6, q11 = 0.636619772;
1648 if ((ax=
fabs(x)) < 8) {
1650 result1 = x*(p1 + y*(
p2 + y*(
p3 + y*(p4 + y*(p5 + y*p6)))));
1651 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 +
y))));
1652 result = result1/result2;
1657 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1658 result2 = q6 + y*(q7 + y*(q8 + y*(q9 + y*q10)));
1659 result =
sqrt(q11/ax)*(
cos(xx)*result1-z*
sin(xx)*result2);
1660 if (x < 0) result = -
result;
1671 const Double_t p1 = -2957821389.,
p2 = 7062834065.0,
p3 = -512359803.6;
1672 const Double_t p4 = 10879881.29, p5 = -86327.92757, p6 = 228.4622733;
1673 const Double_t p7 = 40076544269., p8 = 745249964.8, p9 = 7189466.438;
1674 const Double_t p10 = 47447.26470, p11 = 226.1030244, p12 = 0.636619772;
1677 const Double_t q2 = -0.1098628627e-2, q3 = 0.2734510407e-4;
1678 const Double_t q4 = -0.2073370639e-5, q5 = 0.2093887211e-6;
1679 const Double_t q6 = -0.1562499995e-1, q7 = 0.1430488765e-3;
1680 const Double_t q8 = -0.6911147651e-5, q9 = 0.7621095161e-6;
1681 const Double_t q10 = -0.934945152e-7, q11 = 0.636619772;
1685 result1 = p1 + y*(
p2 + y*(
p3 + y*(p4 + y*(p5 + y*p6))));
1686 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 +
y))));
1692 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1693 result2 = q6 + y*(q7 + y*(q8 + y*(q9 + y*q10)));
1694 result =
sqrt(q11/x)*(
sin(xx)*result1+z*
cos(xx)*result2);
1705 const Double_t p1 = -0.4900604943e13,
p2 = 0.1275274390e13;
1706 const Double_t p3 = -0.5153438139e11, p4 = 0.7349264551e9;
1707 const Double_t p5 = -0.4237922726e7, p6 = 0.8511937935e4;
1708 const Double_t p7 = 0.2499580570e14, p8 = 0.4244419664e12;
1709 const Double_t p9 = 0.3733650367e10, p10 = 0.2245904002e8;
1710 const Double_t p11 = 0.1020426050e6, p12 = 0.3549632885e3;
1713 const Double_t q2 = 0.183105e-2, q3 = -0.3516396496e-4;
1714 const Double_t q4 = 0.2457520174e-5, q5 = -0.240337019e-6;
1715 const Double_t q6 = 0.04687499995, q7 = -0.2002690873e-3;
1716 const Double_t q8 = 0.8449199096e-5, q9 = -0.88228987e-6;
1717 const Double_t q10 = 0.105787412e-6, q11 = 0.636619772;
1721 result1 = x*(p1 + y*(
p2 + y*(p3 + y*(p4 + y*(p5 + y*p6)))));
1722 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 + y*(p12+
y)))));
1728 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1729 result2 = q6 + y*(q7 + y*(q8 + y*(q9 + y*q10)));
1730 result =
sqrt(q11/x)*(
sin(xx)*result1+z*
cos(xx)*result2);
1742 const Int_t n1 = 15;
1743 const Int_t n2 = 25;
1744 const Double_t c1[16] = { 1.00215845609911981, -1.63969292681309147,
1745 1.50236939618292819, -.72485115302121872,
1746 .18955327371093136, -.03067052022988,
1747 .00337561447375194, -2.6965014312602e-4,
1748 1.637461692612e-5, -7.8244408508e-7,
1749 3.021593188e-8, -9.6326645e-10,
1750 2.579337e-11, -5.8854e-13,
1751 1.158e-14, -2e-16 };
1752 const Double_t c2[26] = { .99283727576423943, -.00696891281138625,
1753 1.8205103787037e-4, -1.063258252844e-5,
1754 9.8198294287e-7, -1.2250645445e-7,
1755 1.894083312e-8, -3.44358226e-9,
1756 7.1119102e-10, -1.6288744e-10,
1757 4.065681e-11, -1.091505e-11,
1758 3.12005e-12, -9.4202e-13,
1759 2.9848e-13, -9.872e-14,
1760 3.394e-14, -1.208e-14,
1761 4.44e-15, -1.68e-15,
1780 for (i = n1; i >= 0; --i) {
1781 b0 = c1[i] + alfa*b1 - b2;
1793 for (i = n2; i >= 0; --i) {
1794 b0 = c2[i] + alfa*b1 - b2;
1811 const Int_t n3 = 16;
1812 const Int_t n4 = 22;
1813 const Double_t c3[17] = { .5578891446481605, -.11188325726569816,
1814 -.16337958125200939, .32256932072405902,
1815 -.14581632367244242, .03292677399374035,
1816 -.00460372142093573, 4.434706163314e-4,
1817 -3.142099529341e-5, 1.7123719938e-6,
1818 -7.416987005e-8, 2.61837671e-9,
1819 -7.685839e-11, 1.9067e-12,
1820 -4.052e-14, 7.5e-16,
1822 const Double_t c4[23] = { 1.00757647293865641, .00750316051248257,
1823 -7.043933264519e-5, 2.66205393382e-6,
1824 -1.8841157753e-7, 1.949014958e-8,
1825 -2.6126199e-9, 4.236269e-10,
1826 -7.955156e-11, 1.679973e-11,
1827 -3.9072e-12, 9.8543e-13,
1828 -2.6636e-13, 7.645e-14,
1829 -2.313e-14, 7.33e-15,
1832 -4e-17, 2e-17,-1e-17 };
1843 }
else if (v <= 0.3) {
1848 for (i = 1; i <= i1; ++i) {
1849 h = -h*y / ((2*i+ 1)*(2*i + 3));
1859 for (i = n3; i >= 0; --i) {
1860 b0 = c3[i] + alfa*b1 - b2;
1871 for (i = n4; i >= 0; --i) {
1872 b0 = c4[i] + alfa*b1 - b2;
1899 for (i=1; i<=60;i++) {
1900 r*=(x/(2*i+1))*(x/(2*i+1));
1908 for (i=1; i<=km; i++) {
1909 r*=(2*i-1)*(2*i-1)/x/
x;
1916 for (i=1; i<=16; i++) {
1917 r=0.125*r*(2.0*i-1.0)*(2.0*i-1.0)/(i*
x);
1923 sl0=-2.0/(pi*
x)*s+bi0;
1941 for (i=1; i<=60;i++) {
1942 r*=x*x/(4.0*i*i-1.0);
1951 for (i=1; i<=km; i++) {
1952 r*=(2*i+3)*(2*i+1)/x/
x;
1956 sl1=2.0/pi*(-1.0+1.0/(x*
x)+3.0*s/(x*x*x*x));
1960 for (i=1; i<=16; i++) {
1961 r=-0.125*r*(4.0-(2.0*i-1.0)*(2.0*i-1.0))/(i*x);
1995 d = 1.0 - qab*x/qap;
1999 for (m=1; m<=itmax; m++) {
2001 aa = m*(b-
m)*x/((qam+ m2)*(a+m2));
2008 aa = -(a+
m)*(qab +m)*x/((a+m2)*(qap+m2));
2019 Info(
"TMath::BetaCf",
"a or b too big, or itmax too small, a=%g, b=%g, x=%g, h=%g, itmax=%d",
2035 if ((x<0) || (x>1) || (p<=0) || (q<=0)){
2036 Error(
"TMath::BetaDist",
"parameter value outside allowed range");
2053 if ((x<0) || (x>1) || (p<=0) || (q<=0)){
2054 Error(
"TMath::BetaDistI",
"parameter value outside allowed range");
2075 if (k==0 || n==k)
return 1;
2099 if(k <= 0)
return 1.0;
2100 if(k > n)
return 0.0;
2143 Double_t c[]={0, 0.01, 0.222222, 0.32, 0.4, 1.24, 2.2,
2144 4.67, 6.66, 6.73, 13.32, 60.0, 70.0,
2145 84.0, 105.0, 120.0, 127.0, 140.0, 175.0,
2146 210.0, 252.0, 264.0, 294.0, 346.0, 420.0,
2147 462.0, 606.0, 672.0, 707.0, 735.0, 889.0,
2148 932.0, 966.0, 1141.0, 1182.0, 1278.0, 1740.0,
2156 if (ndf <= 0)
return 0;
2169 if (ch > c[6]*ndf + 6)
2176 p1 = 1 + ch * (c[7]+ch);
2177 p2 = ch * (c[9] + ch * (c[8] + ch));
2178 t = -0.5 + (c[7] + 2 * ch) / p1 - (c[9] + ch * (c[10] + 3 * ch)) / p2;
2179 ch = ch - (1 -
TMath::Exp(a + g + 0.5 * ch + cp * aa) *p2 /
p1) / t;
2184 if (ch < e)
return ch;
2187 for (
Int_t i=0; i<maxit; i++){
2194 a = 0.5 * t - b * cp;
2195 s1 = (c[19] + a * (c[17] + a * (c[14] + a * (c[13] + a * (c[12] +c[11] *
a))))) / c[24];
2196 s2 = (c[24] + a * (c[29] + a * (c[32] + a * (c[33] + c[35] *
a)))) / c[37];
2197 s3 = (c[19] + a * (c[25] + a * (c[28] + c[31] *
a))) / c[37];
2198 s4 = (c[20] + a * (c[27] + c[34] *
a) + cp * (c[22] + a * (c[30] + c[36] * a))) / c[38];
2199 s5 = (c[13] + c[21] * a + cp * (c[18] + c[26] *
a)) / c[37];
2200 s6 = (c[15] + cp * (c[23] + c[16] * cp)) / c[38];
2201 ch = ch + t * (1 + 0.5 * t * s1 - b * cp * (s1 - b * (s2 - b * (s3 - b * (s4 - b * (s5 - b * s6))))));
2291 if ((x<mu) || (gamma<=0) || (beta <=0)) {
2292 Error(
"TMath::GammaDist",
"illegal parameter values x = %f , gamma = %f beta = %f",x,gamma,beta);
2377 if ((x<theta) || (sigma<=0) || (m<=0)) {
2378 Error(
"TMath::Lognormal",
"illegal parameter values");
2395 if ((p<=0)||(p>=1)) {
2396 Error(
"TMath::NormQuantile",
"probability outside (0, 1)");
2400 Double_t a0 = 3.3871328727963666080e0;
2401 Double_t a1 = 1.3314166789178437745e+2;
2402 Double_t a2 = 1.9715909503065514427e+3;
2403 Double_t a3 = 1.3731693765509461125e+4;
2404 Double_t a4 = 4.5921953931549871457e+4;
2405 Double_t a5 = 6.7265770927008700853e+4;
2406 Double_t a6 = 3.3430575583588128105e+4;
2407 Double_t a7 = 2.5090809287301226727e+3;
2408 Double_t b1 = 4.2313330701600911252e+1;
2409 Double_t b2 = 6.8718700749205790830e+2;
2410 Double_t b3 = 5.3941960214247511077e+3;
2411 Double_t b4 = 2.1213794301586595867e+4;
2412 Double_t b5 = 3.9307895800092710610e+4;
2413 Double_t b6 = 2.8729085735721942674e+4;
2414 Double_t b7 = 5.2264952788528545610e+3;
2415 Double_t c0 = 1.42343711074968357734e0;
2419 Double_t c4 = 1.27045825245236838258e0;
2420 Double_t c5 = 2.41780725177450611770e-1;
2421 Double_t c6 = 2.27238449892691845833e-2;
2422 Double_t c7 = 7.74545014278341407640e-4;
2423 Double_t d1 = 2.05319162663775882187e0;
2424 Double_t d2 = 1.67638483018380384940e0;
2425 Double_t d3 = 6.89767334985100004550e-1;
2426 Double_t d4 = 1.48103976427480074590e-1;
2427 Double_t d5 = 1.51986665636164571966e-2;
2428 Double_t d6 = 5.47593808499534494600e-4;
2429 Double_t d7 = 1.05075007164441684324e-9;
2430 Double_t e0 = 6.65790464350110377720e0;
2431 Double_t e1 = 5.46378491116411436990e0;
2432 Double_t e2 = 1.78482653991729133580e0;
2433 Double_t e3 = 2.96560571828504891230e-1;
2434 Double_t e4 = 2.65321895265761230930e-2;
2435 Double_t e5 = 1.24266094738807843860e-3;
2436 Double_t e6 = 2.71155556874348757815e-5;
2437 Double_t e7 = 2.01033439929228813265e-7;
2440 Double_t f3 = 1.48753612908506148525e-2;
2441 Double_t f4 = 7.86869131145613259100e-4;
2442 Double_t f5 = 1.84631831751005468180e-5;
2443 Double_t f6 = 1.42151175831644588870e-7;
2444 Double_t f7 = 2.04426310338993978564e-15;
2455 quantile = q* (((((((a7 * r + a6) * r + a5) * r + a4) * r + a3)
2456 * r + a2) * r + a1) * r + a0) /
2457 (((((((b7 * r + b6) * r + b5) * r + b4) * r + b3)
2458 * r + b2) * r + b1) * r + 1.);
2469 quantile=(((((((c7 * r + c6) * r + c5) * r + c4) * r + c3)
2470 * r +
c2) * r + c1) * r + c0) /
2471 (((((((d7 * r + d6) * r + d5) * r + d4) * r + d3)
2472 * r + d2) * r + d1) * r + 1);
2475 quantile=(((((((e7 * r + e6) * r + e5) * r + e4) * r + e3)
2476 * r + e2) * r + e1) * r + e0) /
2477 (((((((f7 * r + f6) * r + f5) * r + f4) * r + f3)
2478 * r + f2) * r +
f1) * r + 1);
2480 if (q<0) quantile=-quantile;
2500 for(i=n-2; i>-1; i--) {
2507 if(i1==-1)
return kFALSE;
2511 for(i=n-1;i>i1;i--) {
2522 for(i=0;i<(n-i1-1)/2;i++) {
2610 if (ndf<1 || p>=1 || p<=0) {
2611 Error(
"TMath::StudentQuantile",
"illegal parameter values");
2614 if ((lower_tail && p>0.5)||(!lower_tail && p<0.5)){
2616 q=2*(lower_tail ? (1-p) : p);
2619 q=2*(lower_tail? p : (1-p));
2631 Double_t c=((20700*a/b -98)*a-16)*a+96.36;
2639 if (ndf<5) c+=0.3*(ndf-4.5)*(x+0.6);
2640 c+=(((0.05*d*x-5.)*x-7.)*x-2.)*x +b;
2641 y=(((((0.4*y+6.3)*y+36.)*y+94.5)/c - y-3.)/b+1)*x;
2646 y=((1./(((ndf+6.)/(ndf*
y)-0.089*d-0.822)*(ndf+2.)*3)+0.5/(ndf+4.))*y-1.)*
2647 (ndf+1.)/(ndf+2.)+1/
y;
2652 if(neg) quantile=-quantile;
2738 if (x < ac[0]) v = 0;
2739 else if (x >=ac[8]) v = 1;
2742 k =
Int_t(xx*ac[10]);
2743 v =
TMath::Min(wcm[k] + (xx - k*ac[9])*(wcm[k+1]-wcm[k])*ac[10], 1.);
2769 Double_t BKMNX1 = 0.02, BKMNY1 = 0.05, BKMNX2 = 0.12, BKMNY2 = 0.05,
2770 BKMNX3 = 0.22, BKMNY3 = 0.05, BKMXX1 = 0.1 , BKMXY1 = 1,
2771 BKMXX2 = 0.2 , BKMXY2 = 1 , BKMXX3 = 0.3 , BKMXY3 = 1;
2773 Double_t FBKX1 = 2/(BKMXX1-BKMNX1), FBKX2 = 2/(BKMXX2-BKMNX2),
2774 FBKX3 = 2/(BKMXX3-BKMNX3), FBKY1 = 2/(BKMXY1-BKMNY1),
2775 FBKY2 = 2/(BKMXY2-BKMNY2), FBKY3 = 2/(BKMXY3-BKMNY3);
2777 Double_t FNINV[] = {0, 1, 0.5, 0.33333333, 0.25, 0.2};
2779 Double_t EDGEC[]= {0, 0, 0.16666667e+0, 0.41666667e-1, 0.83333333e-2,
2780 0.13888889e-1, 0.69444444e-2, 0.77160493e-3};
2782 Double_t U1[] = {0, 0.25850868e+0, 0.32477982e-1, -0.59020496e-2,
2783 0. , 0.24880692e-1, 0.47404356e-2,
2784 -0.74445130e-3, 0.73225731e-2, 0. ,
2785 0.11668284e-2, 0. , -0.15727318e-2,-0.11210142e-2};
2787 Double_t U2[] = {0, 0.43142611e+0, 0.40797543e-1, -0.91490215e-2,
2788 0. , 0.42127077e-1, 0.73167928e-2,
2789 -0.14026047e-2, 0.16195241e-1, 0.24714789e-2,
2790 0.20751278e-2, 0. , -0.25141668e-2,-0.14064022e-2};
2792 Double_t U3[] = {0, 0.25225955e+0, 0.64820468e-1, -0.23615759e-1,
2793 0. , 0.23834176e-1, 0.21624675e-2,
2794 -0.26865597e-2, -0.54891384e-2, 0.39800522e-2,
2795 0.48447456e-2, -0.89439554e-2, -0.62756944e-2,-0.24655436e-2};
2797 Double_t U4[] = {0, 0.12593231e+1, -0.20374501e+0, 0.95055662e-1,
2798 -0.20771531e-1, -0.46865180e-1, -0.77222986e-2,
2799 0.32241039e-2, 0.89882920e-2, -0.67167236e-2,
2800 -0.13049241e-1, 0.18786468e-1, 0.14484097e-1};
2802 Double_t U5[] = {0, -0.24864376e-1, -0.10368495e-2, 0.14330117e-2,
2803 0.20052730e-3, 0.18751903e-2, 0.12668869e-2,
2804 0.48736023e-3, 0.34850854e-2, 0. ,
2805 -0.36597173e-3, 0.19372124e-2, 0.70761825e-3, 0.46898375e-3};
2807 Double_t U6[] = {0, 0.35855696e-1, -0.27542114e-1, 0.12631023e-1,
2808 -0.30188807e-2, -0.84479939e-3, 0. ,
2809 0.45675843e-3, -0.69836141e-2, 0.39876546e-2,
2810 -0.36055679e-2, 0. , 0.15298434e-2, 0.19247256e-2};
2812 Double_t U7[] = {0, 0.10234691e+2, -0.35619655e+1, 0.69387764e+0,
2813 -0.14047599e+0, -0.19952390e+1, -0.45679694e+0,
2814 0. , 0.50505298e+0};
2815 Double_t U8[] = {0, 0.21487518e+2, -0.11825253e+2, 0.43133087e+1,
2816 -0.14500543e+1, -0.34343169e+1, -0.11063164e+1,
2817 -0.21000819e+0, 0.17891643e+1, -0.89601916e+0,
2818 0.39120793e+0, 0.73410606e+0, 0. ,-0.32454506e+0};
2820 Double_t V1[] = {0, 0.27827257e+0, -0.14227603e-2, 0.24848327e-2,
2821 0. , 0.45091424e-1, 0.80559636e-2,
2822 -0.38974523e-2, 0. , -0.30634124e-2,
2823 0.75633702e-3, 0.54730726e-2, 0.19792507e-2};
2825 Double_t V2[] = {0, 0.41421789e+0, -0.30061649e-1, 0.52249697e-2,
2826 0. , 0.12693873e+0, 0.22999801e-1,
2827 -0.86792801e-2, 0.31875584e-1, -0.61757928e-2,
2828 0. , 0.19716857e-1, 0.32596742e-2};
2830 Double_t V3[] = {0, 0.20191056e+0, -0.46831422e-1, 0.96777473e-2,
2831 -0.17995317e-2, 0.53921588e-1, 0.35068740e-2,
2832 -0.12621494e-1, -0.54996531e-2, -0.90029985e-2,
2833 0.34958743e-2, 0.18513506e-1, 0.68332334e-2,-0.12940502e-2};
2835 Double_t V4[] = {0, 0.13206081e+1, 0.10036618e+0, -0.22015201e-1,
2836 0.61667091e-2, -0.14986093e+0, -0.12720568e-1,
2837 0.24972042e-1, -0.97751962e-2, 0.26087455e-1,
2838 -0.11399062e-1, -0.48282515e-1, -0.98552378e-2};
2840 Double_t V5[] = {0, 0.16435243e-1, 0.36051400e-1, 0.23036520e-2,
2841 -0.61666343e-3, -0.10775802e-1, 0.51476061e-2,
2842 0.56856517e-2, -0.13438433e-1, 0. ,
2843 0. , -0.25421507e-2, 0.20169108e-2,-0.15144931e-2};
2845 Double_t V6[] = {0, 0.33432405e-1, 0.60583916e-2, -0.23381379e-2,
2846 0.83846081e-3, -0.13346861e-1, -0.17402116e-2,
2847 0.21052496e-2, 0.15528195e-2, 0.21900670e-2,
2848 -0.13202847e-2, -0.45124157e-2, -0.15629454e-2, 0.22499176e-3};
2850 Double_t V7[] = {0, 0.54529572e+1, -0.90906096e+0, 0.86122438e-1,
2851 0. , -0.12218009e+1, -0.32324120e+0,
2852 -0.27373591e-1, 0.12173464e+0, 0. ,
2853 0. , 0.40917471e-1};
2855 Double_t V8[] = {0, 0.93841352e+1, -0.16276904e+1, 0.16571423e+0,
2856 0. , -0.18160479e+1, -0.50919193e+0,
2857 -0.51384654e-1, 0.21413992e+0, 0. ,
2858 0. , 0.66596366e-1};
2860 Double_t W1[] = {0, 0.29712951e+0, 0.97572934e-2, 0. ,
2861 -0.15291686e-2, 0.35707399e-1, 0.96221631e-2,
2862 -0.18402821e-2, -0.49821585e-2, 0.18831112e-2,
2863 0.43541673e-2, 0.20301312e-2, -0.18723311e-2,-0.73403108e-3};
2865 Double_t W2[] = {0, 0.40882635e+0, 0.14474912e-1, 0.25023704e-2,
2866 -0.37707379e-2, 0.18719727e+0, 0.56954987e-1,
2867 0. , 0.23020158e-1, 0.50574313e-2,
2868 0.94550140e-2, 0.19300232e-1};
2870 Double_t W3[] = {0, 0.16861629e+0, 0. , 0.36317285e-2,
2871 -0.43657818e-2, 0.30144338e-1, 0.13891826e-1,
2872 -0.58030495e-2, -0.38717547e-2, 0.85359607e-2,
2873 0.14507659e-1, 0.82387775e-2, -0.10116105e-1,-0.55135670e-2};
2875 Double_t W4[] = {0, 0.13493891e+1, -0.26863185e-2, -0.35216040e-2,
2876 0.24434909e-1, -0.83447911e-1, -0.48061360e-1,
2877 0.76473951e-2, 0.24494430e-1, -0.16209200e-1,
2878 -0.37768479e-1, -0.47890063e-1, 0.17778596e-1, 0.13179324e-1};
2880 Double_t W5[] = {0, 0.10264945e+0, 0.32738857e-1, 0. ,
2881 0.43608779e-2, -0.43097757e-1, -0.22647176e-2,
2882 0.94531290e-2, -0.12442571e-1, -0.32283517e-2,
2883 -0.75640352e-2, -0.88293329e-2, 0.52537299e-2, 0.13340546e-2};
2885 Double_t W6[] = {0, 0.29568177e-1, -0.16300060e-2, -0.21119745e-3,
2886 0.23599053e-2, -0.48515387e-2, -0.40797531e-2,
2887 0.40403265e-3, 0.18200105e-2, -0.14346306e-2,
2888 -0.39165276e-2, -0.37432073e-2, 0.19950380e-2, 0.12222675e-2};
2890 Double_t W8[] = {0, 0.66184645e+1, -0.73866379e+0, 0.44693973e-1,
2891 0. , -0.14540925e+1, -0.39529833e+0,
2892 -0.44293243e-1, 0.88741049e-1};
2895 if (rkappa <0.01 || rkappa >12) {
2896 Error(
"Vavilov distribution",
"illegal value of kappa");
2904 Double_t x,
y, xx, yy,
x2,
x3, y2, y3,
xy,
p2,
p3, q2, q3, pq;
2905 if (rkappa >= 0.29) {
2910 AC[0] = (-0.032227*beta2-0.074275)*rkappa + (0.24533*beta2+0.070152)*wk + (-0.55610*beta2-3.1579);
2911 AC[8] = (-0.013483*beta2-0.048801)*rkappa + (-1.6921*beta2+8.3656)*wk + (-0.73275*beta2-3.5226);
2914 for (j=1; j<=4; j++) {
2915 DRK[j+1] = DRK[1]*DRK[j];
2916 DSIGM[j+1] = DSIGM[1]*DSIGM[j];
2917 ALFA[j+1] = (FNINV[j]-beta2*FNINV[j+1])*DRK[j];
2921 HC[2]=ALFA[3]*DSIGM[3];
2922 HC[3]=(3*ALFA[2]*ALFA[2] + ALFA[4])*DSIGM[4]-3;
2923 HC[4]=(10*ALFA[2]*ALFA[3]+ALFA[5])*DSIGM[5]-10*HC[2];
2927 for (j=2; j<=7; j++)
2929 HC[8]=0.39894228*HC[1];
2931 else if (rkappa >=0.22) {
2934 x = 1+(rkappa-BKMXX3)*FBKX3;
2948 AC[1] = W1[1] + W1[2]*x + W1[4]*x3 + W1[5]*y + W1[6]*y2 + W1[7]*y3 +
2949 W1[8]*xy + W1[9]*p2 + W1[10]*p3 + W1[11]*q2 + W1[12]*q3 + W1[13]*pq;
2950 AC[2] = W2[1] + W2[2]*x + W2[3]*x2 + W2[4]*x3 + W2[5]*y + W2[6]*y2 +
2951 W2[8]*xy + W2[9]*p2 + W2[10]*p3 + W2[11]*q2;
2952 AC[3] = W3[1] + W3[3]*x2 + W3[4]*x3 + W3[5]*y + W3[6]*y2 + W3[7]*y3 +
2953 W3[8]*xy + W3[9]*p2 + W3[10]*p3 + W3[11]*q2 + W3[12]*q3 + W3[13]*pq;
2954 AC[4] = W4[1] + W4[2]*x + W4[3]*x2 + W4[4]*x3 + W4[5]*y + W4[6]*y2 + W4[7]*y3 +
2955 W4[8]*xy + W4[9]*p2 + W4[10]*p3 + W4[11]*q2 + W4[12]*q3 + W4[13]*pq;
2956 AC[5] = W5[1] + W5[2]*x + W5[4]*x3 + W5[5]*y + W5[6]*y2 + W5[7]*y3 +
2957 W5[8]*xy + W5[9]*p2 + W5[10]*p3 + W5[11]*q2 + W5[12]*q3 + W5[13]*pq;
2958 AC[6] = W6[1] + W6[2]*x + W6[3]*x2 + W6[4]*x3 + W6[5]*y + W6[6]*y2 + W6[7]*y3 +
2959 W6[8]*xy + W6[9]*p2 + W6[10]*p3 + W6[11]*q2 + W6[12]*q3 + W6[13]*pq;
2960 AC[8] = W8[1] + W8[2]*x + W8[3]*x2 + W8[5]*y + W8[6]*y2 + W8[7]*y3 + W8[8]*
xy;
2962 }
else if (rkappa >= 0.12) {
2965 x = 1 + (rkappa-BKMXX2)*FBKX2;
2979 AC[1] = V1[1] + V1[2]*x + V1[3]*x2 + V1[5]*y + V1[6]*y2 + V1[7]*y3 +
2980 V1[9]*p2 + V1[10]*p3 + V1[11]*q2 + V1[12]*q3;
2981 AC[2] = V2[1] + V2[2]*x + V2[3]*x2 + V2[5]*y + V2[6]*y2 + V2[7]*y3 +
2982 V2[8]*xy + V2[9]*p2 + V2[11]*q2 + V2[12]*q3;
2983 AC[3] = V3[1] + V3[2]*x + V3[3]*x2 + V3[4]*x3 + V3[5]*y + V3[6]*y2 + V3[7]*y3 +
2984 V3[8]*xy + V3[9]*p2 + V3[10]*p3 + V3[11]*q2 + V3[12]*q3 + V3[13]*pq;
2985 AC[4] = V4[1] + V4[2]*x + V4[3]*x2 + V4[4]*x3 + V4[5]*y + V4[6]*y2 + V4[7]*y3 +
2986 V4[8]*xy + V4[9]*p2 + V4[10]*p3 + V4[11]*q2 + V4[12]*q3;
2987 AC[5] = V5[1] + V5[2]*x + V5[3]*x2 + V5[4]*x3 + V5[5]*y + V5[6]*y2 + V5[7]*y3 +
2988 V5[8]*xy + V5[11]*q2 + V5[12]*q3 + V5[13]*pq;
2989 AC[6] = V6[1] + V6[2]*x + V6[3]*x2 + V6[4]*x3 + V6[5]*y + V6[6]*y2 + V6[7]*y3 +
2990 V6[8]*xy + V6[9]*p2 + V6[10]*p3 + V6[11]*q2 + V6[12]*q3 + V6[13]*pq;
2991 AC[7] = V7[1] + V7[2]*x + V7[3]*x2 + V7[5]*y + V7[6]*y2 + V7[7]*y3 +
2992 V7[8]*xy + V7[11]*q2;
2993 AC[8] = V8[1] + V8[2]*x + V8[3]*x2 + V8[5]*y + V8[6]*y2 + V8[7]*y3 +
2994 V8[8]*xy + V8[11]*q2;
2998 if (rkappa >=0.02) itype = 3;
3000 x = 1+(rkappa-BKMXX1)*FBKX1;
3015 AC[1] = U1[1] + U1[2]*x + U1[3]*x2 + U1[5]*y + U1[6]*y2 + U1[7]*y3 +
3016 U1[8]*xy + U1[10]*p3 + U1[12]*q3 + U1[13]*pq;
3017 AC[2] = U2[1] + U2[2]*x + U2[3]*x2 + U2[5]*y + U2[6]*y2 + U2[7]*y3 +
3018 U2[8]*xy + U2[9]*p2 + U2[10]*p3 + U2[12]*q3 + U2[13]*pq;
3019 AC[3] = U3[1] + U3[2]*x + U3[3]*x2 + U3[5]*y + U3[6]*y2 + U3[7]*y3 +
3020 U3[8]*xy + U3[9]*p2 + U3[10]*p3 + U3[11]*q2 + U3[12]*q3 + U3[13]*pq;
3021 AC[4] = U4[1] + U4[2]*x + U4[3]*x2 + U4[4]*x3 + U4[5]*y + U4[6]*y2 + U4[7]*y3 +
3022 U4[8]*xy + U4[9]*p2 + U4[10]*p3 + U4[11]*q2 + U4[12]*q3;
3023 AC[5] = U5[1] + U5[2]*x + U5[3]*x2 + U5[4]*x3 + U5[5]*y + U5[6]*y2 + U5[7]*y3 +
3024 U5[8]*xy + U5[10]*p3 + U5[11]*q2 + U5[12]*q3 + U5[13]*pq;
3025 AC[6] = U6[1] + U6[2]*x + U6[3]*x2 + U6[4]*x3 + U6[5]*y + U6[7]*y3 +
3026 U6[8]*xy + U6[9]*p2 + U6[10]*p3 + U6[12]*q3 + U6[13]*pq;
3027 AC[7] = U7[1] + U7[2]*x + U7[3]*x2 + U7[4]*x3 + U7[5]*y + U7[6]*y2 + U7[8]*
xy;
3029 AC[8] = U8[1] + U8[2]*x + U8[3]*x2 + U8[4]*x3 + U8[5]*y + U8[6]*y2 + U8[7]*y3 +
3030 U8[8]*xy + U8[9]*p2 + U8[10]*p3 + U8[11]*q2 + U8[13]*pq;
3034 AC[9] = (AC[8] - AC[0])/npt;
3037 x = (AC[7]-AC[8])/(AC[7]*AC[8]);
3040 AC[11] = p2*(AC[1]*
TMath::Exp(-AC[2]*(AC[7]+AC[5]*p2)-
3041 AC[3]*
TMath::Exp(-AC[4]*(AC[7]+AC[6]*p2)))-0.045*y/AC[7])/(1+x*y*AC[7]);
3042 AC[12] = (0.045+x*AC[11])*y;
3044 if (itype == 4) AC[13] = 0.995/
LandauI(AC[8]);
3046 if (mode==0)
return;
3053 for (k=1; k<=npt; k++) {
3056 WCM[k] = WCM[k-1] + fl +
fu;
3060 for (k=1; k<=npt; k++)
3070 if (rlam < AC[0] || rlam > AC[8])
3077 x = (rlam + HC[0])*HC[1];
3080 for (k=2; k<=8; k++) {
3082 h[k+1] = x*h[k]-fn*h[k-1];
3085 for (k=2; k<=6; k++)
3089 else if (itype == 2) {
3093 else if (itype == 3) {
3099 v = (AC[11]*x + AC[12])*x;
3102 else if (itype == 4) {
double lognormal_pdf(double x, double m, double s, double x0=0)
Probability density function of the lognormal distribution.
Double_t BesselI(Int_t n, Double_t x)
Compute the Integer Order Modified Bessel function I_n(x) for n=0,1,2,...
Double_t FDist(Double_t F, Double_t N, Double_t M)
Computes the density function of F-distribution (probability function, integral of density...
double erf(double x)
Error function encountered in integrating the normal distribution.
Double_t Landau(Double_t x, Double_t mpv=0, Double_t sigma=1, Bool_t norm=kFALSE)
The LANDAU function.
Double_t ErfInverse(Double_t x)
returns the inverse error function x must be <-1<x<1
Double_t BreitWigner(Double_t x, Double_t mean=0, Double_t gamma=1)
Calculate a Breit Wigner function with mean and gamma.
Double_t FDistI(Double_t F, Double_t N, Double_t M)
Calculates the cumulative distribution function of F-distribution, this function occurs in the statis...
Double_t PoissonI(Double_t x, Double_t par)
compute the Poisson distribution function for (x,par) This is a non-smooth function.
Float_t Normalize(Float_t v[3])
Normalize a vector v in place.
static double p3(double t, double a, double b, double c, double d)
Double_t KolmogorovProb(Double_t z)
Calculates the Kolmogorov distribution function, which gives the probability that Kolmogorov's test ...
Double_t LaplaceDistI(Double_t x, Double_t alpha=0, Double_t beta=1)
Computes the distribution function of Laplace distribution at point x, with location parameter alpha ...
Double_t StudentQuantile(Double_t p, Double_t ndf, Bool_t lower_tail=kTRUE)
Computes quantiles of the Student's t-distribution 1st argument is the probability, at which the quantile is computed 2nd argument - the number of degrees of freedom of the Student distribution When the 3rd argument lower_tail is kTRUE (default)- the algorithm returns such x0, that P(x < x0)=p upper tail (lower_tail is kFALSE)- the algorithm returns such x0, that P(x > x0)=p the algorithm was taken from G.W.Hill, "Algorithm 396, Student's t-quantiles" "Communications of the ACM", 13(10), October 1970.
Double_t NormQuantile(Double_t p)
Computes quantiles for standard normal distribution N(0, 1) at probability p ALGORITHM AS241 APPL...
Double_t BetaDist(Double_t x, Double_t p, Double_t q)
Computes the probability density function of the Beta distribution (the distribution function is comp...
Double_t LaplaceDist(Double_t x, Double_t alpha=0, Double_t beta=1)
Computes the probability density function of Laplace distribution at point x, with location parameter...
void ToUpper()
Change string to upper case.
double inc_beta(double x, double a, double b)
Calculates the normalized (regularized) incomplete beta function.
Double_t Log2(Double_t x)
Double_t StruveH1(Double_t x)
Struve Functions of Order 1.
Short_t Min(Short_t a, Short_t b)
void BubbleHigh(Int_t Narr, Double_t *arr1, Int_t *arr2)
Bubble sort variant to obtain the order of an array's elements into an index in order to do more usef...
Int_t FloorNint(Double_t x)
Double_t Gamma(Double_t z)
Computation of gamma(z) for all z.
double tgamma(double x)
The gamma function is defined to be the extension of the factorial to real numbers.
Double_t BesselJ1(Double_t x)
Returns the Bessel function J1(x) for any real x.
Double_t GamCf(Double_t a, Double_t x)
Computation of the incomplete gamma function P(a,x) via its continued fraction representation.
Double_t Prob(Double_t chi2, Int_t ndf)
Computation of the probability for a certain Chi-squared (chi2) and number of degrees of freedom (ndf...
Double_t StudentI(Double_t T, Double_t ndf)
Calculates the cumulative distribution function of Student's t-distribution second parameter stands f...
UInt_t Hash(ECaseCompare cmp=kExact) const
Return hash value.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
double beta(double x, double y)
Calculates the beta function.
double erfc(double x)
Complementary error function.
Double_t BesselY1(Double_t x)
Returns the Bessel function Y1(x) for positive x.
Double_t ChisquareQuantile(Double_t p, Double_t ndf)
Evaluate the quantiles of the chi-squared probability distribution function.
static const double x2[5]
double landau_pdf(double x, double xi=1, double x0=0)
Probability density function of the Landau distribution: with where .
void Quantiles(Int_t n, Int_t nprob, Double_t *x, Double_t *quantiles, Double_t *prob, Bool_t isSorted=kTRUE, Int_t *index=0, Int_t type=7)
Computes sample quantiles, corresponding to the given probabilities Parameters: x -the data sample n ...
Double_t Log10(Double_t x)
Double_t BesselI1(Double_t x)
Compute the modified Bessel function I_1(x) for any real x.
static double p2(double t, double a, double b, double c)
Double_t Freq(Double_t x)
Computation of the normal frequency function freq(x).
void Info(const char *location, const char *msgfmt,...)
Double_t VavilovDenEval(Double_t rlam, Double_t *AC, Double_t *HC, Int_t itype)
Internal function, called by Vavilov and VavilovSet.
Double_t GamSer(Double_t a, Double_t x)
Computation of the incomplete gamma function P(a,x) via its series representation.
double fdistribution_cdf(double x, double n, double m, double x0=0)
Cumulative distribution function of the F-distribution (lower tail).
double gamma_pdf(double x, double alpha, double theta, double x0=0)
Probability density function of the gamma distribution.
void BubbleLow(Int_t Narr, Double_t *arr1, Int_t *arr2)
Opposite ordering of the array arr2[] to that of BubbleHigh.
void Error(const char *location, const char *msgfmt,...)
Double_t Erfc(Double_t x)
Compute the complementary error function erfc(x).
double landau_cdf(double x, double xi=1, double x0=0)
Cumulative distribution function of the Landau distribution (lower tail).
Double_t DiLog(Double_t x)
The DiLogarithm function Code translated by R.Brun from CERNLIB DILOG function C332.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
Double_t VavilovI(Double_t x, Double_t kappa, Double_t beta2)
Returns the value of the Vavilov distribution function Parameters: 1st - the point were the density f...
Double_t BesselY0(Double_t x)
Returns the Bessel function Y0(x) for positive x.
Double_t Erf(Double_t x)
Computation of the error function erf(x).
Double_t BetaDistI(Double_t x, Double_t p, Double_t q)
Computes the distribution function of the Beta distribution.
unsigned int r1[N_CITIES]
Double_t StruveL1(Double_t x)
Modified Struve Function of Order 1.
Double_t Voigt(Double_t x, Double_t sigma, Double_t lg, Int_t r=4)
Computation of Voigt function (normalised).
void VavilovSet(Double_t rkappa, Double_t beta2, Bool_t mode, Double_t *WCM, Double_t *AC, Double_t *HC, Int_t &itype, Int_t &npt)
Internal function, called by Vavilov and VavilovI.
Bool_t Permute(Int_t n, Int_t *a)
Simple recursive algorithm to find the permutations of n natural numbers, not necessarily all distinc...
Double_t StruveL0(Double_t x)
Modified Struve Function of Order 0.
double fdistribution_pdf(double x, double n, double m, double x0=0)
Probability density function of the F-distribution.
Double_t KolmogorovTest(Int_t na, const Double_t *a, Int_t nb, const Double_t *b, Option_t *option)
Statistical test whether two one-dimensional sets of points are compatible with coming from the same ...
#define NamespaceImp(name)
Double_t Binomial(Int_t n, Int_t k)
Calculate the binomial coefficient n over k.
Double_t LandauI(Double_t x)
Returns the value of the Landau distribution function at point x.
Double_t BesselJ0(Double_t x)
Returns the Bessel function J0(x) for any real x.
static double p1(double t, double a, double b)
Double_t ErfcInverse(Double_t x)
ULong_t Hash(const void *txt, Int_t ntxt)
Calculates hash index from any char string.
Double_t Poisson(Double_t x, Double_t par)
compute the Poisson distribution function for (x,par) The Poisson PDF is implemented by means of Eule...
Double_t Student(Double_t T, Double_t ndf)
Computes density function for Student's t- distribution (the probability function (integral of densit...
Double_t Beta(Double_t p, Double_t q)
Calculates Beta-function Gamma(p)*Gamma(q)/Gamma(p+q).
Double_t Gaus(Double_t x, Double_t mean=0, Double_t sigma=1, Bool_t norm=kFALSE)
Calculate a gaussian function with mean and sigma.
Double_t BesselI0(Double_t x)
Compute the modified Bessel function I_0(x) for any real x.
Double_t BesselK(Int_t n, Double_t x)
Compute the Integer Order Modified Bessel function K_n(x) for n=0,1,2,...
Double_t StruveH0(Double_t x)
Struve Functions of Order 0.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Double_t Hypot(Double_t x, Double_t y)
Double_t BesselK0(Double_t x)
Compute the modified Bessel function K_0(x) for positive real x.
Double_t BinomialI(Double_t p, Int_t n, Int_t k)
Suppose an event occurs with probability p per trial Then the probability P of its occuring k or more...
Double_t BetaCf(Double_t x, Double_t a, Double_t b)
Continued fraction evaluation by modified Lentz's method used in calculation of incomplete Beta funct...
Element KOrdStat(Size n, const Element *a, Size k, Size *work=0)
double chisquared_cdf_c(double x, double r, double x0=0)
Complement of the cumulative distribution function of the distribution with degrees of freedom (upp...
double f2(const double *x)
Double_t GammaDist(Double_t x, Double_t gamma, Double_t mu=0, Double_t beta=1)
Computes the density function of Gamma distribution at point x.
Short_t Max(Short_t a, Short_t b)
Double_t Factorial(Int_t i)
Compute factorial(n).
Double_t BesselK1(Double_t x)
Compute the modified Bessel function K_1(x) for positive real x.
Double_t LnGamma(Double_t z)
Computation of ln[gamma(z)] for all z.
Double_t LogNormal(Double_t x, Double_t sigma, Double_t theta=0, Double_t m=1)
Computes the density of LogNormal distribution at point x.
Bool_t RootsCubic(const Double_t coef[4], Double_t &a, Double_t &b, Double_t &c)
Calculates roots of polynomial of 3rd order a*x^3 + b*x^2 + c*x + d, where a == coef[3], b == coef[2], c == coef[1], d == coef[0] coef[3] must be different from 0 If the boolean returned by the method is false: ==> there are 3 real roots a,b,c If the boolean returned by the method is true: ==> there is one real root a and 2 complex conjugates roots (b+i*c,b-i*c) Author: Francois-Xavier Gentit.
Double_t Sqrt(Double_t x)
double lgamma(double x)
Calculates the logarithm of the gamma function.
Double_t BetaIncomplete(Double_t x, Double_t a, Double_t b)
Calculates the incomplete Beta-function.
Double_t CauchyDist(Double_t x, Double_t t=0, Double_t s=1)
Computes the density of Cauchy distribution at point x by default, standard Cauchy distribution is us...
double inc_gamma(double a, double x)
Calculates the normalized (regularized) lower incomplete gamma function (lower integral) ...
double norm(double *x, double *p)
Double_t Vavilov(Double_t x, Double_t kappa, Double_t beta2)
Returns the value of the Vavilov density function Parameters: 1st - the point were the density functi...
static const double x3[11]