The R Project SVN R

Rev

Rev 70913 | Rev 80271 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 70913 Rev 74317
Line 85... Line 85...
85
    /* temporary hack --- FIXME --- */
85
    /* temporary hack --- FIXME --- */
86
    if (p + 1.01*DBL_EPSILON >= 1.) return ML_POSINF;
86
    if (p + 1.01*DBL_EPSILON >= 1.) return ML_POSINF;
87
 
87
 
88
    /* y := approx.value (Cornish-Fisher expansion) :  */
88
    /* y := approx.value (Cornish-Fisher expansion) :  */
89
    z = qnorm(p, 0., 1., /*lower_tail*/TRUE, /*log_p*/FALSE);
89
    z = qnorm(p, 0., 1., /*lower_tail*/TRUE, /*log_p*/FALSE);
90
#ifdef HAVE_NEARBYINT
-
 
91
    y = nearbyint(mu + sigma * (z + gamma * (z*z - 1) / 6));
90
    y = nearbyint(mu + sigma * (z + gamma * (z*z - 1) / 6));
92
#else
-
 
93
    y = round(mu + sigma * (z + gamma * (z*z - 1) / 6));
-
 
94
#endif
-
 
95
 
91
 
96
    z = ppois(y, lambda, /*lower_tail*/TRUE, /*log_p*/FALSE);
92
    z = ppois(y, lambda, /*lower_tail*/TRUE, /*log_p*/FALSE);
97
 
93
 
98
    /* fuzz to ensure left continuity; 1 - 1e-7 may lose too much : */
94
    /* fuzz to ensure left continuity; 1 - 1e-7 may lose too much : */
99
    p *= 1 - 64*DBL_EPSILON;
95
    p *= 1 - 64*DBL_EPSILON;