215 | | Provide an implementation of a Fixed-Point library based on [1]. |
216 | | |
217 | | A prototype with a different interface is available at [2] |
| 215 | A fixed-point number is a finite-precision approximation of a real number with a fixed number of digits before the radix point and a fixed number of digits after the radix point. Fixed-point numbers are used in diverse technical fields ranging from optimized microcontroller programming through high-performance financial calculations and beyond. In microcontroller programming, fixed-point numbers can provide floating-point representations with near-integer performance even if a dedicated floating-point unit is not available. This is key because it allows the use of sophisticated mathematical calculations including elementary transcendental functions, special functions of applied mathematics, digital filters, power regulation methods, etc., withing the regime of cost-sensitive tiny devices. |
| 216 | |
| 217 | In this project, we will provide an implementation of a fixed-point library based on [1]. The core work involves developing a series of templates and template specializations that embody the fixed-point numbers in various precision ranges. A prototype with a different interface is available at [2]. We will concentrate on radix-2 fixed-point representations. We will attempt to cover a wide range of precision and performance, ranging from tiny 8-bit and 16-bit fixed-point representations all the way up to 32-bit, 64-bit and beyond. As with all Boost projects, testing and documentation are mandatory and we will provide a rich test suite and legible documentation as we progress. |
| 218 | |
| 219 | This project requires a high degree of knowledge of advanced C++ methods such as template programming, generic numeric programming, and the ability to represent data structures in an abstract form. |
| 220 | |
| 221 | If you are interested in this project, investigate the reference templates in [2]. A simplified fixed-point representation targeting cost-sensitive microcontroller applications can be found in [3], as described in [4]. If you would like to display your skills and understanding of the project domain, try to use any of these reference applications in a real-world calculation. Describe your calculation and the results you obtain. |