Changes between Version 26 and Version 27 of SoC2013


Ignore:
Timestamp:
Mar 27, 2013, 9:10:31 PM (10 years ago)
Author:
christopher_kormanyos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoC2013

    v26 v27  
    149149We 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.
    150150
    151 This 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.
     151This is definitely an advanced project in C++ and algorithmic. Yet at the same time, it is an exciting and challenging task. It will require 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
     153Boost.Multiprecision already has a boost-licensed decimal (radix-10) floating-point back-end. This project will provide a binary (radix-2) floating point back-end that is expected to improve efficiency and provide a more natural conversion to and from C++ built-in floating-point types having radix-2 such as float, double, and long double.
     154
     155We will now discuss various project details and sketch the general progression of the steps that will be undertaken.
     156
     157The main steps of algorithmic design include
     158* First of all, we will closely monitor the progress of this project and decide what precision ranges we would like to support.
     159* The easiest precision level involves floating-point numbers with less than about 1,000 decimal digits of precision.
     160* Further levels climb to thousands or even millions of digits, but these require algorithms of increasing complexity.
     161* One of the first steps is to providing I/O handling for character-based strings and C++ <iostream> support.
     162* The next important step involves implementing the basic algebraic operations (+, +, *, /) using a variety of techniques.
     163* Multiplication is the performance bottleneck in multiprecision, and depending on the range goals, we may optionally include high-performance with Karatsuba multiplication and potentially ultra high performance and high digit counts with FFT-based multiplication.
     164* Optionally we will be providing support for the elementary transcendental functions listed in <cmath>, as is now done for the existing back-ends.
     165* Finally, we need to ensure that the back-end seamlessly interoperates with Boost.Math.
     166* Testing is essential in order to verify the correctness of the implementation. We will, therefore, be writing a variety of tests to validate the algebra as well as the functions.
    152167
    153168Heavy use will be made of
     
    160175* Conversion to and from radix-2 and radix-10
    161176
    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.
     177The existing radix-10 implementation in <boost/multiprecision/cpp_dec_float.hpp> can serve as a guide for candidates interested in visualizing the level of complexity involved in this project. In addition, a sketch consisting of mainly a feasibility check for radix-2 can be found in the sandbox.
     178
     179The new reference book "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.
    163180* http://www.loria.fr/~zimmerma/mca/mca-cup-0.5.1.pdf
    164181