Example #1
0
double *cut_points(double fac, int n)
{
    /* 
       return the n+1 cutpoints between -fac...fac, that makes n regions of equal probability
    */

    static double fac_save = 0.0;
    static int    n_save   = 0;
    static double *cp      = NULL;

    double p_left, p, q, mean=0.0, sd=1.0, bound, x;
    int i, iwhich, status;

    if (fac == fac_save && n == n_save) return cp;

    fac_save = fac;
    n_save   = n;
    
    FREE(cp);
    cp = Calloc(n+1, double);

    iwhich = 1;
    cdfnor_(&iwhich, &p, &q, &fac, &mean, &sd, &status, &bound);
    p_left = q;

    cp[0] = -fac;
    cp[n] =  fac;
    for(i=1;i<n;i++)
    {
	iwhich = 2;
	p = p_left + i/((double)n)*(1.0 - 2.0*p_left);
	q = 1.0 -p;
	cdfnor_(&iwhich, &p, &q, &x, &mean, &sd, &status, &bound);
	cp[i] = x;
    }

    if (0)
    {
	for(i=0;i<n+1;i++) printf("cutpoint %d %f\n", i, cp[i]);
    }
    return cp;
}
Example #2
0
double ccdfnor(double *x, double *para)
{
	return cdfnor_(x, para);
}