| | 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 | |