Распределение Колмогорова на C (работает и в C++)

Jun 05, 2014 15:11

George Marsaglia, Wai Wan Tsang, Jingbo Wang
http://www.jstatsoft.org/v08/i18/paper

void mMultiply(double *A,double *B,double *C,int m)
{
int i,j,k; double s;
for(i=0;i1e140)
{
for(i=0;i7 DIGIT ACCURACY IN THE RIGHT TAIL
s=d*d*n;
if(s>7.24||(s>3.76&&n>99))
return 1-2*exp(-(2.000071+.331/sqrt(double(n))+1.409/n)*s);
k=(int)(n*d)+1;
m=2*k-1;
h=k-n*d;
H=(double*)malloc((m*m)*sizeof(double));
Q=(double*)malloc((m*m)*sizeof(double));
for(i=0;i0?pow(2*h-1,m):0);
for(i=0;i0)
for(g=1;g<=i-j+1;g++)
H[i*m+j]/=g;
eH=0;
mPower(H,eH,Q,&eQ,m,n);
s=Q[(k-1)*m+k-1];
for(i=1;i<=n;i++)
{
s=s*i/n;
if(s<1e-140)
{
s*=1e140;
eQ-=140;
}
}
s*=pow(10.,eQ);
free(H);
free(Q);
return s;
}
Previous post
Up