Displaying 2 results from an estimated 2 matches for "r_log_dbeta".
2000 Aug 26
0
Re: [R] too large alpha or beta in dbeta ? (PR#643)
..../gammalims.c */
+
+#else
+ static double xmax = 0; double xmin;
+ if (xmax == 0)
+ gammalims(&xmin, &xmax);
#endif
+
if (a <= 0 || b <= 0) ML_ERR_return_NAN;
if (x < 0 || x > 1)
@@ -35,10 +43,13 @@
if (x < 0 || x > 1)
return R_D__0;
+
+#define R_LOG_DBETA log(x)*(a - 1) + log(1 - x)*(b - 1) - lbeta(a, b)
- if(give_log) {
- return log(x)*(a - 1) + log(1 - x)*(b - 1) - lbeta(a, b);
- }
+ if(give_log)
+ return R_LOG_DBETA;
+ else if (a + b >= xmax) /* beta(a,b) might be = 0 numerically */
+ return exp(R_LOG_DBETA);
else {
double...
2000 Aug 28
0
Re: [R] too large alpha or beta in dbeta ? (PR#643)
..../gammalims.c */
+
+#else
+ static double xmax = 0; double xmin;
+ if (xmax == 0)
+ gammalims(&xmin, &xmax);
#endif
+
if (a <= 0 || b <= 0) ML_ERR_return_NAN;
if (x < 0 || x > 1)
@@ -35,10 +43,13 @@
if (x < 0 || x > 1)
return R_D__0;
+
+#define R_LOG_DBETA log(x)*(a - 1) + log(1 - x)*(b - 1) - lbeta(a, b)
- if(give_log) {
- return log(x)*(a - 1) + log(1 - x)*(b - 1) - lbeta(a, b);
- }
+ if(give_log)
+ return R_LOG_DBETA;
+ else if (a + b >= xmax) /* beta(a,b) might be = 0 numerically */
+ return exp(R_LOG_DBETA);
else {
double...