The R Project SVN R

Rev

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

Rev 33167 Rev 34244
Line 33... Line 33...
33
#endif
33
#endif
34
    if (n1 <= 0. || n2 <= 0.) ML_ERR_return_NAN;
34
    if (n1 <= 0. || n2 <= 0.) ML_ERR_return_NAN;
35
 
35
 
36
    if (x <= 0.)
36
    if (x <= 0.)
37
	return R_DT_0;
37
	return R_DT_0;
-
 
38
    if (!R_FINITE(n1) && !R_FINITE(n2)) /* both +Inf */
-
 
39
	ML_ERR_return_NAN;
38
 
40
 
39
    /* fudge the extreme DF cases -- pbeta doesn't do this well
41
    /* move to pchisq for very large values - was 4e5 in 2.0.x */
40
 
42
 
41
    if (n2 > 4e5)
43
    if (n2 > 1e10)
42
	return pchisq(x * n1, n1, lower_tail, log_p);
44
	return pchisq(x * n1, n1, lower_tail, log_p);
43
 
45
 
44
    if (n1 > 4e5)
46
    if (n1 > 1e10)
45
	return pchisq(n2 / x , n2, !lower_tail, log_p); 
47
	return pchisq(n2 / x , n2, !lower_tail, log_p); 
46
    */
-
 
47
 
48
 
48
    x = pbeta(n2 / (n2 + n1 * x), n2 / 2.0, n1 / 2.0, !lower_tail, log_p);
49
    x = pbeta(n2 / (n2 + n1 * x), n2 / 2.0, n1 / 2.0, !lower_tail, log_p);
49
 
50
 
50
    return ML_VALID(x) ? x : ML_NAN;
51
    return ML_VALID(x) ? x : ML_NAN;
51
}
52
}