Example #1
0
/* Gamma inverse cdf */
double icdfGamma (double y, double shape)
{
	double result;
	
	result = PointChi2 (y, 2.0*shape)/(2.0*shape);
	
	/* to avoid -1.0 */
	if (result < 0.0)
	{
		result = 0.0;
	}
	
	return result;
}
Example #2
0
int main(int argc, char*argv[])
{
    int i,j, n=20, ndf=200, nprob=8, option=0; /* 0:table, 1:prob */
    double df,chi2, d=1.0/n, prob[]= {.005, .025, .1, .5, .90, .95, .99, .999};

    option=(argc>1);
    if (option) {
        for (; ; ) {
            printf ("\nd.f. & Chi^2 value (Ctrl-c to break)? ");
            scanf ("%lf%lf", &df, &chi2);
            if(df<1 || chi2<0) break;
            prob[0]=1-CDFChi2(chi2,df);
            printf ("\nprob = %.9f = %.3e\n", prob[0],prob[0]);
        }
    }
    else {
        printf ("\n\nChi-square critical values\n");
        for (i=0; i<ndf; i++) {
            if (i%15==0) {
                printf ("\n\t\t\t\tSignificance level\n");
                printf ("\n DF ");
                for (j=0; j<nprob; j++) printf ("%9.4f", 1-prob[j]);
                printf ("\n");
            }
            printf ("\n%3d ", i+1);
            for (j=0; j<nprob; j++)
                printf ("%9.4f", PointChi2(prob[j],(double)(i+1)));
            if (i%5==4) printf ("\n");
            if (i%15==14) {
                printf ("\nENTER for more, (q+ENTER) for quit... ");
                if (getchar()=='q') break;
            }
        }
    }
    printf ("\n");
    return (0);
}