35#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)));
84 if(
x==0.0)
return 0.0;
86 return log(
x+ax*
sqrt(1.-1./(ax*ax)));
98 return log((1+
x)/(1-
x))/2;
124 const Double_t c[20] = {0.42996693560813697, 0.40975987533077106,
125 -0.01858843665014592, 0.00145751084062268,-0.00014304184442340,
126 0.00001588415541880,-0.00000190784959387, 0.00000024195180854,
127 -0.00000003193341274, 0.00000000434545063,-0.00000000060578480,
128 0.00000000008612098,-0.00000000001244332, 0.00000000000182256,
129 -0.00000000000027007, 0.00000000000004042,-0.00000000000000610,
130 0.00000000000000093,-0.00000000000000014, 0.00000000000000002};
133 t=
h=
y=
s=
a=alfa=b1=b2=b0=0.;
137 }
else if (
x == -1) {
146 a = -pi3+hf*(b1*b1-b2*b2);
152 }
else if (t <= -0.5) {
176 for (
Int_t i=19;i>=0;i--){
177 b0 =
c[i] + alfa*b1-b2;
181 h = -(
s*(b0-
h*b2)+
a);
212 Double_t kConst = 0.8862269254527579;
222 for (
Int_t iter=0; iter<kMaxit; iter++) {
225 if (
TMath::Abs(dy1) < kEps) {
if (
x < 0)
return -erfi;
else return erfi;}
230 if(
TMath::Abs(derfi/erfi) < kEps) {
if (
x < 0)
return -erfi;
else return erfi;}
254 if (
n <= 0)
return 1.;
273 const Double_t w2 = 1.41421356237309505;
275 const Double_t p10 = 2.4266795523053175e+2, q10 = 2.1505887586986120e+2,
276 p11 = 2.1979261618294152e+1, q11 = 9.1164905404514901e+1,
277 p12 = 6.9963834886191355e+0, q12 = 1.5082797630407787e+1,
278 p13 =-3.5609843701815385e-2, q13 = 1;
280 const Double_t p20 = 3.00459261020161601e+2, q20 = 3.00459260956983293e+2,
281 p21 = 4.51918953711872942e+2, q21 = 7.90950925327898027e+2,
282 p22 = 3.39320816734343687e+2, q22 = 9.31354094850609621e+2,
283 p23 = 1.52989285046940404e+2, q23 = 6.38980264465631167e+2,
284 p24 = 4.31622272220567353e+1, q24 = 2.77585444743987643e+2,
285 p25 = 7.21175825088309366e+0, q25 = 7.70001529352294730e+1,
286 p26 = 5.64195517478973971e-1, q26 = 1.27827273196294235e+1,
287 p27 =-1.36864857382716707e-7, q27 = 1;
289 const Double_t p30 =-2.99610707703542174e-3, q30 = 1.06209230528467918e-2,
290 p31 =-4.94730910623250734e-2, q31 = 1.91308926107829841e-1,
291 p32 =-2.26956593539686930e-1, q32 = 1.05167510706793207e+0,
292 p33 =-2.78661308609647788e-1, q33 = 1.98733201817135256e+0,
293 p34 =-2.23192459734184686e-2, q34 = 1;
344 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;
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);
476 if (
sigma <= 0)
return 0;
478 if (!norm)
return den;
525 if( av0 >= av1 && av0 >= av2 ) {
531 else if (av1 >= av0 && av1 >= av2) {
547 Double_t d = amax *
Sqrt(1.+foofrac*foofrac+barfrac*barfrac);
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]);
796 if (!
a || !
b || na <= 2 || nb <= 2) {
797 Error(
"KolmogorovTest",
"Sets must have more than 2 points");
813 for (
Int_t i=0;i<na+nb;i++) {
817 if (ia >= na) {ok =
kTRUE;
break;}
818 }
else if (
a[ia] >
b[ib]) {
821 if (ib >= nb) {ok =
kTRUE;
break;}
825 while(ia < na &&
a[ia] ==
x) {
829 while(ib < nb &&
b[ib] ==
x) {
833 if (ia >= na) {ok =
kTRUE;
break;}
834 if (ib >= nb) {ok =
kTRUE;
break;}
848 printf(
" Kolmogorov Probability = %g, Max Dist = %g\n",prob,rdmax);
882 if ((
sigma < 0 || lg < 0) || (
sigma==0 && lg==0)) {
887 return lg * 0.159154943 / (xx*xx + lg*lg /4);
895 x = xx /
sigma / 1.41421356;
896 y = lg / 2 /
sigma / 1.41421356;
915 Double_t c[6] = { 1.0117281, -0.75197147, 0.012557727, 0.010022008, -0.00024206814, 0.00000050084806};
916 Double_t s[6] = { 1.393237, 0.23115241, -0.15535147, 0.0062183662, 0.000091908299, -0.00000062752596};
917 Double_t t[6] = { 0.31424038, 0.94778839, 1.5976826, 2.2795071, 3.0206370, 3.8897249};
924 Double_t xlim0, xlim1, xlim2, xlim3, xlim4;
925 Double_t a0=0, d0=0, d2=0, e0=0, e2=0, e4=0, h0=0, h2=0, h4=0, h6=0;
926 Double_t p0=0, p2=0, p4=0, p6=0, p8=0, z0=0, z2=0, z4=0, z6=0, z8=0;
927 Double_t xp[6], xm[6], yp[6], ym[6];
928 Double_t mq[6], pq[6], mf[6], pf[6];
943 xlim3 = 3.097 *
y - 0.45;
945 xlim4 = 18.1 *
y + 1.65;
954 k = yrrtpi / (xq + yq);
955 }
else if ( abx > xlim1 ) {
962 d = rrtpi / (d0 + xq*(d2 + xq));
963 k =
d *
y * (a0 + xq);
964 }
else if ( abx > xlim2 ) {
967 h0 = 0.5625 + yq * (4.5 + yq * (10.5 + yq * (6.0 + yq)));
969 h2 = -4.5 + yq * (9.0 + yq * ( 6.0 + yq * 4.0));
970 h4 = 10.5 - yq * (6.0 - yq * 6.0);
971 h6 = -6.0 + yq * 4.0;
972 e0 = 1.875 + yq * (8.25 + yq * (5.5 + yq));
973 e2 = 5.25 + yq * (1.0 + yq * 3.0);
976 d = rrtpi / (h0 + xq * (h2 + xq * (h4 + xq * (h6 + xq))));
977 k =
d *
y * (e0 + xq * (e2 + xq * (e4 + xq)));
978 }
else if ( abx < xlim3 ) {
981 z0 = 272.1014 +
y * (1280.829 +
y *
991 z2 = 211.678 +
y * (902.3066 +
y *
999 z4 = 78.86585 +
y * (308.1852 +
y *
1003 (80.39278 +
y * 10.0)
1005 z6 = 22.03523 +
y * (55.02933 +
y *
1007 (53.59518 +
y * 10.0)
1009 z8 = 1.496460 +
y * (13.39880 +
y * 5.0);
1010 p0 = 153.5168 +
y * (549.3954 +
y *
1017 (4.264678 +
y * 0.3183291)
1019 p2 = -34.16955 +
y * (-1.322256+
y *
1024 (12.79458 +
y * 1.2733163)
1026 p4 = 2.584042 +
y * (10.46332 +
y *
1029 (12.79568 +
y * 1.9099744)
1031 p6 = -0.07272979 +
y * (0.9377051 +
y *
1032 (4.266322 +
y * 1.273316));
1033 p8 = 0.0005480304 +
y * 0.3183291;
1035 d = 1.7724538 / (z0 + xq * (z2 + xq * (z4 + xq * (z6 + xq * (z8 + xq)))));
1036 k =
d * (p0 + xq * (p2 + xq * (p4 + xq * (p6 + xq * p8))));
1039 ypy0q = ypy0 * ypy0;
1041 for (j = 0; j <= 5; j++) {
1044 mf[j] = 1.0 / (mq[j] + ypy0q);
1046 ym[j] = mf[j] * ypy0;
1049 pf[j] = 1.0 / (pq[j] + ypy0q);
1051 yp[j] = pf[j] * ypy0;
1053 if ( abx <= xlim4 ) {
1054 for (j = 0; j <= 5; j++) {
1055 k = k +
c[j]*(ym[j]+yp[j]) -
s[j]*(xm[j]-xp[j]) ;
1059 for ( j = 0; j <= 5; j++) {
1061 (mq[j] * mf[j] - y0 * ym[j])
1062 +
s[j] * yf * xm[j]) / (mq[j]+y0q)
1063 + (
c[j] * (pq[j] * pf[j] - y0 * yp[j])
1064 -
s[j] * yf * xp[j]) / (pq[j]+y0q);
1066 k =
y * k +
exp( -xq );
1069 return k / 2.506628 /
sigma;
1092 Double_t r,
s,t,
p,
q,
d,ps3,ps33,qs2,u,
v,tmp,lnu,lnv,su,sv,
y1,
y2,y3;
1096 if (coef[3] == 0)
return complex;
1097 r = coef[2]/coef[3];
1098 s = coef[1]/coef[3];
1099 t = coef[0]/coef[3];
1102 q = (2*
r*
r*
r)/27.0 - (
r*
s)/3 + t;
1192 if (type<1 || type>9){
1193 printf(
"illegal value of type\n");
1202 isAllocated =
kTRUE;
1211 for (
Int_t i=0; i<nprob; i++){
1221 nppm =
n*prob[i]-0.5;
1245 if (
type == 4) {
a = 0;
b = 1; }
1246 else if (
type == 5) {
a = 0.5;
b = 0.5; }
1247 else if (
type == 6) {
a = 0.;
b = 0.; }
1248 else if (
type == 7) {
a = 1.;
b = 1.; }
1249 else if (
type == 8) {
a = 1./3.;
b =
a; }
1250 else if (
type == 9) {
a = 3./8.;
b =
a; }
1254 nppm =
a + prob[i] * (
n + 1 -
a -
b);
1262 int first = (j > 0 && j <=
n) ? j-1 : ( j <=0 ) ? 0 :
n-1;
1263 int second = (j > 0 && j <
n) ? j : ( j <=0 ) ? 0 :
n-1;
1298 if (Narr <= 0)
return;
1299 double *localArr1 =
new double[Narr];
1300 int *localArr2 =
new int[Narr];
1304 for(iEl = 0; iEl < Narr; iEl++) {
1305 localArr1[iEl] = arr1[iEl];
1306 localArr2[iEl] = iEl;
1309 for (iEl = 0; iEl < Narr; iEl++) {
1310 for (iEl2 = Narr-1; iEl2 > iEl; --iEl2) {
1311 if (localArr1[iEl2-1] < localArr1[iEl2]) {
1312 double tmp = localArr1[iEl2-1];
1313 localArr1[iEl2-1] = localArr1[iEl2];
1314 localArr1[iEl2] = tmp;
1316 int tmp2 = localArr2[iEl2-1];
1317 localArr2[iEl2-1] = localArr2[iEl2];
1318 localArr2[iEl2] = tmp2;
1323 for (iEl = 0; iEl < Narr; iEl++) {
1324 arr2[iEl] = localArr2[iEl];
1326 delete [] localArr2;
1327 delete [] localArr1;
1337 if (Narr <= 0)
return;
1338 double *localArr1 =
new double[Narr];
1339 int *localArr2 =
new int[Narr];
1343 for (iEl = 0; iEl < Narr; iEl++) {
1344 localArr1[iEl] = arr1[iEl];
1345 localArr2[iEl] = iEl;
1348 for (iEl = 0; iEl < Narr; iEl++) {
1349 for (iEl2 = Narr-1; iEl2 > iEl; --iEl2) {
1350 if (localArr1[iEl2-1] > localArr1[iEl2]) {
1351 double tmp = localArr1[iEl2-1];
1352 localArr1[iEl2-1] = localArr1[iEl2];
1353 localArr1[iEl2] = tmp;
1355 int tmp2 = localArr2[iEl2-1];
1356 localArr2[iEl2-1] = localArr2[iEl2];
1357 localArr2[iEl2] = tmp2;
1362 for (iEl = 0; iEl < Narr; iEl++) {
1363 arr2[iEl] = localArr2[iEl];
1365 delete [] localArr2;
1366 delete [] localArr1;
1411 const Double_t p1=1.0, p2=3.5156229, p3=3.0899424,
1412 p4=1.2067492, p5=0.2659732, p6=3.60768e-2, p7=4.5813e-3;
1414 const Double_t q1= 0.39894228, q2= 1.328592e-2, q3= 2.25319e-3,
1415 q4=-1.57565e-3, q5= 9.16281e-3, q6=-2.057706e-2,
1416 q7= 2.635537e-2, q8=-1.647633e-2, q9= 3.92377e-3;
1445 const Double_t p1=-0.57721566, p2=0.42278420, p3=0.23069756,
1446 p4= 3.488590e-2, p5=2.62698e-3, p6=1.0750e-4, p7=7.4e-6;
1448 const Double_t q1= 1.25331414, q2=-7.832358e-2, q3= 2.189568e-2,
1449 q4=-1.062446e-2, q5= 5.87872e-3, q6=-2.51540e-3, q7=5.3208e-4;
1452 Error(
"TMath::BesselK0",
"*K0* Invalid argument x = %g\n",
x);
1479 const Double_t p1=0.5, p2=0.87890594, p3=0.51498869,
1480 p4=0.15084934, p5=2.658733e-2, p6=3.01532e-3, p7=3.2411e-4;
1482 const Double_t q1= 0.39894228, q2=-3.988024e-2, q3=-3.62018e-3,
1483 q4= 1.63801e-3, q5=-1.031555e-2, q6= 2.282967e-2,
1484 q7=-2.895312e-2, q8= 1.787654e-2, q9=-4.20059e-3;
1514 const Double_t p1= 1., p2= 0.15443144, p3=-0.67278579,
1515 p4=-0.18156897, p5=-1.919402e-2, p6=-1.10404e-3, p7=-4.686e-5;
1517 const Double_t q1= 1.25331414, q2= 0.23498619, q3=-3.655620e-2,
1518 q4= 1.504268e-2, q5=-7.80353e-3, q6= 3.25614e-3, q7=-6.8245e-4;
1521 Error(
"TMath::BesselK1",
"*K1* Invalid argument x = %g\n",
x);
1545 if (
x <= 0 ||
n < 0) {
1546 Error(
"TMath::BesselK",
"*K* Invalid argument(s) (n,x) = (%d, %g)\n",
n,
x);
1558 for (
Int_t j=1; j<
n; j++) {
1575 const Double_t kBigPositive = 1.e10;
1576 const Double_t kBigNegative = 1.e-10;
1579 Error(
"TMath::BesselI",
"*I* Invalid argument (n,x) = (%d, %g)\n",
n,
x);
1586 if (
x == 0)
return 0;
1594 for (
Int_t j=
m; j>=1; j--) {
1602 bip *= kBigNegative;
1620 const Double_t p1 = 57568490574.0, p2 = -13362590354.0, p3 = 651619640.7;
1621 const Double_t p4 = -11214424.18, p5 = 77392.33017, p6 = -184.9052456;
1622 const Double_t p7 = 57568490411.0, p8 = 1029532985.0, p9 = 9494680.718;
1623 const Double_t p10 = 59272.64853, p11 = 267.8532712;
1626 const Double_t q2 = -0.1098628627e-2, q3 = 0.2734510407e-4;
1627 const Double_t q4 = -0.2073370639e-5, q5 = 0.2093887211e-6;
1628 const Double_t q6 = -0.1562499995e-1, q7 = 0.1430488765e-3;
1629 const Double_t q8 = -0.6911147651e-5, q9 = 0.7621095161e-6;
1630 const Double_t q10 = 0.934935152e-7, q11 = 0.636619772;
1632 if ((ax=
fabs(
x)) < 8) {
1634 result1 = p1 +
y*(p2 +
y*(p3 +
y*(p4 +
y*(p5 +
y*p6))));
1635 result2 = p7 +
y*(p8 +
y*(p9 +
y*(p10 +
y*(p11 +
y))));
1636 result = result1/result2;
1641 result1 = 1 +
y*(q2 +
y*(q3 +
y*(q4 +
y*q5)));
1642 result2 = q6 +
y*(q7 +
y*(q8 +
y*(q9 -
y*q10)));
1655 const Double_t p1 = 72362614232.0, p2 = -7895059235.0, p3 = 242396853.1;
1656 const Double_t p4 = -2972611.439, p5 = 15704.48260, p6 = -30.16036606;
1657 const Double_t p7 = 144725228442.0, p8 = 2300535178.0, p9 = 18583304.74;
1658 const Double_t p10 = 99447.43394, p11 = 376.9991397;
1661 const Double_t q2 = 0.183105e-2, q3 = -0.3516396496e-4;
1662 const Double_t q4 = 0.2457520174e-5, q5 = -0.240337019e-6;
1663 const Double_t q6 = 0.04687499995, q7 = -0.2002690873e-3;
1664 const Double_t q8 = 0.8449199096e-5, q9 = -0.88228987e-6;
1665 const Double_t q10 = 0.105787412e-6, q11 = 0.636619772;
1667 if ((ax=
fabs(
x)) < 8) {
1669 result1 =
x*(p1 +
y*(p2 +
y*(p3 +
y*(p4 +
y*(p5 +
y*p6)))));
1670 result2 = p7 +
y*(p8 +
y*(p9 +
y*(p10 +
y*(p11 +
y))));
1671 result = result1/result2;
1676 result1 = 1 +
y*(q2 +
y*(q3 +
y*(q4 +
y*q5)));
1677 result2 = q6 +
y*(q7 +
y*(q8 +
y*(q9 +
y*q10)));
1690 const Double_t p1 = -2957821389., p2 = 7062834065.0, p3 = -512359803.6;
1691 const Double_t p4 = 10879881.29, p5 = -86327.92757, p6 = 228.4622733;
1692 const Double_t p7 = 40076544269., p8 = 745249964.8, p9 = 7189466.438;
1693 const Double_t p10 = 47447.26470, p11 = 226.1030244, p12 = 0.636619772;
1696 const Double_t q2 = -0.1098628627e-2, q3 = 0.2734510407e-4;
1697 const Double_t q4 = -0.2073370639e-5, q5 = 0.2093887211e-6;
1698 const Double_t q6 = -0.1562499995e-1, q7 = 0.1430488765e-3;
1699 const Double_t q8 = -0.6911147651e-5, q9 = 0.7621095161e-6;
1700 const Double_t q10 = -0.934945152e-7, q11 = 0.636619772;
1704 result1 = p1 +
y*(p2 +
y*(p3 +
y*(p4 +
y*(p5 +
y*p6))));
1705 result2 = p7 +
y*(p8 +
y*(p9 +
y*(p10 +
y*(p11 +
y))));
1711 result1 = 1 +
y*(q2 +
y*(q3 +
y*(q4 +
y*q5)));
1712 result2 = q6 +
y*(q7 +
y*(q8 +
y*(q9 +
y*q10)));
1724 const Double_t p1 = -0.4900604943e13, p2 = 0.1275274390e13;
1725 const Double_t p3 = -0.5153438139e11, p4 = 0.7349264551e9;
1726 const Double_t p5 = -0.4237922726e7, p6 = 0.8511937935e4;
1727 const Double_t p7 = 0.2499580570e14, p8 = 0.4244419664e12;
1728 const Double_t p9 = 0.3733650367e10, p10 = 0.2245904002e8;
1729 const Double_t p11 = 0.1020426050e6, p12 = 0.3549632885e3;
1732 const Double_t q2 = 0.183105e-2, q3 = -0.3516396496e-4;
1733 const Double_t q4 = 0.2457520174e-5, q5 = -0.240337019e-6;
1734 const Double_t q6 = 0.04687499995, q7 = -0.2002690873e-3;
1735 const Double_t q8 = 0.8449199096e-5, q9 = -0.88228987e-6;
1736 const Double_t q10 = 0.105787412e-6, q11 = 0.636619772;
1740 result1 =
x*(p1 +
y*(p2 +
y*(p3 +
y*(p4 +
y*(p5 +
y*p6)))));
1741 result2 = p7 +
y*(p8 +
y*(p9 +
y*(p10 +
y*(p11 +
y*(p12+
y)))));
1747 result1 = 1 +
y*(q2 +
y*(q3 +
y*(q4 +
y*q5)));
1748 result2 = q6 +
y*(q7 +
y*(q8 +
y*(q9 +
y*q10)));
1761 const Int_t n1 = 15;
1762 const Int_t n2 = 25;
1763 const Double_t c1[16] = { 1.00215845609911981, -1.63969292681309147,
1764 1.50236939618292819, -.72485115302121872,
1765 .18955327371093136, -.03067052022988,
1766 .00337561447375194, -2.6965014312602e-4,
1767 1.637461692612e-5, -7.8244408508e-7,
1768 3.021593188e-8, -9.6326645e-10,
1769 2.579337e-11, -5.8854e-13,
1770 1.158e-14, -2
e-16 };
1771 const Double_t c2[26] = { .99283727576423943, -.00696891281138625,
1772 1.8205103787037e-4, -1.063258252844e-5,
1773 9.8198294287e-7, -1.2250645445e-7,
1774 1.894083312e-8, -3.44358226e-9,
1775 7.1119102e-10, -1.6288744e-10,
1776 4.065681e-11, -1.091505e-11,
1777 3.12005e-12, -9.4202e-13,
1778 2.9848e-13, -9.872e-14,
1779 3.394e-14, -1.208e-14,
1780 4.44e-15, -1.68e-15,
1799 for (i = n1; i >= 0; --i) {
1800 b0 =
c1[i] + alfa*b1 - b2;
1812 for (i = n2; i >= 0; --i) {
1813 b0 =
c2[i] + alfa*b1 - b2;
1830 const Int_t n3 = 16;
1831 const Int_t n4 = 22;
1832 const Double_t c3[17] = { .5578891446481605, -.11188325726569816,
1833 -.16337958125200939, .32256932072405902,
1834 -.14581632367244242, .03292677399374035,
1835 -.00460372142093573, 4.434706163314e-4,
1836 -3.142099529341e-5, 1.7123719938e-6,
1837 -7.416987005e-8, 2.61837671e-9,
1838 -7.685839e-11, 1.9067e-12,
1839 -4.052e-14, 7.5e-16,
1841 const Double_t c4[23] = { 1.00757647293865641, .00750316051248257,
1842 -7.043933264519e-5, 2.66205393382e-6,
1843 -1.8841157753e-7, 1.949014958e-8,
1844 -2.6126199e-9, 4.236269e-10,
1845 -7.955156e-11, 1.679973e-11,
1846 -3.9072e-12, 9.8543e-13,
1847 -2.6636e-13, 7.645e-14,
1848 -2.313e-14, 7.33e-15,
1851 -4
e-17, 2
e-17,-1
e-17 };
1862 }
else if (
v <= 0.3) {
1867 for (i = 1; i <= i1; ++i) {
1868 h = -
h*
y / ((2*i+ 1)*(2*i + 3));
1878 for (i = n3; i >= 0; --i) {
1879 b0 =
c3[i] + alfa*b1 - b2;
1890 for (i = n4; i >= 0; --i) {
1891 b0 = c4[i] + alfa*b1 - b2;
1918 for (i=1; i<=60;i++) {
1919 r*=(
x/(2*i+1))*(
x/(2*i+1));
1927 for (i=1; i<=
km; i++) {
1928 r*=(2*i-1)*(2*i-1)/
x/
x;
1935 for (i=1; i<=16; i++) {
1936 r=0.125*
r*(2.0*i-1.0)*(2.0*i-1.0)/(i*
x);
1942 sl0=-2.0/(
pi*
x)*
s+bi0;
1961 for (i=1; i<=60;i++) {
1962 r*=
x*
x/(4.0*i*i-1.0);
1971 for (i=1; i<=
km; i++) {
1972 r*=(2*i+3)*(2*i+1)/
x/
x;
1976 sl1=2.0/
pi*(-1.0+1.0/(
x*
x)+3.0*
s/(
x*
x*
x*
x));
1980 for (i=1; i<=16; i++) {
1981 r=-0.125*
r*(4.0-(2.0*i-1.0)*(2.0*i-1.0))/(i*
x);
2015 d = 1.0 - qab*
x/qap;
2019 for (
m=1;
m<=itmax;
m++) {
2028 aa = -(
a+
m)*(qab +
m)*
x/((
a+
m2)*(qap+
m2));
2039 Info(
"TMath::BetaCf",
"a or b too big, or itmax too small, a=%g, b=%g, x=%g, h=%g, itmax=%d",
2055 if ((
x<0) || (
x>1) || (
p<=0) || (
q<=0)){
2056 Error(
"TMath::BetaDist",
"parameter value outside allowed range");
2073 if ((
x<0) || (
x>1) || (
p<=0) || (
q<=0)){
2074 Error(
"TMath::BetaDistI",
"parameter value outside allowed range");
2095 if (k==0 ||
n==k)
return 1;
2121 if(k <= 0)
return 1.0;
2122 if(k >
n)
return 0.0;
2173 Double_t c[]={0, 0.01, 0.222222, 0.32, 0.4, 1.24, 2.2,
2174 4.67, 6.66, 6.73, 13.32, 60.0, 70.0,
2175 84.0, 105.0, 120.0, 127.0, 140.0, 175.0,
2176 210.0, 252.0, 264.0, 294.0, 346.0, 420.0,
2177 462.0, 606.0, 672.0, 707.0, 735.0, 889.0,
2178 932.0, 966.0, 1141.0, 1182.0, 1278.0, 1740.0,
2186 if (ndf <= 0)
return 0;
2199 if (ch >
c[6]*ndf + 6)
2206 p1 = 1 + ch * (
c[7]+ch);
2207 p2 = ch * (
c[9] + ch * (
c[8] + ch));
2208 t = -0.5 + (
c[7] + 2 * ch) / p1 - (
c[9] + ch * (
c[10] + 3 * ch)) / p2;
2209 ch = ch - (1 -
TMath::Exp(
a +
g + 0.5 * ch + cp * aa) *p2 / p1) / t;
2214 if (ch <
e)
return ch;
2217 for (
Int_t i=0; i<maxit; i++){
2224 a = 0.5 * t -
b * cp;
2225 s1 = (
c[19] +
a * (
c[17] +
a * (
c[14] +
a * (
c[13] +
a * (
c[12] +
c[11] *
a))))) /
c[24];
2226 s2 = (
c[24] +
a * (
c[29] +
a * (
c[32] +
a * (
c[33] +
c[35] *
a)))) /
c[37];
2227 s3 = (
c[19] +
a * (
c[25] +
a * (
c[28] +
c[31] *
a))) /
c[37];
2228 s4 = (
c[20] +
a * (
c[27] +
c[34] *
a) + cp * (
c[22] +
a * (
c[30] +
c[36] *
a))) /
c[38];
2229 s5 = (
c[13] +
c[21] *
a + cp * (
c[18] +
c[26] *
a)) /
c[37];
2230 s6 = (
c[15] + cp * (
c[23] +
c[16] * cp)) /
c[38];
2231 ch = ch + t * (1 + 0.5 * t *
s1 -
b * cp * (
s1 -
b * (s2 -
b * (s3 -
b * (s4 -
b * (s5 -
b * s6))))));
2327 Error(
"TMath::GammaDist",
"illegal parameter values x = %f , gamma = %f beta = %f",
x,
gamma,
beta);
2416 if ((
x<theta) || (
sigma<=0) || (
m<=0)) {
2417 Error(
"TMath::Lognormal",
"illegal parameter values");
2435 if ((
p<=0)||(
p>=1)) {
2436 Error(
"TMath::NormQuantile",
"probability outside (0, 1)");
2440 Double_t a0 = 3.3871328727963666080e0;
2441 Double_t a1 = 1.3314166789178437745e+2;
2442 Double_t a2 = 1.9715909503065514427e+3;
2443 Double_t a3 = 1.3731693765509461125e+4;
2444 Double_t a4 = 4.5921953931549871457e+4;
2445 Double_t a5 = 6.7265770927008700853e+4;
2446 Double_t a6 = 3.3430575583588128105e+4;
2447 Double_t a7 = 2.5090809287301226727e+3;
2448 Double_t b1 = 4.2313330701600911252e+1;
2449 Double_t b2 = 6.8718700749205790830e+2;
2450 Double_t b3 = 5.3941960214247511077e+3;
2451 Double_t b4 = 2.1213794301586595867e+4;
2452 Double_t b5 = 3.9307895800092710610e+4;
2453 Double_t b6 = 2.8729085735721942674e+4;
2454 Double_t b7 = 5.2264952788528545610e+3;
2455 Double_t c0 = 1.42343711074968357734e0;
2459 Double_t c4 = 1.27045825245236838258e0;
2460 Double_t c5 = 2.41780725177450611770e-1;
2461 Double_t c6 = 2.27238449892691845833e-2;
2462 Double_t c7 = 7.74545014278341407640e-4;
2463 Double_t d1 = 2.05319162663775882187e0;
2464 Double_t d2 = 1.67638483018380384940e0;
2465 Double_t d3 = 6.89767334985100004550e-1;
2466 Double_t d4 = 1.48103976427480074590e-1;
2467 Double_t d5 = 1.51986665636164571966e-2;
2468 Double_t d6 = 5.47593808499534494600e-4;
2469 Double_t d7 = 1.05075007164441684324e-9;
2470 Double_t e0 = 6.65790464350110377720e0;
2471 Double_t e1 = 5.46378491116411436990e0;
2472 Double_t e2 = 1.78482653991729133580e0;
2473 Double_t e3 = 2.96560571828504891230e-1;
2474 Double_t e4 = 2.65321895265761230930e-2;
2475 Double_t e5 = 1.24266094738807843860e-3;
2476 Double_t e6 = 2.71155556874348757815e-5;
2477 Double_t e7 = 2.01033439929228813265e-7;
2479 Double_t f2 = 1.36929880922735805310e-1;
2480 Double_t f3 = 1.48753612908506148525e-2;
2481 Double_t f4 = 7.86869131145613259100e-4;
2482 Double_t f5 = 1.84631831751005468180e-5;
2483 Double_t f6 = 1.42151175831644588870e-7;
2484 Double_t f7 = 2.04426310338993978564e-15;
2495 quantile =
q* (((((((a7 *
r + a6) *
r + a5) *
r + a4) *
r + a3)
2496 *
r + a2) *
r + a1) *
r + a0) /
2497 (((((((b7 *
r + b6) *
r + b5) *
r + b4) *
r + b3)
2498 *
r + b2) *
r + b1) *
r + 1.);
2509 quantile=(((((((c7 *
r + c6) *
r + c5) *
r + c4) *
r +
c3)
2510 *
r +
c2) *
r +
c1) *
r + c0) /
2511 (((((((d7 *
r + d6) *
r + d5) *
r + d4) *
r + d3)
2512 *
r + d2) *
r + d1) *
r + 1);
2515 quantile=(((((((e7 *
r + e6) *
r + e5) *
r + e4) *
r + e3)
2516 *
r + e2) *
r + e1) *
r + e0) /
2517 (((((((f7 *
r + f6) *
r + f5) *
r + f4) *
r + f3)
2518 *
r + f2) *
r +
f1) *
r + 1);
2520 if (
q<0) quantile=-quantile;
2540 for(i=
n-2; i>-1; i--) {
2547 if(i1==-1)
return kFALSE;
2551 for(i=
n-1;i>i1;i--) {
2562 for(i=0;i<(
n-i1-1)/2;i++) {
2656 if (ndf<1 || p>=1 ||
p<=0) {
2657 Error(
"TMath::StudentQuantile",
"illegal parameter values");
2660 if ((lower_tail &&
p>0.5)||(!lower_tail &&
p<0.5)){
2662 q=2*(lower_tail ? (1-
p) :
p);
2665 q=2*(lower_tail?
p : (1-
p));
2685 if (ndf<5)
c+=0.3*(ndf-4.5)*(
x+0.6);
2686 c+=(((0.05*
d*
x-5.)*
x-7.)*
x-2.)*
x +
b;
2687 y=(((((0.4*
y+6.3)*
y+36.)*
y+94.5)/
c -
y-3.)/
b+1)*
x;
2692 y=((1./(((ndf+6.)/(ndf*
y)-0.089*
d-0.822)*(ndf+2.)*3)+0.5/(ndf+4.))*
y-1.)*
2693 (ndf+1.)/(ndf+2.)+1/
y;
2698 if(neg) quantile=-quantile;
2794 if (
x < ac[0])
v = 0;
2795 else if (
x >=ac[8])
v = 1;
2798 k =
Int_t(xx*ac[10]);
2799 v =
TMath::Min(wcm[k] + (xx - k*ac[9])*(wcm[k+1]-wcm[k])*ac[10], 1.);
2825 Double_t BKMNX1 = 0.02, BKMNY1 = 0.05, BKMNX2 = 0.12, BKMNY2 = 0.05,
2826 BKMNX3 = 0.22, BKMNY3 = 0.05, BKMXX1 = 0.1 , BKMXY1 = 1,
2827 BKMXX2 = 0.2 , BKMXY2 = 1 , BKMXX3 = 0.3 , BKMXY3 = 1;
2829 Double_t FBKX1 = 2/(BKMXX1-BKMNX1), FBKX2 = 2/(BKMXX2-BKMNX2),
2830 FBKX3 = 2/(BKMXX3-BKMNX3), FBKY1 = 2/(BKMXY1-BKMNY1),
2831 FBKY2 = 2/(BKMXY2-BKMNY2), FBKY3 = 2/(BKMXY3-BKMNY3);
2833 Double_t FNINV[] = {0, 1, 0.5, 0.33333333, 0.25, 0.2};
2835 Double_t EDGEC[]= {0, 0, 0.16666667e+0, 0.41666667e-1, 0.83333333e-2,
2836 0.13888889e-1, 0.69444444e-2, 0.77160493e-3};
2838 Double_t U1[] = {0, 0.25850868e+0, 0.32477982e-1, -0.59020496e-2,
2839 0. , 0.24880692e-1, 0.47404356e-2,
2840 -0.74445130e-3, 0.73225731e-2, 0. ,
2841 0.11668284e-2, 0. , -0.15727318e-2,-0.11210142e-2};
2843 Double_t U2[] = {0, 0.43142611e+0, 0.40797543e-1, -0.91490215e-2,
2844 0. , 0.42127077e-1, 0.73167928e-2,
2845 -0.14026047e-2, 0.16195241e-1, 0.24714789e-2,
2846 0.20751278e-2, 0. , -0.25141668e-2,-0.14064022e-2};
2848 Double_t U3[] = {0, 0.25225955e+0, 0.64820468e-1, -0.23615759e-1,
2849 0. , 0.23834176e-1, 0.21624675e-2,
2850 -0.26865597e-2, -0.54891384e-2, 0.39800522e-2,
2851 0.48447456e-2, -0.89439554e-2, -0.62756944e-2,-0.24655436e-2};
2853 Double_t U4[] = {0, 0.12593231e+1, -0.20374501e+0, 0.95055662e-1,
2854 -0.20771531e-1, -0.46865180e-1, -0.77222986e-2,
2855 0.32241039e-2, 0.89882920e-2, -0.67167236e-2,
2856 -0.13049241e-1, 0.18786468e-1, 0.14484097e-1};
2858 Double_t U5[] = {0, -0.24864376e-1, -0.10368495e-2, 0.14330117e-2,
2859 0.20052730e-3, 0.18751903e-2, 0.12668869e-2,
2860 0.48736023e-3, 0.34850854e-2, 0. ,
2861 -0.36597173e-3, 0.19372124e-2, 0.70761825e-3, 0.46898375e-3};
2863 Double_t U6[] = {0, 0.35855696e-1, -0.27542114e-1, 0.12631023e-1,
2864 -0.30188807e-2, -0.84479939e-3, 0. ,
2865 0.45675843e-3, -0.69836141e-2, 0.39876546e-2,
2866 -0.36055679e-2, 0. , 0.15298434e-2, 0.19247256e-2};
2868 Double_t U7[] = {0, 0.10234691e+2, -0.35619655e+1, 0.69387764e+0,
2869 -0.14047599e+0, -0.19952390e+1, -0.45679694e+0,
2870 0. , 0.50505298e+0};
2871 Double_t U8[] = {0, 0.21487518e+2, -0.11825253e+2, 0.43133087e+1,
2872 -0.14500543e+1, -0.34343169e+1, -0.11063164e+1,
2873 -0.21000819e+0, 0.17891643e+1, -0.89601916e+0,
2874 0.39120793e+0, 0.73410606e+0, 0. ,-0.32454506e+0};
2876 Double_t V1[] = {0, 0.27827257e+0, -0.14227603e-2, 0.24848327e-2,
2877 0. , 0.45091424e-1, 0.80559636e-2,
2878 -0.38974523e-2, 0. , -0.30634124e-2,
2879 0.75633702e-3, 0.54730726e-2, 0.19792507e-2};
2881 Double_t V2[] = {0, 0.41421789e+0, -0.30061649e-1, 0.52249697e-2,
2882 0. , 0.12693873e+0, 0.22999801e-1,
2883 -0.86792801e-2, 0.31875584e-1, -0.61757928e-2,
2884 0. , 0.19716857e-1, 0.32596742e-2};
2886 Double_t V3[] = {0, 0.20191056e+0, -0.46831422e-1, 0.96777473e-2,
2887 -0.17995317e-2, 0.53921588e-1, 0.35068740e-2,
2888 -0.12621494e-1, -0.54996531e-2, -0.90029985e-2,
2889 0.34958743e-2, 0.18513506e-1, 0.68332334e-2,-0.12940502e-2};
2891 Double_t V4[] = {0, 0.13206081e+1, 0.10036618e+0, -0.22015201e-1,
2892 0.61667091e-2, -0.14986093e+0, -0.12720568e-1,
2893 0.24972042e-1, -0.97751962e-2, 0.26087455e-1,
2894 -0.11399062e-1, -0.48282515e-1, -0.98552378e-2};
2896 Double_t V5[] = {0, 0.16435243e-1, 0.36051400e-1, 0.23036520e-2,
2897 -0.61666343e-3, -0.10775802e-1, 0.51476061e-2,
2898 0.56856517e-2, -0.13438433e-1, 0. ,
2899 0. , -0.25421507e-2, 0.20169108e-2,-0.15144931e-2};
2901 Double_t V6[] = {0, 0.33432405e-1, 0.60583916e-2, -0.23381379e-2,
2902 0.83846081e-3, -0.13346861e-1, -0.17402116e-2,
2903 0.21052496e-2, 0.15528195e-2, 0.21900670e-2,
2904 -0.13202847e-2, -0.45124157e-2, -0.15629454e-2, 0.22499176e-3};
2906 Double_t V7[] = {0, 0.54529572e+1, -0.90906096e+0, 0.86122438e-1,
2907 0. , -0.12218009e+1, -0.32324120e+0,
2908 -0.27373591e-1, 0.12173464e+0, 0. ,
2909 0. , 0.40917471e-1};
2911 Double_t V8[] = {0, 0.93841352e+1, -0.16276904e+1, 0.16571423e+0,
2912 0. , -0.18160479e+1, -0.50919193e+0,
2913 -0.51384654e-1, 0.21413992e+0, 0. ,
2914 0. , 0.66596366e-1};
2916 Double_t W1[] = {0, 0.29712951e+0, 0.97572934e-2, 0. ,
2917 -0.15291686e-2, 0.35707399e-1, 0.96221631e-2,
2918 -0.18402821e-2, -0.49821585e-2, 0.18831112e-2,
2919 0.43541673e-2, 0.20301312e-2, -0.18723311e-2,-0.73403108e-3};
2921 Double_t W2[] = {0, 0.40882635e+0, 0.14474912e-1, 0.25023704e-2,
2922 -0.37707379e-2, 0.18719727e+0, 0.56954987e-1,
2923 0. , 0.23020158e-1, 0.50574313e-2,
2924 0.94550140e-2, 0.19300232e-1};
2926 Double_t W3[] = {0, 0.16861629e+0, 0. , 0.36317285e-2,
2927 -0.43657818e-2, 0.30144338e-1, 0.13891826e-1,
2928 -0.58030495e-2, -0.38717547e-2, 0.85359607e-2,
2929 0.14507659e-1, 0.82387775e-2, -0.10116105e-1,-0.55135670e-2};
2931 Double_t W4[] = {0, 0.13493891e+1, -0.26863185e-2, -0.35216040e-2,
2932 0.24434909e-1, -0.83447911e-1, -0.48061360e-1,
2933 0.76473951e-2, 0.24494430e-1, -0.16209200e-1,
2934 -0.37768479e-1, -0.47890063e-1, 0.17778596e-1, 0.13179324e-1};
2936 Double_t W5[] = {0, 0.10264945e+0, 0.32738857e-1, 0. ,
2937 0.43608779e-2, -0.43097757e-1, -0.22647176e-2,
2938 0.94531290e-2, -0.12442571e-1, -0.32283517e-2,
2939 -0.75640352e-2, -0.88293329e-2, 0.52537299e-2, 0.13340546e-2};
2941 Double_t W6[] = {0, 0.29568177e-1, -0.16300060e-2, -0.21119745e-3,
2942 0.23599053e-2, -0.48515387e-2, -0.40797531e-2,
2943 0.40403265e-3, 0.18200105e-2, -0.14346306e-2,
2944 -0.39165276e-2, -0.37432073e-2, 0.19950380e-2, 0.12222675e-2};
2946 Double_t W8[] = {0, 0.66184645e+1, -0.73866379e+0, 0.44693973e-1,
2947 0. , -0.14540925e+1, -0.39529833e+0,
2948 -0.44293243e-1, 0.88741049e-1};
2951 if (rkappa <0.01 || rkappa >12) {
2952 Error(
"Vavilov distribution",
"illegal value of kappa");
2960 Double_t x,
y, xx, yy,
x2,
x3,
y2, y3,
xy, p2, p3, q2, q3, pq;
2961 if (rkappa >= 0.29) {
2966 AC[0] = (-0.032227*beta2-0.074275)*rkappa + (0.24533*beta2+0.070152)*wk + (-0.55610*beta2-3.1579);
2967 AC[8] = (-0.013483*beta2-0.048801)*rkappa + (-1.6921*beta2+8.3656)*wk + (-0.73275*beta2-3.5226);
2970 for (j=1; j<=4; j++) {
2971 DRK[j+1] = DRK[1]*DRK[j];
2972 DSIGM[j+1] = DSIGM[1]*DSIGM[j];
2973 ALFA[j+1] = (FNINV[j]-beta2*FNINV[j+1])*DRK[j];
2977 HC[2]=ALFA[3]*DSIGM[3];
2978 HC[3]=(3*ALFA[2]*ALFA[2] + ALFA[4])*DSIGM[4]-3;
2979 HC[4]=(10*ALFA[2]*ALFA[3]+ALFA[5])*DSIGM[5]-10*
HC[2];
2983 for (j=2; j<=7; j++)
2985 HC[8]=0.39894228*
HC[1];
2987 else if (rkappa >=0.22) {
2990 x = 1+(rkappa-BKMXX3)*FBKX3;
3004 AC[1] = W1[1] + W1[2]*
x + W1[4]*
x3 + W1[5]*
y + W1[6]*
y2 + W1[7]*y3 +
3005 W1[8]*
xy + W1[9]*p2 + W1[10]*p3 + W1[11]*q2 + W1[12]*q3 + W1[13]*pq;
3006 AC[2] = W2[1] + W2[2]*
x + W2[3]*
x2 + W2[4]*
x3 + W2[5]*
y + W2[6]*
y2 +
3007 W2[8]*
xy + W2[9]*p2 + W2[10]*p3 + W2[11]*q2;
3008 AC[3] = W3[1] + W3[3]*
x2 + W3[4]*
x3 + W3[5]*
y + W3[6]*
y2 + W3[7]*y3 +
3009 W3[8]*
xy + W3[9]*p2 + W3[10]*p3 + W3[11]*q2 + W3[12]*q3 + W3[13]*pq;
3010 AC[4] = W4[1] + W4[2]*
x + W4[3]*
x2 + W4[4]*
x3 + W4[5]*
y + W4[6]*
y2 + W4[7]*y3 +
3011 W4[8]*
xy + W4[9]*p2 + W4[10]*p3 + W4[11]*q2 + W4[12]*q3 + W4[13]*pq;
3012 AC[5] = W5[1] + W5[2]*
x + W5[4]*
x3 + W5[5]*
y + W5[6]*
y2 + W5[7]*y3 +
3013 W5[8]*
xy + W5[9]*p2 + W5[10]*p3 + W5[11]*q2 + W5[12]*q3 + W5[13]*pq;
3014 AC[6] = W6[1] + W6[2]*
x + W6[3]*
x2 + W6[4]*
x3 + W6[5]*
y + W6[6]*
y2 + W6[7]*y3 +
3015 W6[8]*
xy + W6[9]*p2 + W6[10]*p3 + W6[11]*q2 + W6[12]*q3 + W6[13]*pq;
3016 AC[8] = W8[1] + W8[2]*
x + W8[3]*
x2 + W8[5]*
y + W8[6]*
y2 + W8[7]*y3 + W8[8]*
xy;
3018 }
else if (rkappa >= 0.12) {
3021 x = 1 + (rkappa-BKMXX2)*FBKX2;
3035 AC[1] = V1[1] + V1[2]*
x + V1[3]*
x2 + V1[5]*
y + V1[6]*
y2 + V1[7]*y3 +
3036 V1[9]*p2 + V1[10]*p3 + V1[11]*q2 + V1[12]*q3;
3037 AC[2] = V2[1] + V2[2]*
x + V2[3]*
x2 + V2[5]*
y + V2[6]*
y2 + V2[7]*y3 +
3038 V2[8]*
xy + V2[9]*p2 + V2[11]*q2 + V2[12]*q3;
3039 AC[3] = V3[1] + V3[2]*
x + V3[3]*
x2 + V3[4]*
x3 + V3[5]*
y + V3[6]*
y2 + V3[7]*y3 +
3040 V3[8]*
xy + V3[9]*p2 + V3[10]*p3 + V3[11]*q2 + V3[12]*q3 + V3[13]*pq;
3041 AC[4] = V4[1] + V4[2]*
x + V4[3]*
x2 + V4[4]*
x3 + V4[5]*
y + V4[6]*
y2 + V4[7]*y3 +
3042 V4[8]*
xy + V4[9]*p2 + V4[10]*p3 + V4[11]*q2 + V4[12]*q3;
3043 AC[5] = V5[1] + V5[2]*
x + V5[3]*
x2 + V5[4]*
x3 + V5[5]*
y + V5[6]*
y2 + V5[7]*y3 +
3044 V5[8]*
xy + V5[11]*q2 + V5[12]*q3 + V5[13]*pq;
3045 AC[6] = V6[1] + V6[2]*
x + V6[3]*
x2 + V6[4]*
x3 + V6[5]*
y + V6[6]*
y2 + V6[7]*y3 +
3046 V6[8]*
xy + V6[9]*p2 + V6[10]*p3 + V6[11]*q2 + V6[12]*q3 + V6[13]*pq;
3047 AC[7] = V7[1] + V7[2]*
x + V7[3]*
x2 + V7[5]*
y + V7[6]*
y2 + V7[7]*y3 +
3048 V7[8]*
xy + V7[11]*q2;
3049 AC[8] = V8[1] + V8[2]*
x + V8[3]*
x2 + V8[5]*
y + V8[6]*
y2 + V8[7]*y3 +
3050 V8[8]*
xy + V8[11]*q2;
3054 if (rkappa >=0.02) itype = 3;
3056 x = 1+(rkappa-BKMXX1)*FBKX1;
3071 AC[1] = U1[1] + U1[2]*
x + U1[3]*
x2 + U1[5]*
y + U1[6]*
y2 + U1[7]*y3 +
3072 U1[8]*
xy + U1[10]*p3 + U1[12]*q3 + U1[13]*pq;
3073 AC[2] = U2[1] + U2[2]*
x + U2[3]*
x2 + U2[5]*
y + U2[6]*
y2 + U2[7]*y3 +
3074 U2[8]*
xy + U2[9]*p2 + U2[10]*p3 + U2[12]*q3 + U2[13]*pq;
3075 AC[3] = U3[1] + U3[2]*
x + U3[3]*
x2 + U3[5]*
y + U3[6]*
y2 + U3[7]*y3 +
3076 U3[8]*
xy + U3[9]*p2 + U3[10]*p3 + U3[11]*q2 + U3[12]*q3 + U3[13]*pq;
3077 AC[4] = U4[1] + U4[2]*
x + U4[3]*
x2 + U4[4]*
x3 + U4[5]*
y + U4[6]*
y2 + U4[7]*y3 +
3078 U4[8]*
xy + U4[9]*p2 + U4[10]*p3 + U4[11]*q2 + U4[12]*q3;
3079 AC[5] = U5[1] + U5[2]*
x + U5[3]*
x2 + U5[4]*
x3 + U5[5]*
y + U5[6]*
y2 + U5[7]*y3 +
3080 U5[8]*
xy + U5[10]*p3 + U5[11]*q2 + U5[12]*q3 + U5[13]*pq;
3081 AC[6] = U6[1] + U6[2]*
x + U6[3]*
x2 + U6[4]*
x3 + U6[5]*
y + U6[7]*y3 +
3082 U6[8]*
xy + U6[9]*p2 + U6[10]*p3 + U6[12]*q3 + U6[13]*pq;
3083 AC[7] = U7[1] + U7[2]*
x + U7[3]*
x2 + U7[4]*
x3 + U7[5]*
y + U7[6]*
y2 + U7[8]*
xy;
3085 AC[8] = U8[1] + U8[2]*
x + U8[3]*
x2 + U8[4]*
x3 + U8[5]*
y + U8[6]*
y2 + U8[7]*y3 +
3086 U8[8]*
xy + U8[9]*p2 + U8[10]*p3 + U8[11]*q2 + U8[13]*pq;
3090 AC[9] = (AC[8] - AC[0])/npt;
3093 x = (AC[7]-AC[8])/(AC[7]*AC[8]);
3096 AC[11] = p2*(AC[1]*
TMath::Exp(-AC[2]*(AC[7]+AC[5]*p2)-
3097 AC[3]*
TMath::Exp(-AC[4]*(AC[7]+AC[6]*p2)))-0.045*
y/AC[7])/(1+
x*
y*AC[7]);
3098 AC[12] = (0.045+
x*AC[11])*
y;
3100 if (itype == 4) AC[13] = 0.995/
LandauI(AC[8]);
3102 if (
mode==0)
return;
3109 for (k=1; k<=npt; k++) {
3112 WCM[k] = WCM[k-1] + fl + fu;
3116 for (k=1; k<=npt; k++)
3126 if (rlam < AC[0] || rlam > AC[8])
3133 x = (rlam +
HC[0])*
HC[1];
3136 for (k=2; k<=8; k++) {
3138 h[k+1] =
x*
h[k]-fn*
h[k-1];
3141 for (k=2; k<=6; k++)
3145 else if (itype == 2) {
3149 else if (itype == 3) {
3155 v = (AC[11]*
x + AC[12])*
x;
3158 else if (itype == 4) {
3166#ifdef R__HAS_VECCORE
static const double x3[11]
#define NamespaceImp(name)
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
winID h TVirtualViewer3D TVirtualGLPainter p
winID h TVirtualViewer3D vv
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t del
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t b
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint xy
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t g
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char y1
UInt_t Hash(const TString &s)
void ToUpper()
Change string to upper case.
UInt_t Hash(ECaseCompare cmp=kExact) const
Return hash value.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
double lognormal_pdf(double x, double m, double s, double x0=0)
Probability density function of the lognormal distribution.
double fdistribution_pdf(double x, double n, double m, double x0=0)
Probability density function of the F-distribution.
double gamma_pdf(double x, double alpha, double theta, double x0=0)
Probability density function of the gamma distribution.
double landau_pdf(double x, double xi=1, double x0=0)
Probability density function of the Landau distribution:
double fdistribution_cdf(double x, double n, double m, double x0=0)
Cumulative distribution function of the F-distribution (lower tail).
double landau_cdf(double x, double xi=1, double x0=0)
Cumulative distribution function of the Landau distribution (lower tail).
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 beta(double x, double y)
Calculates the beta function.
double inc_beta(double x, double a, double b)
Calculates the normalized (regularized) incomplete beta function.
double erfc(double x)
Complementary error function.
double tgamma(double x)
The gamma function is defined to be the extension of the factorial to real numbers.
double lgamma(double x)
Calculates the logarithm of the gamma function.
double inc_gamma(double a, double x)
Calculates the normalized (regularized) lower incomplete gamma function (lower integral)
double erf(double x)
Error function encountered in integrating the normal distribution.
RVec< PromoteType< T > > asinh(const RVec< T > &v)
RVec< PromoteType< T > > cos(const RVec< T > &v)
RVec< PromoteType< T > > atanh(const RVec< T > &v)
RVec< PromoteType< T > > acosh(const RVec< T > &v)
RVec< PromoteTypes< T0, T1 > > hypot(const T0 &x, const RVec< T1 > &v)
RVec< PromoteType< T > > log(const RVec< T > &v)
RVec< PromoteType< T > > exp(const RVec< T > &v)
RVec< PromoteType< T > > sin(const RVec< T > &v)
double Pi()
Mathematical constants.
VecExpr< UnaryOp< Sqrt< T >, VecExpr< A, T, D >, T >, T, D > sqrt(const VecExpr< A, T, D > &rhs)
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
Double_t Sqrt(Double_t x)
static constexpr double bar
static constexpr double s
static constexpr double pi
static constexpr double pi2
static constexpr double km
static constexpr double second
static constexpr double m2
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 LogNormal(Double_t x, Double_t sigma, Double_t theta=0, Double_t m=1)
Computes the density of LogNormal distribution at point x.
Double_t DiLog(Double_t x)
Modified Struve functions of order 1.
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 GamSer(Double_t a, Double_t x)
Computation of the incomplete gamma function P(a,x) via its series representation.
Double_t VavilovDenEval(Double_t rlam, Double_t *AC, Double_t *HC, Int_t itype)
Internal function, called by Vavilov and VavilovSet.
Double_t ACos(Double_t)
Returns the principal value of the arc cosine of x, expressed in radians.
Double_t BesselI(Int_t n, Double_t x)
Computes the Integer Order Modified Bessel function I_n(x) for n=0,1,2,... and any real x.
Element KOrdStat(Size n, const Element *a, Size k, Size *work=0)
Returns k_th order statistic of the array a of size n (k_th smallest element out of n elements).
Double_t Gaus(Double_t x, Double_t mean=0, Double_t sigma=1, Bool_t norm=kFALSE)
Calculates a gaussian function with mean and sigma.
Double_t Factorial(Int_t i)
Computes factorial(n).
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 ...
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
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...
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Vavilov(Double_t x, Double_t kappa, Double_t beta2)
Returns the value of the Vavilov density function.
Double_t Binomial(Int_t n, Int_t k)
Calculates the binomial coefficient n over k.
Float_t Normalize(Float_t v[3])
Normalize a vector v in place.
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 ASin(Double_t)
Returns the principal value of the arc sine of x, expressed in radians.
Double_t Log2(Double_t x)
Returns the binary (base-2) logarithm of x.
Double_t BesselK1(Double_t x)
Modified Bessel function I_1(x)
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...
Double_t Exp(Double_t x)
Returns the base-e exponential function of x, which is e raised to the power x.
Double_t BesselI1(Double_t x)
Modified Bessel function K_0(x)
Double_t Erf(Double_t x)
Computation of the error function erf(x).
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 QuietNaN()
Returns a quiet NaN as defined by IEEE 754.
Double_t PoissonI(Double_t x, Double_t par)
Computes the Discrete Poisson distribution function for (x,par).
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_t ATan(Double_t)
Returns the principal value of the arc tangent of x, expressed in radians.
Double_t StruveL1(Double_t x)
Modified Struve functions of order 0.
Double_t ASinH(Double_t)
Returns the area hyperbolic sine of x.
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 ...
ULong_t Hash(const void *txt, Int_t ntxt)
Calculates hash index from any char string.
Double_t BreitWigner(Double_t x, Double_t mean=0, Double_t gamma=1)
Calculates a Breit Wigner function with mean and gamma.
T1 Sign(T1 a, T2 b)
Returns a value with the magnitude of a and the sign of b.
Double_t Landau(Double_t x, Double_t mpv=0, Double_t sigma=1, Bool_t norm=kFALSE)
The LANDAU function.
Double_t Voigt(Double_t x, Double_t sigma, Double_t lg, Int_t r=4)
Computation of Voigt function (normalised).
Double_t Student(Double_t T, Double_t ndf)
Computes density function for Student's t- distribution (the probability function (integral of densit...
constexpr Double_t PiOver2()
Double_t BetaDistI(Double_t x, Double_t p, Double_t q)
Computes the distribution function of the Beta distribution.
Int_t FloorNint(Double_t x)
Returns the nearest integer of TMath::Floor(x).
Double_t ACosH(Double_t)
Returns the nonnegative area hyperbolic cosine of x.
Double_t BesselK0(Double_t x)
Modified Bessel function I_0(x)
Double_t BesselY0(Double_t x)
Bessel function J1(x) for any real x.
Double_t ATan2(Double_t y, Double_t x)
Returns the principal value of the arc tangent of y/x, expressed in radians.
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...
Double_t ErfInverse(Double_t x)
Returns the inverse error function.
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...
Double_t Log(Double_t x)
Returns the natural logarithm of x.
Double_t Erfc(Double_t x)
Computes the complementary error function erfc(x).
Double_t VavilovI(Double_t x, Double_t kappa, Double_t beta2)
Returns the value of the Vavilov distribution function.
Double_t Beta(Double_t p, Double_t q)
Calculates Beta-function Gamma(p)*Gamma(q)/Gamma(p+q).
Double_t Poisson(Double_t x, Double_t par)
Computes the Poisson distribution function for (x,par).
Double_t Sqrt(Double_t x)
Returns the square root of x.
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
Double_t BesselJ0(Double_t x)
Modified Bessel function K_1(x)
Double_t Gamma(Double_t z)
Computation of gamma(z) for all z.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Double_t StruveL0(Double_t x)
Struve functions of order 1.
Double_t NormQuantile(Double_t p)
Computes quantiles for standard normal distribution N(0, 1) at probability p.
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 Hypot(Double_t x, Double_t y)
Returns sqrt(x*x + y*y)
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Double_t StruveH0(Double_t x)
Bessel function Y1(x) for positive x.
Double_t LnGamma(Double_t z)
Computation of ln[gamma(z)] for all z.
Double_t KolmogorovProb(Double_t z)
Calculates the Kolmogorov distribution function,.
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.
Double_t ChisquareQuantile(Double_t p, Double_t ndf)
Evaluate the quantiles of the chi-squared probability distribution function.
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
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_t SignalingNaN()
Returns a signaling NaN as defined by IEEE 754](http://en.wikipedia.org/wiki/NaN#Signaling_NaN).
void BubbleLow(Int_t Narr, Double_t *arr1, Int_t *arr2)
Opposite ordering of the array arr2[] to that of BubbleHigh.
Double_t BesselK(Int_t n, Double_t x)
Integer order modified Bessel function I_n(x)
Double_t BesselJ1(Double_t x)
Bessel function J0(x) for any real x.
Double_t BetaIncomplete(Double_t x, Double_t a, Double_t b)
Calculates the incomplete Beta-function.
Double_t StruveH1(Double_t x)
Struve functions of order 0.
Double_t Freq(Double_t x)
Computation of the normal frequency function freq(x).
Double_t LandauI(Double_t x)
Returns the value of the Landau distribution function at point x.
Double_t ATanH(Double_t)
Returns the area hyperbolic tangent of x.
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.
Double_t BesselI0(Double_t x)
Integer order modified Bessel function K_n(x)
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.
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
Double_t StudentI(Double_t T, Double_t ndf)
Calculates the cumulative distribution function of Student's t-distribution second parameter stands f...
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,...
Double_t BesselY1(Double_t x)
Bessel function Y0(x) for positive x.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
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.
constexpr Double_t HC()
in
Double_t ErfcInverse(Double_t x)
Returns the inverse of the complementary error function.
Bool_t Even(Long_t a)
Returns true if a is even.
static T Epsilon()
Returns minimum double representation.
static uint64_t sum(uint64_t i)