On 4/2/2012 5:11 PM, Bill Gosper wrote:
*Quad>* Hey all.
Does anyone have any ideas on computing Bessel functions to high precision (over the complex plane)?
Googling gives [1] and [2]. Sorry, [1] is behind a paywall.
I am wondering if one of you has a secret magical sum or product that just magically works well for high precision computation. If not, maybe we can develop some strategies!
Thanks,
Robert Smith
[1]dl.acm.org/citation.cfm?id=1466254 <http://dl.acm.org/citation.cfm?id=1466254> [2]web.cs.dal.ca/~jborwein/bessel.pdf <http://web.cs.dal.ca/%7Ejborwein/bessel.pdf> *------ You're of course welcome to my Macsyma code. At the time, I used (a tiny fraction of) Watson's Treatise, but now there's dlmf*.nist.gov/10 <http://nist.gov/10> . My only novelty was using matrix products to do the series--merely a small constant speedup. I may not even have gotten around to handling the asymptotics. Do you suspect Mathematica knows something we don't? --rwg
I don't know about complex arguments, but the high-precision real computation can be done by a Miller-type running the 3-term recurrence backward. This is done in CACM algorithm 236 by Gautschi, and it is actually arbitrary-precision, if that is the arithmetic you have underneath the (ALGOL-60) implementation. I have such code for Maxima and for Lisp. The usual series-for-small-arg plus asymptotic-series-for-large-arg doesn't really work well for high-precision requirements. There are also ways of expanding Taylor series around zeros elsewhere, and maybe other tricks. It is possible to generate high precision derivatives at zeros of Bessel functions, easily. There are also tricks for finding high precision values of bessel zeros. And Mathematica is inaccurate in finding bessel values near zeros of bessel functions in machine precision. It is much better in arbitrary precision. Does it know something we don't know? Probably not. RJF