Changes between Version 27 and Version 28 of SoC2013


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

Add improved description for multiprecision

Legend:

Unmodified
Added
Removed
Modified
  • SoC2013

    v27 v28  
    158158* First of all, we will closely monitor the progress of this project and decide what precision ranges we would like to support.
    159159* 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.
     160* Further precision levels climb to thousands or even millions of decimal digits. These require algorithms of increasing complexity.
     161* One of the first steps is to provide I/O handling for character-based strings and C++ <iostream> and <iomanip> support.
     162* The next important step involves implementing the basic algebraic operations (+, -, *, /), in other words addition, subtraction, multiplication, and division, using a variety of techniques.
     163* Multiplication is the performance bottleneck in multiprecision and we will be spending a lot of time here. Depending on the digit-range goals, we may optionally include high-performance with Karatsuba multiplication and potentially ultra-high performance 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.
    165165* Finally, we need to ensure that the back-end seamlessly interoperates with Boost.Math.
    166166* 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.
     167
     168The 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.
    167169
    168170Heavy use will be made of
     
    174176* Fast Fourier transforms
    175177* Conversion to and from radix-2 and radix-10
    176 
    177 The 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.
    178178
    179179The 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.