| 144 | === Boost.Multiprecision === |
| 145 | |
| 146 | Boost.Multiprecision [http://www.boost.org/doc/libs/1_53_0/libs/multiprecision/doc/html/boost_multiprecision/intro.html/] |
| 147 | is a new Boost library that offers multiple precision integer, rational and floating-point types with precision exceeding those of built-in float, double and long double. Boost.Multiprecision uses a uniform architecture that embodies the extended precision type with a front-end generic number template combined with a one of several back-end number types that grind out the nuts-and-bolts of the multiprecision work. |
| 148 | |
| 149 | We are looking for a student to assist with writing a high-performance radix-2 floating-point back-end for Boost.Multiprecision. The current implementation uses radix-10 and suffers certain performance losses and lack of extensibility therefrom. |
| 150 | |
| 151 | This is exciting and challenging task requires a high level of adeptness with C++ coding, mathematics, and algorithms. It combines high-performance with absolute error intolerance. As such, this project will hone the skills of the mathematical and algorithmic programmer and serve well as a research topic for students whose studies include algorithms. |
| 152 | |
| 153 | Heavy use will be made of |
| 154 | * C++ |
| 155 | * Templates |
| 156 | * The STL |
| 157 | * Memory management |
| 158 | * Schoolbook and Karatsuba multiplication |
| 159 | * Fast Fourier transforms |
| 160 | * Conversion to and from radix-2 and radix-10 |
| 161 | |
| 162 | The reference "Modern Computer Arithmetic" is a valuable source for the algorithms in this project. A draft version of the book is available free of charge and the printed copy can be found in a library or at a book seller. |
| 163 | * [http://www.loria.fr/~zimmerma/mca/mca-cup-0.5.1.pdf] |
| 164 | |
| 165 | This project will be mentored by Christopher Kormanyos |
| 166 | |