The R Project SVN R

Rev

Rev 68947 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 68947 Rev 77685
Line 31... Line 31...
31
    double y;
31
    double y;
32
#ifdef IEEE_754
32
#ifdef IEEE_754
33
    if (ISNAN(x) || ISNAN(df1) || ISNAN(df2) || ISNAN(ncp))
33
    if (ISNAN(x) || ISNAN(df1) || ISNAN(df2) || ISNAN(ncp))
34
	return x + df2 + df1 + ncp;
34
	return x + df2 + df1 + ncp;
35
#endif
35
#endif
36
    if (df1 <= 0. || df2 <= 0. || ncp < 0) ML_ERR_return_NAN;
36
    if (df1 <= 0. || df2 <= 0. || ncp < 0) ML_WARN_return_NAN;
37
    if (!R_FINITE(ncp)) ML_ERR_return_NAN;
37
    if (!R_FINITE(ncp)) ML_WARN_return_NAN;
38
    if (!R_FINITE(df1) && !R_FINITE(df2)) /* both +Inf */
38
    if (!R_FINITE(df1) && !R_FINITE(df2)) /* both +Inf */
39
	ML_ERR_return_NAN;
39
	ML_WARN_return_NAN;
40
 
40
 
41
    R_P_bounds_01(x, 0., ML_POSINF);
41
    R_P_bounds_01(x, 0., ML_POSINF);
42
 
42
 
43
    if (df2 > 1e8) /* avoid problems with +Inf and loss of accuracy */
43
    if (df2 > 1e8) /* avoid problems with +Inf and loss of accuracy */
44
	return pnchisq(x * df1, df1, ncp, lower_tail, log_p);
44
	return pnchisq(x * df1, df1, ncp, lower_tail, log_p);