| 24 | |
| 25 | === Boost.Math Generalized Hypergeometric Functions === |
| 26 | |
| 27 | Boost.Math [http://www.boost.org/doc/libs/1_55_0/libs/math/doc/html/index.html] |
| 28 | is a large well-established Boost library, but new mathematical functions can always be added. |
| 29 | |
| 30 | Generalized hypergeometric functions are convergent power series |
| 31 | that have rational coefficients. |
| 32 | |
| 33 | [http://en.wikipedia.org/wiki/Generalized_hypergeometric_function] |
| 34 | |
| 35 | Hypergeometric functions are remarkably versatile because many of |
| 36 | the well-known functions and special functions of pure and applied |
| 37 | mathematics are special cases of hypergeometric functions. |
| 38 | These include various mathematical constants, |
| 39 | elementary transcendental functions, Bessel functions, |
| 40 | the incomplete gamma function, confluent hypergemetric functions, |
| 41 | generalized Legendre functions, and (infinitely) many more. |
| 42 | |
| 43 | Even though the theory of hypergeometric functions is well-established, |
| 44 | there are, nonetheless, very few programs or libraries that offer |
| 45 | calculations of these fascinating and versatile functions. |
| 46 | |
| 47 | In this project, we will implement fast, accurate calculations of |
| 48 | certain generalized hypergeometric functions and establish convergent |
| 49 | parameter ranges for these. We will write them with generic templates, |
| 50 | as is customary and suitable for Boost.Math. |
| 51 | |
| 52 | Our work will make use of many numerical methods for special functions, |
| 53 | including expansions in Chebyshev polynomials, rational approximations, |
| 54 | Pade approximations, Taylor series, asymptotic series, and others. |
| 55 | |
| 56 | The main goals of the project include: |
| 57 | |
| 58 | * Investigate calculation methods for hypergeometric_0f1, 1f0, 1f1, 1f2, 2f1. |
| 59 | * Evaluate regions of parameter convergence for these. |
| 60 | * Ensure that calculations are fast and accurate computation for all built-in types and multiple-precision types. |
| 61 | * Optional: Add support generalized Legendre functions of type-I to Boost.Math. |
| 62 | * Optional: Replace certain internal calculations within Boost.Math with hypergemetric functions. |
| 63 | |
| 64 | This project requires strong interest in and dedication to serious mathematical programming |
| 65 | and knowledge of C++, especially using templates which Boost.Math makes much |
| 66 | use of to support not only built-in float, double and long double but also multiple precision types. |
| 67 | You will need to have experience of using Boost libraries, including Boost.Test, and |
| 68 | a rudimentary or working knowledge of GIT will be useful. |
| 69 | |
| 70 | A preliminary investigation for this project can be found here: |
| 71 | [https://github.com/boostorg/multiprecision/blob/develop/example/hypergeometric_luke_algorithms.cpp] |
| 72 | In this file, we are investigating Chebyshev expansions for multiple-precision calculations |
| 73 | of hypergeometric functions. |
| 74 | |
| 75 | If this code leaves you terrified, then this project is not for you. |
| 76 | But if it only frightens you a little bit and piques your interest |
| 77 | (and you have a passion for numerical programming), then this project |
| 78 | is right for you. |
| 79 | |
| 80 | If you would like to demonstrate your skills, use the file in the |
| 81 | link above such that hypergeometric_0f1 is used for multiple-precision |
| 82 | calculations of cylindrical Bessel functions (i.e., cyl_bessel_j). |
| 83 | Use Boost's cpp_dec_float_50 type, for example. Discuss the relation between |
| 84 | hypergeometric_0f1 and cyl_bessel_j, investigate convergence properties, |
| 85 | and take a peek at run-time characteristics. |
| 86 | You can use any platform, Linux, Mac or Microsoft with your IDE of choice, |
| 87 | perhaps Visual Studio, Eclipse, Code Blocks, or NetBeans. |
| 88 | |
| 89 | This project will by mentored by Christopher Kormanyos, and |
| 90 | supported by Paul Bristow and John Maddock mathematical and algorithmic expertise, |
| 91 | administration, Boost infrastructure. |
| 92 | |