Hello, I have found a similar problem, probably related to the inaccuracy in the series calculation of the hypergeometric function for gsl_sf_hyperg_1F1( a < 0, b > 0, x << 0).
For example : gsl_sf_hyperg_1F1(-1.5, 1.5, - 99.9) returns the correct value of 4.55768964383819423e+02 while gsl_sf_hyperg_1F1(-1.5, 1.5, -100.) returns -1.13760e+20 when the correct value is 456.44 (from Mathematica) I think the Kummer formula ( 1F1(a,b,x) = exp(-x) * 1F1(b-a,b,-x) could be used for larger value of |x| ( at least works for |x| = 700), while the current cut-off is for |x| < 100. Best Regards Lorenzo On Dec 11, 2009, at 9:41 PM, Brian Gough wrote: > At Mon, 30 Nov 2009 15:26:11 +0100, > Weibin Li wrote: >> The output of above code shows an extremely large error. by increasing >> Ri, the relative error decreases. Is there any idea to fix this? > > I've looked at the problem. Unfortunately I think it is just very > difficult to compute an accurate value in this region. The large > error reflects that. I have logged it at as bug at > https://savannah.gnu.org/bugs/index.php?28267 > > I could not find of any algorithm that gives an accurate value in this > region of parameters (a<<0, |a|>b>0, x>>0) , due to cancellation > errors in both the ordinary 1F1 series and Kummer transformed series. > If you know of one I would be glad to hear it. > > -- > Brian Gough > > GNU Scientific Library - > http://www.gnu.org/software/gsl/ > > > _______________________________________________ > Bug-gsl mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/bug-gsl _______________________________________________ Bug-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-gsl
