Changes between Version 1 and Version 2 of SoC2014


Ignore:
Timestamp:
Jan 12, 2014, 8:24:11 PM (9 years ago)
Author:
christopher_kormanyos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoC2014

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