The R Project SVN R

Rev

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

Rev 68947 Rev 69855
Line 45... Line 45...
45
#endif
45
#endif
46
    if (m <= 0 || n <= 0) ML_ERR_return_NAN;
46
    if (m <= 0 || n <= 0) ML_ERR_return_NAN;
47
    if (x < 0.)  return(R_D__0);
47
    if (x < 0.)  return(R_D__0);
48
    if (x == 0.) return(m > 2 ? R_D__0 : (m == 2 ? R_D__1 : ML_POSINF));
48
    if (x == 0.) return(m > 2 ? R_D__0 : (m == 2 ? R_D__1 : ML_POSINF));
49
    if (!R_FINITE(m) && !R_FINITE(n)) { /* both +Inf */
49
    if (!R_FINITE(m) && !R_FINITE(n)) { /* both +Inf */
50
	if(x == 1.) return ML_POSINF;
50
	if(x == 1.) return ML_POSINF; else return R_D__0;
51
	/* else */  return R_D__0;
-
 
52
    }
51
    }
53
    if (!R_FINITE(n)) /* must be +Inf by now */
52
    if (!R_FINITE(n)) /* must be +Inf by now */
54
	return(dgamma(x, m/2, 2./m, give_log));
53
	return(dgamma(x, m/2, 2./m, give_log));
55
    if (m > 1e14) {/* includes +Inf: code below is inaccurate there */
54
    if (m > 1e14) {/* includes +Inf: code below is inaccurate there */
56
	dens = dgamma(1./x, n/2, 2./n, give_log);
55
	dens = dgamma(1./x, n/2, 2./n, give_log);