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;
385 if (a <= 0 || x <= 0)
return 0;
393 for (
Int_t i=1; i<=itmax; i++) {
397 if (
Abs(d) < fpmin) d = fpmin;
399 if (
Abs(c) < fpmin) c = fpmin;
403 if (
Abs(del-1) < eps)
break;
421 if (a <= 0 || x <= 0)
return 0;
443 Double_t bw = gamma/((x-mean)*(x-mean) + gamma*gamma/4);
454 if (sigma == 0)
return 1.e30;
457 if (arg < -39.0 || arg > 39.0)
return 0.0;
459 if (!norm)
return res;
460 return res/(2.50662827463100024*
sigma);
474 if (sigma <= 0)
return 0;
476 if (!norm)
return den;
523 if( av0 >= av1 && av0 >= av2 ) {
529 else if (av1 >= av0 && av1 >= av2) {
544 Double_t foofrac = foo/amax, barfrac = bar/amax;
545 Double_t d = amax *
Sqrt(1.+foofrac*foofrac+barfrac*barfrac);
579 return Exp(lnpoisson);
626 if (ndf <= 0)
return 0;
629 if (chi2 < 0)
return 0;
678 }
else if (u < 0.755) {
681 }
else if (u < 6.8116) {
687 for (
Int_t j=0; j<maxj;j++) {
690 p = 2*(
r[0] -
r[1] +
r[2] -
r[3]);
797 if (!a || !b || na <= 2 || nb <= 2) {
798 Error(
"KolmogorovTest",
"Sets must have more than 2 points");
814 for (
Int_t i=0;i<na+nb;i++) {
818 if (ia >= na) {ok =
kTRUE;
break;}
819 }
else if (a[ia] > b[ib]) {
822 if (ib >= nb) {ok =
kTRUE;
break;}
826 while(a[ia] == x && ia < na) {
830 while(b[ib] == x && ib < nb) {
834 if (ia >= na) {ok =
kTRUE;
break;}
835 if (ib >= nb) {ok =
kTRUE;
break;}
849 printf(
" Kolmogorov Probability = %g, Max Dist = %g\n",prob,rdmax);
881 if ((sigma < 0 || lg < 0) || (sigma==0 && lg==0)) {
886 return lg * 0.159154943 / (xx*xx + lg*lg /4);
890 return 0.39894228 / sigma *
TMath::Exp(-xx*xx / (2*sigma*sigma));
894 x = xx / sigma / 1.41421356;
895 y = lg / 2 / sigma / 1.41421356;
914 Double_t c[6] = { 1.0117281, -0.75197147, 0.012557727, 0.010022008, -0.00024206814, 0.00000050084806};
915 Double_t s[6] = { 1.393237, 0.23115241, -0.15535147, 0.0062183662, 0.000091908299, -0.00000062752596};
916 Double_t t[6] = { 0.31424038, 0.94778839, 1.5976826, 2.2795071, 3.0206370, 3.8897249};
923 Double_t xlim0, xlim1, xlim2, xlim3, xlim4;
924 Double_t a0=0, d0=0, d2=0, e0=0, e2=0, e4=0, h0=0, h2=0, h4=0, h6=0;
925 Double_t p0=0,
p2=0, p4=0, p6=0, p8=0, z0=0, z2=0, z4=0, z6=0, z8=0;
926 Double_t xp[6], xm[6], yp[6], ym[6];
927 Double_t mq[6], pq[6], mf[6], pf[6];
942 xlim3 = 3.097 * y - 0.45;
944 xlim4 = 18.1 * y + 1.65;
953 k = yrrtpi / (xq + yq);
954 }
else if ( abx > xlim1 ) {
961 d = rrtpi / (d0 + xq*(d2 + xq));
962 k = d * y * (a0 + xq);
963 }
else if ( abx > xlim2 ) {
966 h0 = 0.5625 + yq * (4.5 + yq * (10.5 + yq * (6.0 + yq)));
968 h2 = -4.5 + yq * (9.0 + yq * ( 6.0 + yq * 4.0));
969 h4 = 10.5 - yq * (6.0 - yq * 6.0);
970 h6 = -6.0 + yq * 4.0;
971 e0 = 1.875 + yq * (8.25 + yq * (5.5 + yq));
972 e2 = 5.25 + yq * (1.0 + yq * 3.0);
975 d = rrtpi / (h0 + xq * (h2 + xq * (h4 + xq * (h6 + xq))));
976 k = d * y * (e0 + xq * (e2 + xq * (e4 + xq)));
977 }
else if ( abx < xlim3 ) {
980 z0 = 272.1014 + y * (1280.829 + y *
990 z2 = 211.678 + y * (902.3066 + y *
998 z4 = 78.86585 + y * (308.1852 + y *
1002 (80.39278 + y * 10.0)
1004 z6 = 22.03523 + y * (55.02933 + y *
1006 (53.59518 + y * 10.0)
1008 z8 = 1.496460 + y * (13.39880 + y * 5.0);
1009 p0 = 153.5168 + y * (549.3954 + y *
1016 (4.264678 + y * 0.3183291)
1018 p2 = -34.16955 + y * (-1.322256+ y *
1023 (12.79458 + y * 1.2733163)
1025 p4 = 2.584042 + y * (10.46332 + y *
1028 (12.79568 + y * 1.9099744)
1030 p6 = -0.07272979 + y * (0.9377051 + y *
1031 (4.266322 + y * 1.273316));
1032 p8 = 0.0005480304 + y * 0.3183291;
1034 d = 1.7724538 / (z0 + xq * (z2 + xq * (z4 + xq * (z6 + xq * (z8 + xq)))));
1035 k = d * (p0 + xq * (
p2 + xq * (p4 + xq * (p6 + xq * p8))));
1038 ypy0q = ypy0 * ypy0;
1040 for (j = 0; j <= 5; j++) {
1043 mf[j] = 1.0 / (mq[j] + ypy0q);
1045 ym[j] = mf[j] * ypy0;
1048 pf[j] = 1.0 / (pq[j] + ypy0q);
1050 yp[j] = pf[j] * ypy0;
1052 if ( abx <= xlim4 ) {
1053 for (j = 0; j <= 5; j++) {
1054 k = k + c[j]*(ym[j]+yp[j]) - s[j]*(xm[j]-xp[j]) ;
1058 for ( j = 0; j <= 5; j++) {
1060 (mq[j] * mf[j] - y0 * ym[j])
1061 + s[j] * yf * xm[j]) / (mq[j]+y0q)
1062 + (c[j] * (pq[j] * pf[j] - y0 * yp[j])
1063 - s[j] * yf * xp[j]) / (pq[j]+y0q);
1065 k = y * k +
exp( -xq );
1068 return k / 2.506628 /
sigma;
1084 Double_t r,s,t,p,
q,d,ps3,ps33,qs2,u,
v,tmp,lnu,lnv,su,sv,y1,y2,y3;
1088 if (coef[3] == 0)
return complex;
1089 r = coef[2]/coef[3];
1090 s = coef[1]/coef[3];
1091 t = coef[0]/coef[3];
1094 q = (2*r*r*
r)/27.0 - (r*s)/3 + t;
1180 if (type<1 || type>9){
1181 printf(
"illegal value of type\n");
1187 if (index) ind = index;
1190 isAllocated =
kTRUE;
1199 for (
Int_t i=0; i<nprob; i++){
1209 nppm = n*prob[i]-0.5;
1233 if (type == 4) { a = 0; b = 1; }
1234 else if (type == 5) { a = 0.5; b = 0.5; }
1235 else if (type == 6) { a = 0.; b = 0.; }
1236 else if (type == 7) { a = 1.; b = 1.; }
1237 else if (type == 8) { a = 1./3.; b =
a; }
1238 else if (type == 9) { a = 3./8.; b =
a; }
1242 nppm = a + prob[i] * ( n + 1 -a -
b);
1245 if (gamma < eps) gamma = 0;
1250 int first = (j > 0 && j <=
n) ? j-1 : ( j <=0 ) ? 0 : n-1;
1251 int second = (j > 0 && j <
n) ? j : ( j <=0 ) ? 0 : n-1;
1261 quantiles[i] = (1-
gamma)*xj + gamma*xjj;
1285 if (Narr <= 0)
return;
1286 double *localArr1 =
new double[Narr];
1287 int *localArr2 =
new int[Narr];
1291 for(iEl = 0; iEl < Narr; iEl++) {
1292 localArr1[iEl] = arr1[iEl];
1293 localArr2[iEl] = iEl;
1296 for (iEl = 0; iEl < Narr; iEl++) {
1297 for (iEl2 = Narr-1; iEl2 > iEl; --iEl2) {
1298 if (localArr1[iEl2-1] < localArr1[iEl2]) {
1299 double tmp = localArr1[iEl2-1];
1300 localArr1[iEl2-1] = localArr1[iEl2];
1301 localArr1[iEl2] = tmp;
1303 int tmp2 = localArr2[iEl2-1];
1304 localArr2[iEl2-1] = localArr2[iEl2];
1305 localArr2[iEl2] = tmp2;
1310 for (iEl = 0; iEl < Narr; iEl++) {
1311 arr2[iEl] = localArr2[iEl];
1313 delete [] localArr2;
1314 delete [] localArr1;
1324 if (Narr <= 0)
return;
1325 double *localArr1 =
new double[Narr];
1326 int *localArr2 =
new int[Narr];
1330 for (iEl = 0; iEl < Narr; iEl++) {
1331 localArr1[iEl] = arr1[iEl];
1332 localArr2[iEl] = iEl;
1335 for (iEl = 0; iEl < Narr; iEl++) {
1336 for (iEl2 = Narr-1; iEl2 > iEl; --iEl2) {
1337 if (localArr1[iEl2-1] > localArr1[iEl2]) {
1338 double tmp = localArr1[iEl2-1];
1339 localArr1[iEl2-1] = localArr1[iEl2];
1340 localArr1[iEl2] = tmp;
1342 int tmp2 = localArr2[iEl2-1];
1343 localArr2[iEl2-1] = localArr2[iEl2];
1344 localArr2[iEl2] = tmp2;
1349 for (iEl = 0; iEl < Narr; iEl++) {
1350 arr2[iEl] = localArr2[iEl];
1352 delete [] localArr2;
1353 delete [] localArr1;
1399 p4=1.2067492, p5=0.2659732, p6=3.60768e-2, p7=4.5813e-3;
1401 const Double_t q1= 0.39894228, q2= 1.328592e-2, q3= 2.25319e-3,
1402 q4=-1.57565e-3, q5= 9.16281e-3, q6=-2.057706e-2,
1403 q7= 2.635537e-2, q8=-1.647633e-2, q9= 3.92377e-3;
1413 result = p1+y*(
p2+y*(
p3+y*(p4+y*(p5+y*(p6+y*p7)))));
1433 p4= 3.488590e-2, p5=2.62698e-3, p6=1.0750e-4, p7=7.4e-6;
1435 const Double_t q1= 1.25331414, q2=-7.832358e-2, q3= 2.189568e-2,
1436 q4=-1.062446e-2, q5= 5.87872e-3, q6=-2.51540e-3, q7=5.3208e-4;
1439 Error(
"TMath::BesselK0",
"*K0* Invalid argument x = %g\n",x);
1450 result = (
exp(-x)/
sqrt(x))*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*(q6+y*q7))))));
1467 p4=0.15084934, p5=2.658733e-2, p6=3.01532e-3, p7=3.2411e-4;
1469 const Double_t q1= 0.39894228, q2=-3.988024e-2, q3=-3.62018e-3,
1470 q4= 1.63801e-3, q5=-1.031555e-2, q6= 2.282967e-2,
1471 q7=-2.895312e-2, q8= 1.787654e-2, q9=-4.20059e-3;
1481 result = x*(p1+y*(
p2+y*(
p3+y*(p4+y*(p5+y*(p6+y*p7))))));
1484 result = (
exp(ax)/
sqrt(ax))*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*(q6+y*(q7+y*(q8+y*q9))))))));
1502 p4=-0.18156897, p5=-1.919402e-2, p6=-1.10404e-3, p7=-4.686e-5;
1504 const Double_t q1= 1.25331414, q2= 0.23498619, q3=-3.655620e-2,
1505 q4= 1.504268e-2, q5=-7.80353e-3, q6= 3.25614e-3, q7=-6.8245e-4;
1508 Error(
"TMath::BesselK1",
"*K1* Invalid argument x = %g\n",x);
1519 result = (
exp(-x)/
sqrt(x))*(q1+y*(q2+y*(q3+y*(q4+y*(q5+y*(q6+y*q7))))));
1532 if (x <= 0 || n < 0) {
1533 Error(
"TMath::BesselK",
"*K* Invalid argument(s) (n,x) = (%d, %g)\n",n,x);
1545 for (
Int_t j=1; j<
n; j++) {
1562 const Double_t kBigPositive = 1.e10;
1563 const Double_t kBigNegative = 1.e-10;
1566 Error(
"TMath::BesselI",
"*I* Invalid argument (n,x) = (%d, %g)\n",n,x);
1573 if (x == 0)
return 0;
1581 for (
Int_t j=m; j>=1; j--) {
1587 result *= kBigNegative;
1589 bip *= kBigNegative;
1591 if (j==n) result=bip;
1595 if ((x < 0) && (n%2 == 1)) result = -
result;
1607 const Double_t p1 = 57568490574.0,
p2 = -13362590354.0,
p3 = 651619640.7;
1608 const Double_t p4 = -11214424.18, p5 = 77392.33017, p6 = -184.9052456;
1609 const Double_t p7 = 57568490411.0, p8 = 1029532985.0, p9 = 9494680.718;
1610 const Double_t p10 = 59272.64853, p11 = 267.8532712;
1613 const Double_t q2 = -0.1098628627e-2, q3 = 0.2734510407e-4;
1614 const Double_t q4 = -0.2073370639e-5, q5 = 0.2093887211e-6;
1615 const Double_t q6 = -0.1562499995e-1, q7 = 0.1430488765e-3;
1616 const Double_t q8 = -0.6911147651e-5, q9 = 0.7621095161e-6;
1617 const Double_t q10 = 0.934935152e-7, q11 = 0.636619772;
1619 if ((ax=
fabs(x)) < 8) {
1621 result1 = p1 + y*(
p2 + y*(
p3 + y*(p4 + y*(p5 + y*p6))));
1622 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 +
y))));
1623 result = result1/result2;
1628 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1629 result2 = q6 + y*(q7 + y*(q8 + y*(q9 - y*q10)));
1630 result =
sqrt(q11/ax)*(
cos(xx)*result1-z*
sin(xx)*result2);
1642 const Double_t p1 = 72362614232.0,
p2 = -7895059235.0,
p3 = 242396853.1;
1643 const Double_t p4 = -2972611.439, p5 = 15704.48260, p6 = -30.16036606;
1644 const Double_t p7 = 144725228442.0, p8 = 2300535178.0, p9 = 18583304.74;
1645 const Double_t p10 = 99447.43394, p11 = 376.9991397;
1648 const Double_t q2 = 0.183105e-2, q3 = -0.3516396496e-4;
1649 const Double_t q4 = 0.2457520174e-5, q5 = -0.240337019e-6;
1650 const Double_t q6 = 0.04687499995, q7 = -0.2002690873e-3;
1651 const Double_t q8 = 0.8449199096e-5, q9 = -0.88228987e-6;
1652 const Double_t q10 = 0.105787412e-6, q11 = 0.636619772;
1654 if ((ax=
fabs(x)) < 8) {
1656 result1 = x*(p1 + y*(
p2 + y*(
p3 + y*(p4 + y*(p5 + y*p6)))));
1657 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 +
y))));
1658 result = result1/result2;
1663 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1664 result2 = q6 + y*(q7 + y*(q8 + y*(q9 + y*q10)));
1665 result =
sqrt(q11/ax)*(
cos(xx)*result1-z*
sin(xx)*result2);
1666 if (x < 0) result = -
result;
1677 const Double_t p1 = -2957821389.,
p2 = 7062834065.0,
p3 = -512359803.6;
1678 const Double_t p4 = 10879881.29, p5 = -86327.92757, p6 = 228.4622733;
1679 const Double_t p7 = 40076544269., p8 = 745249964.8, p9 = 7189466.438;
1680 const Double_t p10 = 47447.26470, p11 = 226.1030244, p12 = 0.636619772;
1683 const Double_t q2 = -0.1098628627e-2, q3 = 0.2734510407e-4;
1684 const Double_t q4 = -0.2073370639e-5, q5 = 0.2093887211e-6;
1685 const Double_t q6 = -0.1562499995e-1, q7 = 0.1430488765e-3;
1686 const Double_t q8 = -0.6911147651e-5, q9 = 0.7621095161e-6;
1687 const Double_t q10 = -0.934945152e-7, q11 = 0.636619772;
1691 result1 = p1 + y*(
p2 + y*(
p3 + y*(p4 + y*(p5 + y*p6))));
1692 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 +
y))));
1698 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1699 result2 = q6 + y*(q7 + y*(q8 + y*(q9 + y*q10)));
1700 result =
sqrt(q11/x)*(
sin(xx)*result1+z*
cos(xx)*result2);
1711 const Double_t p1 = -0.4900604943e13,
p2 = 0.1275274390e13;
1712 const Double_t p3 = -0.5153438139e11, p4 = 0.7349264551e9;
1713 const Double_t p5 = -0.4237922726e7, p6 = 0.8511937935e4;
1714 const Double_t p7 = 0.2499580570e14, p8 = 0.4244419664e12;
1715 const Double_t p9 = 0.3733650367e10, p10 = 0.2245904002e8;
1716 const Double_t p11 = 0.1020426050e6, p12 = 0.3549632885e3;
1719 const Double_t q2 = 0.183105e-2, q3 = -0.3516396496e-4;
1720 const Double_t q4 = 0.2457520174e-5, q5 = -0.240337019e-6;
1721 const Double_t q6 = 0.04687499995, q7 = -0.2002690873e-3;
1722 const Double_t q8 = 0.8449199096e-5, q9 = -0.88228987e-6;
1723 const Double_t q10 = 0.105787412e-6, q11 = 0.636619772;
1727 result1 = x*(p1 + y*(
p2 + y*(p3 + y*(p4 + y*(p5 + y*p6)))));
1728 result2 = p7 + y*(p8 + y*(p9 + y*(p10 + y*(p11 + y*(p12+
y)))));
1734 result1 = 1 + y*(q2 + y*(q3 + y*(q4 + y*q5)));
1735 result2 = q6 + y*(q7 + y*(q8 + y*(q9 + y*q10)));
1736 result =
sqrt(q11/x)*(
sin(xx)*result1+z*
cos(xx)*result2);
1748 const Int_t n1 = 15;
1749 const Int_t n2 = 25;
1750 const Double_t c1[16] = { 1.00215845609911981, -1.63969292681309147,
1751 1.50236939618292819, -.72485115302121872,
1752 .18955327371093136, -.03067052022988,
1753 .00337561447375194, -2.6965014312602e-4,
1754 1.637461692612e-5, -7.8244408508e-7,
1755 3.021593188e-8, -9.6326645e-10,
1756 2.579337e-11, -5.8854e-13,
1757 1.158e-14, -2
e-16 };
1758 const Double_t c2[26] = { .99283727576423943, -.00696891281138625,
1759 1.8205103787037e-4, -1.063258252844e-5,
1760 9.8198294287e-7, -1.2250645445e-7,
1761 1.894083312e-8, -3.44358226e-9,
1762 7.1119102e-10, -1.6288744e-10,
1763 4.065681e-11, -1.091505e-11,
1764 3.12005e-12, -9.4202e-13,
1765 2.9848e-13, -9.872e-14,
1766 3.394e-14, -1.208e-14,
1767 4.44e-15, -1.68e-15,
1786 for (i = n1; i >= 0; --i) {
1787 b0 = c1[i] + alfa*b1 - b2;
1799 for (i = n2; i >= 0; --i) {
1800 b0 = c2[i] + alfa*b1 - b2;
1817 const Int_t n3 = 16;
1818 const Int_t n4 = 22;
1819 const Double_t c3[17] = { .5578891446481605, -.11188325726569816,
1820 -.16337958125200939, .32256932072405902,
1821 -.14581632367244242, .03292677399374035,
1822 -.00460372142093573, 4.434706163314e-4,
1823 -3.142099529341e-5, 1.7123719938e-6,
1824 -7.416987005e-8, 2.61837671e-9,
1825 -7.685839e-11, 1.9067e-12,
1826 -4.052e-14, 7.5e-16,
1828 const Double_t c4[23] = { 1.00757647293865641, .00750316051248257,
1829 -7.043933264519e-5, 2.66205393382e-6,
1830 -1.8841157753e-7, 1.949014958e-8,
1831 -2.6126199e-9, 4.236269e-10,
1832 -7.955156e-11, 1.679973e-11,
1833 -3.9072e-12, 9.8543e-13,
1834 -2.6636e-13, 7.645e-14,
1835 -2.313e-14, 7.33e-15,
1838 -4
e-17, 2
e-17,-1e-17 };
1849 }
else if (v <= 0.3) {
1854 for (i = 1; i <= i1; ++i) {
1855 h = -h*y / ((2*i+ 1)*(2*i + 3));
1865 for (i = n3; i >= 0; --i) {
1866 b0 = c3[i] + alfa*b1 - b2;
1877 for (i = n4; i >= 0; --i) {
1878 b0 = c4[i] + alfa*b1 - b2;
1905 for (i=1; i<=60;i++) {
1906 r*=(x/(2*i+1))*(x/(2*i+1));
1914 for (i=1; i<=km; i++) {
1915 r*=(2*i-1)*(2*i-1)/x/
x;
1922 for (i=1; i<=16; i++) {
1923 r=0.125*r*(2.0*i-1.0)*(2.0*i-1.0)/(i*
x);
1929 sl0=-2.0/(pi*
x)*s+bi0;
1947 for (i=1; i<=60;i++) {
1948 r*=x*x/(4.0*i*i-1.0);
1957 for (i=1; i<=km; i++) {
1958 r*=(2*i+3)*(2*i+1)/x/
x;
1962 sl1=2.0/pi*(-1.0+1.0/(x*
x)+3.0*s/(x*x*x*x));
1966 for (i=1; i<=16; i++) {
1967 r=-0.125*r*(4.0-(2.0*i-1.0)*(2.0*i-1.0))/(i*x);
1995 Double_t aa, c, d, del, qab, qam, qap;
2001 d = 1.0 - qab*x/qap;
2005 for (m=1; m<=itmax; m++) {
2007 aa = m*(b-
m)*x/((qam+ m2)*(a+m2));
2014 aa = -(a+
m)*(qab +m)*x/((a+m2)*(qap+m2));
2025 Info(
"TMath::BetaCf",
"a or b too big, or itmax too small, a=%g, b=%g, x=%g, h=%g, itmax=%d",
2041 if ((x<0) || (x>1) || (p<=0) || (q<=0)){
2042 Error(
"TMath::BetaDist",
"parameter value outside allowed range");
2059 if ((x<0) || (x>1) || (p<=0) || (q<=0)){
2060 Error(
"TMath::BetaDistI",
"parameter value outside allowed range");
2081 if (k==0 || n==k)
return 1;
2105 if(k <= 0)
return 1.0;
2106 if(k > n)
return 0.0;
2149 Double_t c[]={0, 0.01, 0.222222, 0.32, 0.4, 1.24, 2.2,
2150 4.67, 6.66, 6.73, 13.32, 60.0, 70.0,
2151 84.0, 105.0, 120.0, 127.0, 140.0, 175.0,
2152 210.0, 252.0, 264.0, 294.0, 346.0, 420.0,
2153 462.0, 606.0, 672.0, 707.0, 735.0, 889.0,
2154 932.0, 966.0, 1141.0, 1182.0, 1278.0, 1740.0,
2162 if (ndf <= 0)
return 0;
2175 if (ch > c[6]*ndf + 6)
2182 p1 = 1 + ch * (c[7]+ch);
2183 p2 = ch * (c[9] + ch * (c[8] + ch));
2184 t = -0.5 + (c[7] + 2 * ch) / p1 - (c[9] + ch * (c[10] + 3 * ch)) / p2;
2185 ch = ch - (1 -
TMath::Exp(a + g + 0.5 * ch + cp * aa) *p2 /
p1) / t;
2190 if (ch < e)
return ch;
2193 for (
Int_t i=0; i<maxit; i++){
2200 a = 0.5 * t - b * cp;
2201 s1 = (c[19] + a * (c[17] + a * (c[14] + a * (c[13] + a * (c[12] +c[11] *
a))))) / c[24];
2202 s2 = (c[24] + a * (c[29] + a * (c[32] + a * (c[33] + c[35] *
a)))) / c[37];
2203 s3 = (c[19] + a * (c[25] + a * (c[28] + c[31] *
a))) / c[37];
2204 s4 = (c[20] + a * (c[27] + c[34] *
a) + cp * (c[22] + a * (c[30] + c[36] * a))) / c[38];
2205 s5 = (c[13] + c[21] * a + cp * (c[18] + c[26] *
a)) / c[37];
2206 s6 = (c[15] + cp * (c[23] + c[16] * cp)) / c[38];
2207 ch = ch + t * (1 + 0.5 * t * s1 - b * cp * (s1 - b * (s2 - b * (s3 - b * (s4 - b * (s5 - b * s6))))));
2298 if ((x<mu) || (gamma<=0) || (beta <=0)) {
2299 Error(
"TMath::GammaDist",
"illegal parameter values x = %f , gamma = %f beta = %f",x,gamma,beta);
2386 if ((x<theta) || (sigma<=0) || (m<=0)) {
2387 Error(
"TMath::Lognormal",
"illegal parameter values");
2404 if ((p<=0)||(p>=1)) {
2405 Error(
"TMath::NormQuantile",
"probability outside (0, 1)");
2409 Double_t a0 = 3.3871328727963666080e0;
2410 Double_t a1 = 1.3314166789178437745e+2;
2411 Double_t a2 = 1.9715909503065514427e+3;
2412 Double_t a3 = 1.3731693765509461125e+4;
2413 Double_t a4 = 4.5921953931549871457e+4;
2414 Double_t a5 = 6.7265770927008700853e+4;
2415 Double_t a6 = 3.3430575583588128105e+4;
2416 Double_t a7 = 2.5090809287301226727e+3;
2417 Double_t b1 = 4.2313330701600911252e+1;
2418 Double_t b2 = 6.8718700749205790830e+2;
2419 Double_t b3 = 5.3941960214247511077e+3;
2420 Double_t b4 = 2.1213794301586595867e+4;
2421 Double_t b5 = 3.9307895800092710610e+4;
2422 Double_t b6 = 2.8729085735721942674e+4;
2423 Double_t b7 = 5.2264952788528545610e+3;
2424 Double_t c0 = 1.42343711074968357734e0;
2428 Double_t c4 = 1.27045825245236838258e0;
2429 Double_t c5 = 2.41780725177450611770e-1;
2430 Double_t c6 = 2.27238449892691845833e-2;
2431 Double_t c7 = 7.74545014278341407640e-4;
2432 Double_t d1 = 2.05319162663775882187e0;
2433 Double_t d2 = 1.67638483018380384940e0;
2434 Double_t d3 = 6.89767334985100004550e-1;
2435 Double_t d4 = 1.48103976427480074590e-1;
2436 Double_t d5 = 1.51986665636164571966e-2;
2437 Double_t d6 = 5.47593808499534494600e-4;
2438 Double_t d7 = 1.05075007164441684324e-9;
2439 Double_t e0 = 6.65790464350110377720e0;
2440 Double_t e1 = 5.46378491116411436990e0;
2441 Double_t e2 = 1.78482653991729133580e0;
2442 Double_t e3 = 2.96560571828504891230e-1;
2443 Double_t e4 = 2.65321895265761230930e-2;
2444 Double_t e5 = 1.24266094738807843860e-3;
2445 Double_t e6 = 2.71155556874348757815e-5;
2446 Double_t e7 = 2.01033439929228813265e-7;
2449 Double_t f3 = 1.48753612908506148525e-2;
2450 Double_t f4 = 7.86869131145613259100e-4;
2451 Double_t f5 = 1.84631831751005468180e-5;
2452 Double_t f6 = 1.42151175831644588870e-7;
2453 Double_t f7 = 2.04426310338993978564e-15;
2464 quantile = q* (((((((a7 * r + a6) * r + a5) * r + a4) * r + a3)
2465 * r + a2) * r + a1) * r + a0) /
2466 (((((((b7 * r + b6) * r + b5) * r + b4) * r + b3)
2467 * r + b2) * r + b1) * r + 1.);
2478 quantile=(((((((c7 * r + c6) * r + c5) * r + c4) * r + c3)
2479 * r +
c2) * r + c1) * r + c0) /
2480 (((((((d7 * r + d6) * r + d5) * r + d4) * r + d3)
2481 * r + d2) * r + d1) * r + 1);
2484 quantile=(((((((e7 * r + e6) * r + e5) * r + e4) * r + e3)
2485 * r + e2) * r + e1) * r + e0) /
2486 (((((((f7 * r + f6) * r + f5) * r + f4) * r + f3)
2487 * r + f2) * r +
f1) * r + 1);
2489 if (q<0) quantile=-quantile;
2509 for(i=n-2; i>-1; i--) {
2516 if(i1==-1)
return kFALSE;
2520 for(i=n-1;i>i1;i--) {
2531 for(i=0;i<(n-i1-1)/2;i++) {
2619 if (ndf<1 || p>=1 || p<=0) {
2620 Error(
"TMath::StudentQuantile",
"illegal parameter values");
2623 if ((lower_tail && p>0.5)||(!lower_tail && p<0.5)){
2625 q=2*(lower_tail ? (1-p) : p);
2628 q=2*(lower_tail? p : (1-p));
2640 Double_t c=((20700*a/b -98)*a-16)*a+96.36;
2648 if (ndf<5) c+=0.3*(ndf-4.5)*(x+0.6);
2649 c+=(((0.05*d*x-5.)*x-7.)*x-2.)*x +
b;
2650 y=(((((0.4*y+6.3)*y+36.)*y+94.5)/c - y-3.)/b+1)*x;
2655 y=((1./(((ndf+6.)/(ndf*
y)-0.089*d-0.822)*(ndf+2.)*3)+0.5/(ndf+4.))*y-1.)*
2656 (ndf+1.)/(ndf+2.)+1/
y;
2661 if(neg) quantile=-quantile;
2748 if (x < ac[0]) v = 0;
2749 else if (x >=ac[8]) v = 1;
2752 k =
Int_t(xx*ac[10]);
2753 v =
TMath::Min(wcm[k] + (xx - k*ac[9])*(wcm[k+1]-wcm[k])*ac[10], 1.);
2779 Double_t BKMNX1 = 0.02, BKMNY1 = 0.05, BKMNX2 = 0.12, BKMNY2 = 0.05,
2780 BKMNX3 = 0.22, BKMNY3 = 0.05, BKMXX1 = 0.1 , BKMXY1 = 1,
2781 BKMXX2 = 0.2 , BKMXY2 = 1 , BKMXX3 = 0.3 , BKMXY3 = 1;
2783 Double_t FBKX1 = 2/(BKMXX1-BKMNX1), FBKX2 = 2/(BKMXX2-BKMNX2),
2784 FBKX3 = 2/(BKMXX3-BKMNX3), FBKY1 = 2/(BKMXY1-BKMNY1),
2785 FBKY2 = 2/(BKMXY2-BKMNY2), FBKY3 = 2/(BKMXY3-BKMNY3);
2787 Double_t FNINV[] = {0, 1, 0.5, 0.33333333, 0.25, 0.2};
2789 Double_t EDGEC[]= {0, 0, 0.16666667e+0, 0.41666667e-1, 0.83333333e-2,
2790 0.13888889e-1, 0.69444444e-2, 0.77160493e-3};
2792 Double_t U1[] = {0, 0.25850868e+0, 0.32477982e-1, -0.59020496e-2,
2793 0. , 0.24880692e-1, 0.47404356e-2,
2794 -0.74445130e-3, 0.73225731e-2, 0. ,
2795 0.11668284e-2, 0. , -0.15727318e-2,-0.11210142e-2};
2797 Double_t U2[] = {0, 0.43142611e+0, 0.40797543e-1, -0.91490215e-2,
2798 0. , 0.42127077e-1, 0.73167928e-2,
2799 -0.14026047e-2, 0.16195241e-1, 0.24714789e-2,
2800 0.20751278e-2, 0. , -0.25141668e-2,-0.14064022e-2};
2802 Double_t U3[] = {0, 0.25225955e+0, 0.64820468e-1, -0.23615759e-1,
2803 0. , 0.23834176e-1, 0.21624675e-2,
2804 -0.26865597e-2, -0.54891384e-2, 0.39800522e-2,
2805 0.48447456e-2, -0.89439554e-2, -0.62756944e-2,-0.24655436e-2};
2807 Double_t U4[] = {0, 0.12593231e+1, -0.20374501e+0, 0.95055662e-1,
2808 -0.20771531e-1, -0.46865180e-1, -0.77222986e-2,
2809 0.32241039e-2, 0.89882920e-2, -0.67167236e-2,
2810 -0.13049241e-1, 0.18786468e-1, 0.14484097e-1};
2812 Double_t U5[] = {0, -0.24864376e-1, -0.10368495e-2, 0.14330117e-2,
2813 0.20052730e-3, 0.18751903e-2, 0.12668869e-2,
2814 0.48736023e-3, 0.34850854e-2, 0. ,
2815 -0.36597173e-3, 0.19372124e-2, 0.70761825e-3, 0.46898375e-3};
2817 Double_t U6[] = {0, 0.35855696e-1, -0.27542114e-1, 0.12631023e-1,
2818 -0.30188807e-2, -0.84479939e-3, 0. ,
2819 0.45675843e-3, -0.69836141e-2, 0.39876546e-2,
2820 -0.36055679e-2, 0. , 0.15298434e-2, 0.19247256e-2};
2822 Double_t U7[] = {0, 0.10234691e+2, -0.35619655e+1, 0.69387764e+0,
2823 -0.14047599e+0, -0.19952390e+1, -0.45679694e+0,
2824 0. , 0.50505298e+0};
2825 Double_t U8[] = {0, 0.21487518e+2, -0.11825253e+2, 0.43133087e+1,
2826 -0.14500543e+1, -0.34343169e+1, -0.11063164e+1,
2827 -0.21000819e+0, 0.17891643e+1, -0.89601916e+0,
2828 0.39120793e+0, 0.73410606e+0, 0. ,-0.32454506e+0};
2830 Double_t V1[] = {0, 0.27827257e+0, -0.14227603e-2, 0.24848327e-2,
2831 0. , 0.45091424e-1, 0.80559636e-2,
2832 -0.38974523e-2, 0. , -0.30634124e-2,
2833 0.75633702e-3, 0.54730726e-2, 0.19792507e-2};
2835 Double_t V2[] = {0, 0.41421789e+0, -0.30061649e-1, 0.52249697e-2,
2836 0. , 0.12693873e+0, 0.22999801e-1,
2837 -0.86792801e-2, 0.31875584e-1, -0.61757928e-2,
2838 0. , 0.19716857e-1, 0.32596742e-2};
2840 Double_t V3[] = {0, 0.20191056e+0, -0.46831422e-1, 0.96777473e-2,
2841 -0.17995317e-2, 0.53921588e-1, 0.35068740e-2,
2842 -0.12621494e-1, -0.54996531e-2, -0.90029985e-2,
2843 0.34958743e-2, 0.18513506e-1, 0.68332334e-2,-0.12940502e-2};
2845 Double_t V4[] = {0, 0.13206081e+1, 0.10036618e+0, -0.22015201e-1,
2846 0.61667091e-2, -0.14986093e+0, -0.12720568e-1,
2847 0.24972042e-1, -0.97751962e-2, 0.26087455e-1,
2848 -0.11399062e-1, -0.48282515e-1, -0.98552378e-2};
2850 Double_t V5[] = {0, 0.16435243e-1, 0.36051400e-1, 0.23036520e-2,
2851 -0.61666343e-3, -0.10775802e-1, 0.51476061e-2,
2852 0.56856517e-2, -0.13438433e-1, 0. ,
2853 0. , -0.25421507e-2, 0.20169108e-2,-0.15144931e-2};
2855 Double_t V6[] = {0, 0.33432405e-1, 0.60583916e-2, -0.23381379e-2,
2856 0.83846081e-3, -0.13346861e-1, -0.17402116e-2,
2857 0.21052496e-2, 0.15528195e-2, 0.21900670e-2,
2858 -0.13202847e-2, -0.45124157e-2, -0.15629454e-2, 0.22499176e-3};
2860 Double_t V7[] = {0, 0.54529572e+1, -0.90906096e+0, 0.86122438e-1,
2861 0. , -0.12218009e+1, -0.32324120e+0,
2862 -0.27373591e-1, 0.12173464e+0, 0. ,
2863 0. , 0.40917471e-1};
2865 Double_t V8[] = {0, 0.93841352e+1, -0.16276904e+1, 0.16571423e+0,
2866 0. , -0.18160479e+1, -0.50919193e+0,
2867 -0.51384654e-1, 0.21413992e+0, 0. ,
2868 0. , 0.66596366e-1};
2870 Double_t W1[] = {0, 0.29712951e+0, 0.97572934e-2, 0. ,
2871 -0.15291686e-2, 0.35707399e-1, 0.96221631e-2,
2872 -0.18402821e-2, -0.49821585e-2, 0.18831112e-2,
2873 0.43541673e-2, 0.20301312e-2, -0.18723311e-2,-0.73403108e-3};
2875 Double_t W2[] = {0, 0.40882635e+0, 0.14474912e-1, 0.25023704e-2,
2876 -0.37707379e-2, 0.18719727e+0, 0.56954987e-1,
2877 0. , 0.23020158e-1, 0.50574313e-2,
2878 0.94550140e-2, 0.19300232e-1};
2880 Double_t W3[] = {0, 0.16861629e+0, 0. , 0.36317285e-2,
2881 -0.43657818e-2, 0.30144338e-1, 0.13891826e-1,
2882 -0.58030495e-2, -0.38717547e-2, 0.85359607e-2,
2883 0.14507659e-1, 0.82387775e-2, -0.10116105e-1,-0.55135670e-2};
2885 Double_t W4[] = {0, 0.13493891e+1, -0.26863185e-2, -0.35216040e-2,
2886 0.24434909e-1, -0.83447911e-1, -0.48061360e-1,
2887 0.76473951e-2, 0.24494430e-1, -0.16209200e-1,
2888 -0.37768479e-1, -0.47890063e-1, 0.17778596e-1, 0.13179324e-1};
2890 Double_t W5[] = {0, 0.10264945e+0, 0.32738857e-1, 0. ,
2891 0.43608779e-2, -0.43097757e-1, -0.22647176e-2,
2892 0.94531290e-2, -0.12442571e-1, -0.32283517e-2,
2893 -0.75640352e-2, -0.88293329e-2, 0.52537299e-2, 0.13340546e-2};
2895 Double_t W6[] = {0, 0.29568177e-1, -0.16300060e-2, -0.21119745e-3,
2896 0.23599053e-2, -0.48515387e-2, -0.40797531e-2,
2897 0.40403265e-3, 0.18200105e-2, -0.14346306e-2,
2898 -0.39165276e-2, -0.37432073e-2, 0.19950380e-2, 0.12222675e-2};
2900 Double_t W8[] = {0, 0.66184645e+1, -0.73866379e+0, 0.44693973e-1,
2901 0. , -0.14540925e+1, -0.39529833e+0,
2902 -0.44293243e-1, 0.88741049e-1};
2905 if (rkappa <0.01 || rkappa >12) {
2906 Error(
"Vavilov distribution",
"illegal value of kappa");
2914 Double_t x,
y, xx, yy,
x2,
x3, y2, y3,
xy,
p2,
p3, q2, q3, pq;
2915 if (rkappa >= 0.29) {
2920 AC[0] = (-0.032227*beta2-0.074275)*rkappa + (0.24533*beta2+0.070152)*wk + (-0.55610*beta2-3.1579);
2921 AC[8] = (-0.013483*beta2-0.048801)*rkappa + (-1.6921*beta2+8.3656)*wk + (-0.73275*beta2-3.5226);
2924 for (j=1; j<=4; j++) {
2925 DRK[j+1] = DRK[1]*DRK[j];
2926 DSIGM[j+1] = DSIGM[1]*DSIGM[j];
2927 ALFA[j+1] = (FNINV[j]-beta2*FNINV[j+1])*DRK[j];
2931 HC[2]=ALFA[3]*DSIGM[3];
2932 HC[3]=(3*ALFA[2]*ALFA[2] + ALFA[4])*DSIGM[4]-3;
2933 HC[4]=(10*ALFA[2]*ALFA[3]+ALFA[5])*DSIGM[5]-10*HC[2];
2937 for (j=2; j<=7; j++)
2939 HC[8]=0.39894228*HC[1];
2941 else if (rkappa >=0.22) {
2944 x = 1+(rkappa-BKMXX3)*FBKX3;
2958 AC[1] = W1[1] + W1[2]*x + W1[4]*x3 + W1[5]*y + W1[6]*y2 + W1[7]*y3 +
2959 W1[8]*xy + W1[9]*p2 + W1[10]*p3 + W1[11]*q2 + W1[12]*q3 + W1[13]*pq;
2960 AC[2] = W2[1] + W2[2]*x + W2[3]*x2 + W2[4]*x3 + W2[5]*y + W2[6]*y2 +
2961 W2[8]*xy + W2[9]*p2 + W2[10]*p3 + W2[11]*q2;
2962 AC[3] = W3[1] + W3[3]*x2 + W3[4]*x3 + W3[5]*y + W3[6]*y2 + W3[7]*y3 +
2963 W3[8]*xy + W3[9]*p2 + W3[10]*p3 + W3[11]*q2 + W3[12]*q3 + W3[13]*pq;
2964 AC[4] = W4[1] + W4[2]*x + W4[3]*x2 + W4[4]*x3 + W4[5]*y + W4[6]*y2 + W4[7]*y3 +
2965 W4[8]*xy + W4[9]*p2 + W4[10]*p3 + W4[11]*q2 + W4[12]*q3 + W4[13]*pq;
2966 AC[5] = W5[1] + W5[2]*x + W5[4]*x3 + W5[5]*y + W5[6]*y2 + W5[7]*y3 +
2967 W5[8]*xy + W5[9]*p2 + W5[10]*p3 + W5[11]*q2 + W5[12]*q3 + W5[13]*pq;
2968 AC[6] = W6[1] + W6[2]*x + W6[3]*x2 + W6[4]*x3 + W6[5]*y + W6[6]*y2 + W6[7]*y3 +
2969 W6[8]*xy + W6[9]*p2 + W6[10]*p3 + W6[11]*q2 + W6[12]*q3 + W6[13]*pq;
2970 AC[8] = W8[1] + W8[2]*x + W8[3]*x2 + W8[5]*y + W8[6]*y2 + W8[7]*y3 + W8[8]*
xy;
2972 }
else if (rkappa >= 0.12) {
2975 x = 1 + (rkappa-BKMXX2)*FBKX2;
2989 AC[1] = V1[1] + V1[2]*x + V1[3]*x2 + V1[5]*y + V1[6]*y2 + V1[7]*y3 +
2990 V1[9]*p2 + V1[10]*p3 + V1[11]*q2 + V1[12]*q3;
2991 AC[2] = V2[1] + V2[2]*x + V2[3]*x2 + V2[5]*y + V2[6]*y2 + V2[7]*y3 +
2992 V2[8]*xy + V2[9]*p2 + V2[11]*q2 + V2[12]*q3;
2993 AC[3] = V3[1] + V3[2]*x + V3[3]*x2 + V3[4]*x3 + V3[5]*y + V3[6]*y2 + V3[7]*y3 +
2994 V3[8]*xy + V3[9]*p2 + V3[10]*p3 + V3[11]*q2 + V3[12]*q3 + V3[13]*pq;
2995 AC[4] = V4[1] + V4[2]*x + V4[3]*x2 + V4[4]*x3 + V4[5]*y + V4[6]*y2 + V4[7]*y3 +
2996 V4[8]*xy + V4[9]*p2 + V4[10]*p3 + V4[11]*q2 + V4[12]*q3;
2997 AC[5] = V5[1] + V5[2]*x + V5[3]*x2 + V5[4]*x3 + V5[5]*y + V5[6]*y2 + V5[7]*y3 +
2998 V5[8]*xy + V5[11]*q2 + V5[12]*q3 + V5[13]*pq;
2999 AC[6] = V6[1] + V6[2]*x + V6[3]*x2 + V6[4]*x3 + V6[5]*y + V6[6]*y2 + V6[7]*y3 +
3000 V6[8]*xy + V6[9]*p2 + V6[10]*p3 + V6[11]*q2 + V6[12]*q3 + V6[13]*pq;
3001 AC[7] = V7[1] + V7[2]*x + V7[3]*x2 + V7[5]*y + V7[6]*y2 + V7[7]*y3 +
3002 V7[8]*xy + V7[11]*q2;
3003 AC[8] = V8[1] + V8[2]*x + V8[3]*x2 + V8[5]*y + V8[6]*y2 + V8[7]*y3 +
3004 V8[8]*xy + V8[11]*q2;
3008 if (rkappa >=0.02) itype = 3;
3010 x = 1+(rkappa-BKMXX1)*FBKX1;
3025 AC[1] = U1[1] + U1[2]*x + U1[3]*x2 + U1[5]*y + U1[6]*y2 + U1[7]*y3 +
3026 U1[8]*xy + U1[10]*p3 + U1[12]*q3 + U1[13]*pq;
3027 AC[2] = U2[1] + U2[2]*x + U2[3]*x2 + U2[5]*y + U2[6]*y2 + U2[7]*y3 +
3028 U2[8]*xy + U2[9]*p2 + U2[10]*p3 + U2[12]*q3 + U2[13]*pq;
3029 AC[3] = U3[1] + U3[2]*x + U3[3]*x2 + U3[5]*y + U3[6]*y2 + U3[7]*y3 +
3030 U3[8]*xy + U3[9]*p2 + U3[10]*p3 + U3[11]*q2 + U3[12]*q3 + U3[13]*pq;
3031 AC[4] = U4[1] + U4[2]*x + U4[3]*x2 + U4[4]*x3 + U4[5]*y + U4[6]*y2 + U4[7]*y3 +
3032 U4[8]*xy + U4[9]*p2 + U4[10]*p3 + U4[11]*q2 + U4[12]*q3;
3033 AC[5] = U5[1] + U5[2]*x + U5[3]*x2 + U5[4]*x3 + U5[5]*y + U5[6]*y2 + U5[7]*y3 +
3034 U5[8]*xy + U5[10]*p3 + U5[11]*q2 + U5[12]*q3 + U5[13]*pq;
3035 AC[6] = U6[1] + U6[2]*x + U6[3]*x2 + U6[4]*x3 + U6[5]*y + U6[7]*y3 +
3036 U6[8]*xy + U6[9]*p2 + U6[10]*p3 + U6[12]*q3 + U6[13]*pq;
3037 AC[7] = U7[1] + U7[2]*x + U7[3]*x2 + U7[4]*x3 + U7[5]*y + U7[6]*y2 + U7[8]*
xy;
3039 AC[8] = U8[1] + U8[2]*x + U8[3]*x2 + U8[4]*x3 + U8[5]*y + U8[6]*y2 + U8[7]*y3 +
3040 U8[8]*xy + U8[9]*p2 + U8[10]*p3 + U8[11]*q2 + U8[13]*pq;
3044 AC[9] = (AC[8] - AC[0])/npt;
3047 x = (AC[7]-AC[8])/(AC[7]*AC[8]);
3050 AC[11] = p2*(AC[1]*
TMath::Exp(-AC[2]*(AC[7]+AC[5]*p2)-
3051 AC[3]*
TMath::Exp(-AC[4]*(AC[7]+AC[6]*p2)))-0.045*y/AC[7])/(1+x*y*AC[7]);
3052 AC[12] = (0.045+x*AC[11])*y;
3054 if (itype == 4) AC[13] = 0.995/
LandauI(AC[8]);
3056 if (mode==0)
return;
3063 for (k=1; k<=npt; k++) {
3066 WCM[k] = WCM[k-1] + fl + fu;
3070 for (k=1; k<=npt; k++)
3080 if (rlam < AC[0] || rlam > AC[8])
3087 x = (rlam + HC[0])*HC[1];
3090 for (k=2; k<=8; k++) {
3092 h[k+1] = x*h[k]-fn*h[k-1];
3095 for (k=2; k<=6; k++)
3099 else if (itype == 2) {
3103 else if (itype == 3) {
3109 v = (AC[11]*x + AC[12])*x;
3112 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
static long int sum(long int i)
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,.
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
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
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 occurring k or mor...
you should not use this method at all Int_t Int_t z
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).
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
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)
constexpr Double_t PiOver2()
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]