GSoC Hypergeometric functions (Pratyaksh Sharma)
Hello I'm interested in the Boost.Math Generalized Hyper geometric Functions project. Can anyone give some pointers on where to begin? I have sufficient experience with hypergeometric functions, but don't know exactly how to contribute to Boost. Just to start the discussion: Does everyone agree that a variety of methods need to employed for calculating the functions for different ranges of parameters? I'm familiar with methods that utilize the Gauss-Jacobi quadrature to solve the differential equation of concern, and also the Taylor series methods for smaller values of |a| and |z|. Any other ideas? Cheers, Pratyaksh
You could start by trying to compile and work with the detailed sample code provided in the link on the GSoC project page.
Just to start the discussion: Does everyone agree that a variety of methods need to employed for calculating the functions for different ranges of parameters?
Absolutely. We need various methods for various parameter ranges and also for different precision ranges.
Taylor series methods for smaller values of |a| and |z|.
Yes, whereby it can be challenging deciding on the range of convergence.
Any other ideas?
I like your idea of Gauss-Jacobi quadrature methods. There is also a *grand new* example featuring generation of Gauss-Laguerre coefficients for multiple-precision. https://github.com/boostorg/multiprecision/blob/develop/example/gauss_laguer... In this project, we will be investigating a variety of calculational methods including Chebyshev polynomial expansion, rational approximation, Pade approximation, and perhaps others. There are also some cool expansions for some hypergeometric functions in series of Bessel functions. Best regards, Chris.
Hi. I know it's not best idea now, but I just tried to implement Taylor series, because I don't have the book right now. If it is interesting, please look at https://github.com/AntonBikineev/math/blob/hypergeometric/include/ boost/math/special_functions/detail/hypergeometric_pfq_series.hpp Also I have some ideas about reducing division operators in sum and thereby reducing rounding errors. Best regards, Anton.
...just tried to implement Taylor series,
Hi Anton, I took a look at your Taylor series code. It's a good start.
Also I have some ideas about reducing division operators in sum and thereby reducing rounding errors.
You are correct. There are some possible simplifications. I have some alternative code somewhere that I will send to you. I prefer to send you this detailed information in a private e-mail, which will be sent in a few days, at the latest on the weekend. Best regards, Chris.
I know it's not best idea now, but I just tried to implement Taylor series, because I don't have the book right now. If it is interesting, please look at https://github.com/AntonBikineev/math/blob/hypergeometric/include/ boost/math/special_functions/detail/hypergeometric_pfq_series.hpp
Also I have some ideas about reducing division operators in sum and thereby reducing rounding errors.
Nice. I guess the complicated part of implementing these functions is figuring out how to divide up the input domain: 1) When these series can safely be used. 2) When the result is a domain error. 3) When the result is necessarily infinity (series diverges to +INF). 4) When you can use recurrence relations and other identities to move closer to (1), and if those relations are stable. If the recursion is unstable then can something like Millers algorithm be used. Cheers, John.
participants (4)
-
Anton Bikineev
-
Christopher Kormanyos
-
John Maddock
-
Pratyaksh Sharma