| 51 | |
| 52 | |
| 53 | === Boost.Math Bernoulli numbers === |
| 54 | Boost.Math [http://www.boost.org/doc/libs/1_53_0/libs/math/doc/sf_and_dist/html/] |
| 55 | is a large well-established Boost library, but new mathmetical functions can always be added. |
| 56 | |
| 57 | |
| 58 | We wonder if students would be interested in adding Bernoulli numbers needed in several useful series. |
| 59 | |
| 60 | [http://en.wikipedia.org/wiki/Bernoulli_number] |
| 61 | |
| 62 | [http://mathworld.wolfram.com/BernoulliNumber.html] |
| 63 | |
| 64 | * Add support for Bernoulli numbers along with thread-safe caching. |
| 65 | * Add support for polygamma of positive integer order (requires Bernoulli numbers). |
| 66 | * Improve tgamma/lgamma for multiprecision types based on Stirling's approx. |
| 67 | * Optional: Add support for the Hurwitz zeta function. |
| 68 | |
| 69 | This would clearly require some serious math skills, but also good knowledge of C++, |
| 70 | especially using templates which Boost.Math makes much use of to provide not only |
| 71 | built-in double and long double but recently multiprecision, large fixed and arbitrary precision. |
| 72 | |
| 73 | If studying [http://svn.boost.org/svn/boost/trunk/boost/math/special_functions/gamma.hpp] |
| 74 | leaves you frightened, then this project is not for you. |
| 75 | |
| 76 | If you would like to demonstrate your skills, you might like to try coding the naive |
| 77 | Akiyama–Tanigawa algorithm for second Bernoulli numbers Bn |
| 78 | [http://en.wikipedia.org/wiki/Bernoulli_number#Algorithmic_description] |
| 79 | using Boost.Math. Extra marks for providing a Boost.Test comparing with a handful of published values. |
| 80 | You can use any platform, Linux, Mac or Microsoft with your IDE of choice, perhaps Visual Studio or NetBeans. |
| 81 | |
| 82 | The project will by mentored by Paul Bristow for administration and Boost infrastructure, |
| 83 | and John Maddock and Christopher Kormanyos for mathematical and algorithmic expertise. |
| 84 | |