Fri 21 Nov 2008 03:47:34 PM UTC, original submission:
From: "Wang, Frank" <frank.wang@validusre.bm>
Subject: RE: [Bug-gsl] bug with function gsl_ran_beta
Date: Tue, 18 Nov 2008 18:59:54 -0400
Hi Ralph,
Thank you very much for your quick response.
The problem is cuased by the truncation of double to unsiged int in the function gsl_ran_gamma() in file gamma.c:
double
gsl_ran_gamma (const gsl_rng * r, const double a, const double b)
{
/* assume a > 0 */
unsigned int na = floor (a);
//Frank Wang add 11/18/2008 for fix bug when big a is inputed
if(a >= UINT_MAX )
return b*(gamma_large(r, floor(a)) + gamma_frac(r, a - floor(a)) );
if (a == na)
{
return b * gsl_ran_gamma_int (r, na);
}
else if (na == 0)
{
return b * gamma_frac (r, a);
}
else
{
return b * (gsl_ran_gamma_int (r, na) + gamma_frac (r, a - na)) ;
}
}
When this fix is applied, I get simulation compatible with R or Matlab.
Best Regards,
Frank
|