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;
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);
577 return Exp(lnpoisson);
621 if (ndf <= 0)
return 0;
624 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)))));
1426 const Double_t p1=-0.57721566, p2=0.42278420,
p3=0.23069756,
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))))));
2266 if ((x<mu) || (gamma<=0) || (beta <=0)) {
2267 Error(
"TMath::GammaDist",
"illegal parameter values x = %f , gamma = %f beta = %f",x,gamma,beta);
2326 if ((x<theta) || (sigma<=0) || (m<=0)) {
2327 Error(
"TMath::Lognormal",
"illegal parameter values");
2344 if ((p<=0)||(p>=1)) {
2345 Error(
"TMath::NormQuantile",
"probability outside (0, 1)");
2349 Double_t a0 = 3.3871328727963666080e0;
2350 Double_t a1 = 1.3314166789178437745e+2;
2351 Double_t a2 = 1.9715909503065514427e+3;
2352 Double_t a3 = 1.3731693765509461125e+4;
2353 Double_t a4 = 4.5921953931549871457e+4;
2354 Double_t a5 = 6.7265770927008700853e+4;
2355 Double_t a6 = 3.3430575583588128105e+4;
2356 Double_t a7 = 2.5090809287301226727e+3;
2357 Double_t b1 = 4.2313330701600911252e+1;
2358 Double_t b2 = 6.8718700749205790830e+2;
2359 Double_t b3 = 5.3941960214247511077e+3;
2360 Double_t b4 = 2.1213794301586595867e+4;
2361 Double_t b5 = 3.9307895800092710610e+4;
2362 Double_t b6 = 2.8729085735721942674e+4;
2363 Double_t b7 = 5.2264952788528545610e+3;
2364 Double_t c0 = 1.42343711074968357734e0;
2368 Double_t c4 = 1.27045825245236838258e0;
2369 Double_t c5 = 2.41780725177450611770e-1;
2370 Double_t c6 = 2.27238449892691845833e-2;
2371 Double_t c7 = 7.74545014278341407640e-4;
2372 Double_t d1 = 2.05319162663775882187e0;
2373 Double_t d2 = 1.67638483018380384940e0;
2374 Double_t d3 = 6.89767334985100004550e-1;
2375 Double_t d4 = 1.48103976427480074590e-1;
2376 Double_t d5 = 1.51986665636164571966e-2;
2377 Double_t d6 = 5.47593808499534494600e-4;
2378 Double_t d7 = 1.05075007164441684324e-9;
2379 Double_t e0 = 6.65790464350110377720e0;
2380 Double_t e1 = 5.46378491116411436990e0;
2381 Double_t e2 = 1.78482653991729133580e0;
2382 Double_t e3 = 2.96560571828504891230e-1;
2383 Double_t e4 = 2.65321895265761230930e-2;
2384 Double_t e5 = 1.24266094738807843860e-3;
2385 Double_t e6 = 2.71155556874348757815e-5;
2386 Double_t e7 = 2.01033439929228813265e-7;
2389 Double_t f3 = 1.48753612908506148525e-2;
2390 Double_t f4 = 7.86869131145613259100e-4;
2391 Double_t f5 = 1.84631831751005468180e-5;
2392 Double_t f6 = 1.42151175831644588870e-7;
2393 Double_t f7 = 2.04426310338993978564e-15;
2404 quantile = q* (((((((a7 * r + a6) * r + a5) * r + a4) * r + a3)
2405 * r + a2) * r + a1) * r + a0) /
2406 (((((((b7 * r + b6) * r + b5) * r + b4) * r + b3)
2407 * r + b2) * r + b1) * r + 1.);
2418 quantile=(((((((c7 * r + c6) * r + c5) * r + c4) * r + c3)
2419 * r +
c2) * r + c1) * r + c0) /
2420 (((((((d7 * r + d6) * r + d5) * r + d4) * r + d3)
2421 * r + d2) * r + d1) * r + 1);
2424 quantile=(((((((e7 * r + e6) * r + e5) * r + e4) * r + e3)
2425 * r + e2) * r + e1) * r + e0) /
2426 (((((((f7 * r + f6) * r + f5) * r + f4) * r + f3)
2427 * r + f2) * r +
f1) * r + 1);
2429 if (q<0) quantile=-quantile;
2449 for(i=n-2; i>-1; i--) {
2456 if(i1==-1)
return kFALSE;
2460 for(i=n-1;i>i1;i--) {
2471 for(i=0;i<(n-i1-1)/2;i++) {
2559 if (ndf<1 || p>=1 || p<=0) {
2560 Error(
"TMath::StudentQuantile",
"illegal parameter values");
2563 if ((lower_tail && p>0.5)||(!lower_tail && p<0.5)){
2565 q=2*(lower_tail ? (1-p) : p);
2568 q=2*(lower_tail? p : (1-p));
2580 Double_t c=((20700*a/b -98)*a-16)*a+96.36;
2588 if (ndf<5) c+=0.3*(ndf-4.5)*(x+0.6);
2589 c+=(((0.05*d*x-5.)*x-7.)*x-2.)*x +b;
2590 y=(((((0.4*y+6.3)*y+36.)*y+94.5)/c - y-3.)/b+1)*x;
2595 y=((1./(((ndf+6.)/(ndf*
y)-0.089*d-0.822)*(ndf+2.)*3)+0.5/(ndf+4.))*y-1.)*
2596 (ndf+1.)/(ndf+2.)+1/
y;
2601 if(neg) quantile=-quantile;
2632 TMath::VavilovSet(kappa, beta2, 0, 0, ac, hc, itype, npt);
2633 Double_t v = TMath::VavilovDenEval(x, ac, hc, itype);
2662 TMath::VavilovSet(kappa, beta2, 1, wcm, ac, hc, itype, npt);
2663 if (x < ac[0]) v = 0;
2664 else if (x >=ac[8]) v = 1;
2667 k =
Int_t(xx*ac[10]);
2668 v =
TMath::Min(wcm[k] + (xx - k*ac[9])*(wcm[k+1]-wcm[k])*ac[10], 1.);
2694 Double_t BKMNX1 = 0.02, BKMNY1 = 0.05, BKMNX2 = 0.12, BKMNY2 = 0.05,
2695 BKMNX3 = 0.22, BKMNY3 = 0.05, BKMXX1 = 0.1 , BKMXY1 = 1,
2696 BKMXX2 = 0.2 , BKMXY2 = 1 , BKMXX3 = 0.3 , BKMXY3 = 1;
2698 Double_t FBKX1 = 2/(BKMXX1-BKMNX1), FBKX2 = 2/(BKMXX2-BKMNX2),
2699 FBKX3 = 2/(BKMXX3-BKMNX3), FBKY1 = 2/(BKMXY1-BKMNY1),
2700 FBKY2 = 2/(BKMXY2-BKMNY2), FBKY3 = 2/(BKMXY3-BKMNY3);
2702 Double_t FNINV[] = {0, 1, 0.5, 0.33333333, 0.25, 0.2};
2704 Double_t EDGEC[]= {0, 0, 0.16666667e+0, 0.41666667e-1, 0.83333333e-2,
2705 0.13888889e-1, 0.69444444e-2, 0.77160493e-3};
2707 Double_t U1[] = {0, 0.25850868e+0, 0.32477982e-1, -0.59020496e-2,
2708 0. , 0.24880692e-1, 0.47404356e-2,
2709 -0.74445130e-3, 0.73225731e-2, 0. ,
2710 0.11668284e-2, 0. , -0.15727318e-2,-0.11210142e-2};
2712 Double_t U2[] = {0, 0.43142611e+0, 0.40797543e-1, -0.91490215e-2,
2713 0. , 0.42127077e-1, 0.73167928e-2,
2714 -0.14026047e-2, 0.16195241e-1, 0.24714789e-2,
2715 0.20751278e-2, 0. , -0.25141668e-2,-0.14064022e-2};
2717 Double_t U3[] = {0, 0.25225955e+0, 0.64820468e-1, -0.23615759e-1,
2718 0. , 0.23834176e-1, 0.21624675e-2,
2719 -0.26865597e-2, -0.54891384e-2, 0.39800522e-2,
2720 0.48447456e-2, -0.89439554e-2, -0.62756944e-2,-0.24655436e-2};
2722 Double_t U4[] = {0, 0.12593231e+1, -0.20374501e+0, 0.95055662e-1,
2723 -0.20771531e-1, -0.46865180e-1, -0.77222986e-2,
2724 0.32241039e-2, 0.89882920e-2, -0.67167236e-2,
2725 -0.13049241e-1, 0.18786468e-1, 0.14484097e-1};
2727 Double_t U5[] = {0, -0.24864376e-1, -0.10368495e-2, 0.14330117e-2,
2728 0.20052730e-3, 0.18751903e-2, 0.12668869e-2,
2729 0.48736023e-3, 0.34850854e-2, 0. ,
2730 -0.36597173e-3, 0.19372124e-2, 0.70761825e-3, 0.46898375e-3};
2732 Double_t U6[] = {0, 0.35855696e-1, -0.27542114e-1, 0.12631023e-1,
2733 -0.30188807e-2, -0.84479939e-3, 0. ,
2734 0.45675843e-3, -0.69836141e-2, 0.39876546e-2,
2735 -0.36055679e-2, 0. , 0.15298434e-2, 0.19247256e-2};
2737 Double_t U7[] = {0, 0.10234691e+2, -0.35619655e+1, 0.69387764e+0,
2738 -0.14047599e+0, -0.19952390e+1, -0.45679694e+0,
2739 0. , 0.50505298e+0};
2740 Double_t U8[] = {0, 0.21487518e+2, -0.11825253e+2, 0.43133087e+1,
2741 -0.14500543e+1, -0.34343169e+1, -0.11063164e+1,
2742 -0.21000819e+0, 0.17891643e+1, -0.89601916e+0,
2743 0.39120793e+0, 0.73410606e+0, 0. ,-0.32454506e+0};
2745 Double_t V1[] = {0, 0.27827257e+0, -0.14227603e-2, 0.24848327e-2,
2746 0. , 0.45091424e-1, 0.80559636e-2,
2747 -0.38974523e-2, 0. , -0.30634124e-2,
2748 0.75633702e-3, 0.54730726e-2, 0.19792507e-2};
2750 Double_t V2[] = {0, 0.41421789e+0, -0.30061649e-1, 0.52249697e-2,
2751 0. , 0.12693873e+0, 0.22999801e-1,
2752 -0.86792801e-2, 0.31875584e-1, -0.61757928e-2,
2753 0. , 0.19716857e-1, 0.32596742e-2};
2755 Double_t V3[] = {0, 0.20191056e+0, -0.46831422e-1, 0.96777473e-2,
2756 -0.17995317e-2, 0.53921588e-1, 0.35068740e-2,
2757 -0.12621494e-1, -0.54996531e-2, -0.90029985e-2,
2758 0.34958743e-2, 0.18513506e-1, 0.68332334e-2,-0.12940502e-2};
2760 Double_t V4[] = {0, 0.13206081e+1, 0.10036618e+0, -0.22015201e-1,
2761 0.61667091e-2, -0.14986093e+0, -0.12720568e-1,
2762 0.24972042e-1, -0.97751962e-2, 0.26087455e-1,
2763 -0.11399062e-1, -0.48282515e-1, -0.98552378e-2};
2765 Double_t V5[] = {0, 0.16435243e-1, 0.36051400e-1, 0.23036520e-2,
2766 -0.61666343e-3, -0.10775802e-1, 0.51476061e-2,
2767 0.56856517e-2, -0.13438433e-1, 0. ,
2768 0. , -0.25421507e-2, 0.20169108e-2,-0.15144931e-2};
2770 Double_t V6[] = {0, 0.33432405e-1, 0.60583916e-2, -0.23381379e-2,
2771 0.83846081e-3, -0.13346861e-1, -0.17402116e-2,
2772 0.21052496e-2, 0.15528195e-2, 0.21900670e-2,
2773 -0.13202847e-2, -0.45124157e-2, -0.15629454e-2, 0.22499176e-3};
2775 Double_t V7[] = {0, 0.54529572e+1, -0.90906096e+0, 0.86122438e-1,
2776 0. , -0.12218009e+1, -0.32324120e+0,
2777 -0.27373591e-1, 0.12173464e+0, 0. ,
2778 0. , 0.40917471e-1};
2780 Double_t V8[] = {0, 0.93841352e+1, -0.16276904e+1, 0.16571423e+0,
2781 0. , -0.18160479e+1, -0.50919193e+0,
2782 -0.51384654e-1, 0.21413992e+0, 0. ,
2783 0. , 0.66596366e-1};
2785 Double_t W1[] = {0, 0.29712951e+0, 0.97572934e-2, 0. ,
2786 -0.15291686e-2, 0.35707399e-1, 0.96221631e-2,
2787 -0.18402821e-2, -0.49821585e-2, 0.18831112e-2,
2788 0.43541673e-2, 0.20301312e-2, -0.18723311e-2,-0.73403108e-3};
2790 Double_t W2[] = {0, 0.40882635e+0, 0.14474912e-1, 0.25023704e-2,
2791 -0.37707379e-2, 0.18719727e+0, 0.56954987e-1,
2792 0. , 0.23020158e-1, 0.50574313e-2,
2793 0.94550140e-2, 0.19300232e-1};
2795 Double_t W3[] = {0, 0.16861629e+0, 0. , 0.36317285e-2,
2796 -0.43657818e-2, 0.30144338e-1, 0.13891826e-1,
2797 -0.58030495e-2, -0.38717547e-2, 0.85359607e-2,
2798 0.14507659e-1, 0.82387775e-2, -0.10116105e-1,-0.55135670e-2};
2800 Double_t W4[] = {0, 0.13493891e+1, -0.26863185e-2, -0.35216040e-2,
2801 0.24434909e-1, -0.83447911e-1, -0.48061360e-1,
2802 0.76473951e-2, 0.24494430e-1, -0.16209200e-1,
2803 -0.37768479e-1, -0.47890063e-1, 0.17778596e-1, 0.13179324e-1};
2805 Double_t W5[] = {0, 0.10264945e+0, 0.32738857e-1, 0. ,
2806 0.43608779e-2, -0.43097757e-1, -0.22647176e-2,
2807 0.94531290e-2, -0.12442571e-1, -0.32283517e-2,
2808 -0.75640352e-2, -0.88293329e-2, 0.52537299e-2, 0.13340546e-2};
2810 Double_t W6[] = {0, 0.29568177e-1, -0.16300060e-2, -0.21119745e-3,
2811 0.23599053e-2, -0.48515387e-2, -0.40797531e-2,
2812 0.40403265e-3, 0.18200105e-2, -0.14346306e-2,
2813 -0.39165276e-2, -0.37432073e-2, 0.19950380e-2, 0.12222675e-2};
2815 Double_t W8[] = {0, 0.66184645e+1, -0.73866379e+0, 0.44693973e-1,
2816 0. , -0.14540925e+1, -0.39529833e+0,
2817 -0.44293243e-1, 0.88741049e-1};
2820 if (rkappa <0.01 || rkappa >12) {
2821 Error(
"Vavilov distribution",
"illegal value of kappa");
2829 Double_t x,
y, xx, yy,
x2,
x3, y2, y3,
xy,
p2,
p3, q2, q3, pq;
2830 if (rkappa >= 0.29) {
2835 AC[0] = (-0.032227*beta2-0.074275)*rkappa + (0.24533*beta2+0.070152)*wk + (-0.55610*beta2-3.1579);
2836 AC[8] = (-0.013483*beta2-0.048801)*rkappa + (-1.6921*beta2+8.3656)*wk + (-0.73275*beta2-3.5226);
2839 for (j=1; j<=4; j++) {
2840 DRK[j+1] = DRK[1]*DRK[j];
2841 DSIGM[j+1] = DSIGM[1]*DSIGM[j];
2842 ALFA[j+1] = (FNINV[j]-beta2*FNINV[j+1])*DRK[j];
2846 HC[2]=ALFA[3]*DSIGM[3];
2847 HC[3]=(3*ALFA[2]*ALFA[2] + ALFA[4])*DSIGM[4]-3;
2848 HC[4]=(10*ALFA[2]*ALFA[3]+ALFA[5])*DSIGM[5]-10*HC[2];
2852 for (j=2; j<=7; j++)
2854 HC[8]=0.39894228*HC[1];
2856 else if (rkappa >=0.22) {
2859 x = 1+(rkappa-BKMXX3)*FBKX3;
2873 AC[1] = W1[1] + W1[2]*x + W1[4]*
x3 + W1[5]*y + W1[6]*y2 + W1[7]*y3 +
2874 W1[8]*
xy + W1[9]*p2 + W1[10]*
p3 + W1[11]*q2 + W1[12]*q3 + W1[13]*pq;
2875 AC[2] = W2[1] + W2[2]*x + W2[3]*
x2 + W2[4]*
x3 + W2[5]*y + W2[6]*y2 +
2876 W2[8]*
xy + W2[9]*p2 + W2[10]*
p3 + W2[11]*q2;
2877 AC[3] = W3[1] + W3[3]*
x2 + W3[4]*
x3 + W3[5]*y + W3[6]*y2 + W3[7]*y3 +
2878 W3[8]*
xy + W3[9]*p2 + W3[10]*
p3 + W3[11]*q2 + W3[12]*q3 + W3[13]*pq;
2879 AC[4] = W4[1] + W4[2]*x + W4[3]*
x2 + W4[4]*
x3 + W4[5]*y + W4[6]*y2 + W4[7]*y3 +
2880 W4[8]*
xy + W4[9]*p2 + W4[10]*
p3 + W4[11]*q2 + W4[12]*q3 + W4[13]*pq;
2881 AC[5] = W5[1] + W5[2]*x + W5[4]*
x3 + W5[5]*y + W5[6]*y2 + W5[7]*y3 +
2882 W5[8]*
xy + W5[9]*p2 + W5[10]*
p3 + W5[11]*q2 + W5[12]*q3 + W5[13]*pq;
2883 AC[6] = W6[1] + W6[2]*x + W6[3]*
x2 + W6[4]*
x3 + W6[5]*y + W6[6]*y2 + W6[7]*y3 +
2884 W6[8]*
xy + W6[9]*p2 + W6[10]*
p3 + W6[11]*q2 + W6[12]*q3 + W6[13]*pq;
2885 AC[8] = W8[1] + W8[2]*x + W8[3]*
x2 + W8[5]*y + W8[6]*y2 + W8[7]*y3 + W8[8]*
xy;
2887 }
else if (rkappa >= 0.12) {
2890 x = 1 + (rkappa-BKMXX2)*FBKX2;
2904 AC[1] = V1[1] + V1[2]*x + V1[3]*
x2 + V1[5]*y + V1[6]*y2 + V1[7]*y3 +
2905 V1[9]*p2 + V1[10]*
p3 + V1[11]*q2 + V1[12]*q3;
2906 AC[2] = V2[1] + V2[2]*x + V2[3]*
x2 + V2[5]*y + V2[6]*y2 + V2[7]*y3 +
2907 V2[8]*
xy + V2[9]*p2 + V2[11]*q2 + V2[12]*q3;
2908 AC[3] = V3[1] + V3[2]*x + V3[3]*
x2 + V3[4]*
x3 + V3[5]*y + V3[6]*y2 + V3[7]*y3 +
2909 V3[8]*
xy + V3[9]*p2 + V3[10]*
p3 + V3[11]*q2 + V3[12]*q3 + V3[13]*pq;
2910 AC[4] = V4[1] + V4[2]*x + V4[3]*
x2 + V4[4]*
x3 + V4[5]*y + V4[6]*y2 + V4[7]*y3 +
2911 V4[8]*
xy + V4[9]*p2 + V4[10]*
p3 + V4[11]*q2 + V4[12]*q3;
2912 AC[5] = V5[1] + V5[2]*x + V5[3]*
x2 + V5[4]*
x3 + V5[5]*y + V5[6]*y2 + V5[7]*y3 +
2913 V5[8]*
xy + V5[11]*q2 + V5[12]*q3 + V5[13]*pq;
2914 AC[6] = V6[1] + V6[2]*x + V6[3]*
x2 + V6[4]*
x3 + V6[5]*y + V6[6]*y2 + V6[7]*y3 +
2915 V6[8]*
xy + V6[9]*p2 + V6[10]*
p3 + V6[11]*q2 + V6[12]*q3 + V6[13]*pq;
2916 AC[7] = V7[1] + V7[2]*x + V7[3]*
x2 + V7[5]*y + V7[6]*y2 + V7[7]*y3 +
2917 V7[8]*
xy + V7[11]*q2;
2918 AC[8] = V8[1] + V8[2]*x + V8[3]*
x2 + V8[5]*y + V8[6]*y2 + V8[7]*y3 +
2919 V8[8]*
xy + V8[11]*q2;
2923 if (rkappa >=0.02) itype = 3;
2925 x = 1+(rkappa-BKMXX1)*FBKX1;
2940 AC[1] = U1[1] + U1[2]*x + U1[3]*
x2 + U1[5]*y + U1[6]*y2 + U1[7]*y3 +
2941 U1[8]*
xy + U1[10]*
p3 + U1[12]*q3 + U1[13]*pq;
2942 AC[2] = U2[1] + U2[2]*x + U2[3]*
x2 + U2[5]*y + U2[6]*y2 + U2[7]*y3 +
2943 U2[8]*
xy + U2[9]*p2 + U2[10]*
p3 + U2[12]*q3 + U2[13]*pq;
2944 AC[3] = U3[1] + U3[2]*x + U3[3]*
x2 + U3[5]*y + U3[6]*y2 + U3[7]*y3 +
2945 U3[8]*
xy + U3[9]*p2 + U3[10]*
p3 + U3[11]*q2 + U3[12]*q3 + U3[13]*pq;
2946 AC[4] = U4[1] + U4[2]*x + U4[3]*
x2 + U4[4]*
x3 + U4[5]*y + U4[6]*y2 + U4[7]*y3 +
2947 U4[8]*
xy + U4[9]*p2 + U4[10]*
p3 + U4[11]*q2 + U4[12]*q3;
2948 AC[5] = U5[1] + U5[2]*x + U5[3]*
x2 + U5[4]*
x3 + U5[5]*y + U5[6]*y2 + U5[7]*y3 +
2949 U5[8]*
xy + U5[10]*
p3 + U5[11]*q2 + U5[12]*q3 + U5[13]*pq;
2950 AC[6] = U6[1] + U6[2]*x + U6[3]*
x2 + U6[4]*
x3 + U6[5]*y + U6[7]*y3 +
2951 U6[8]*
xy + U6[9]*p2 + U6[10]*
p3 + U6[12]*q3 + U6[13]*pq;
2952 AC[7] = U7[1] + U7[2]*x + U7[3]*
x2 + U7[4]*
x3 + U7[5]*y + U7[6]*y2 + U7[8]*
xy;
2954 AC[8] = U8[1] + U8[2]*x + U8[3]*
x2 + U8[4]*
x3 + U8[5]*y + U8[6]*y2 + U8[7]*y3 +
2955 U8[8]*
xy + U8[9]*p2 + U8[10]*
p3 + U8[11]*q2 + U8[13]*pq;
2959 AC[9] = (AC[8] - AC[0])/npt;
2962 x = (AC[7]-AC[8])/(AC[7]*AC[8]);
2965 AC[11] = p2*(AC[1]*
TMath::Exp(-AC[2]*(AC[7]+AC[5]*p2)-
2966 AC[3]*
TMath::Exp(-AC[4]*(AC[7]+AC[6]*p2)))-0.045*y/AC[7])/(1+x*y*AC[7]);
2967 AC[12] = (0.045+x*AC[11])*y;
2969 if (itype == 4) AC[13] = 0.995/
LandauI(AC[8]);
2971 if (mode==0)
return;
2977 fl = TMath::VavilovDenEval(x, AC, HC, itype);
2978 for (k=1; k<=npt; k++) {
2980 fu = TMath::VavilovDenEval(x, AC, HC, itype);
2981 WCM[k] = WCM[k-1] + fl +
fu;
2985 for (k=1; k<=npt; k++)
2995 if (rlam < AC[0] || rlam > AC[8])
3002 x = (rlam + HC[0])*HC[1];
3005 for (k=2; k<=8; k++) {
3007 h[k+1] = x*h[k]-fn*h[k-1];
3010 for (k=2; k<=6; k++)
3014 else if (itype == 2) {
3018 else if (itype == 3) {
3024 v = (AC[11]*x + AC[12])*x;
3027 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
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.
UInt_t Hash(const TString &s)
static double p3(double t, double a, double b, double c, double d)
Double_t KolmogorovProb(Double_t z)
Calculates the Kolmogorov distribution function, Begin_Html.
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 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...
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 ...
std::map< std::string, std::string >::const_iterator iter
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 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 Pi()
Mathematical constants.
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).
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 ...
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.
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
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)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
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.
ClassImp(TSlaveInfo) Int_t TSlaveInfo const TSlaveInfo * si
Used to sort slaveinfos by ordinal.
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)
NamespaceImp(TMath) namespace TMath
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]
UInt_t Hash(ECaseCompare cmp=kExact) const
Return hash value.