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 62... Line 62...
62
    /* NaNs propagated correctly */
62
    /* NaNs propagated correctly */
63
    if(ISNAN(a) || ISNAN(b)) return a + b;
63
    if(ISNAN(a) || ISNAN(b)) return a + b;
64
#endif
64
#endif
65
 
65
 
66
    if (a < 0 || b < 0)
66
    if (a < 0 || b < 0)
67
	ML_ERR_return_NAN
67
	ML_WARN_return_NAN
68
    else if (a == 0 || b == 0)
68
    else if (a == 0 || b == 0)
69
	return ML_POSINF;
69
	return ML_POSINF;
70
    else if (!R_FINITE(a) || !R_FINITE(b))
70
    else if (!R_FINITE(a) || !R_FINITE(b))
71
	return 0;
71
	return 0;
72
 
72
 
Line 82... Line 82...
82
	double val = lbeta(a, b);
82
	double val = lbeta(a, b);
83
// underflow to 0 is not harmful per se;  exp(-999) also gives no warning
83
// underflow to 0 is not harmful per se;  exp(-999) also gives no warning
84
#ifndef IEEE_754
84
#ifndef IEEE_754
85
	if (val < lnsml) {
85
	if (val < lnsml) {
86
	    /* a and/or b so big that beta underflows */
86
	    /* a and/or b so big that beta underflows */
87
	    ML_ERROR(ME_UNDERFLOW, "beta");
87
	    ML_WARNING(ME_UNDERFLOW, "beta");
88
	    /* return ML_UNDERFLOW; pointless giving incorrect value */
88
	    /* return ML_UNDERFLOW; pointless giving incorrect value */
89
	}
89
	}
90
#endif
90
#endif
91
	return exp(val);
91
	return exp(val);
92
    }
92
    }