Lucanus Simonson, Andrii Sydorchuk: Robust and efficient multi precision algorithms design
Channel: CppNow
Date: 2012-06-23

Andrii's talk from C++Now 2012!

Design and implementation of a complex numeric algorithm is a consensus between the following four areas: usability, extensibility, efficiency and robustness.

Usability is the complexity of the exposed algorithm interface for the user not experienced in the area. It also includes ability to configure algorithm for more advanced users.

Extensibility makes algorithm generic and flexible on reconstructing and substituting parts of it: algorithm itself, underlying data structures, calculus kernel, numeric types, etc.

Efficiency starts with analysis of the algorithm complexity and data structures, goes through memory and performance profiling and ends up with system/compiler specific optimizations. It covers analysis of the numeric types operations and comparison of the received implementation with other known approaches.

Robustness is probably the most important research area of the numeric algorithms. It answers the question if the algorithm internal data structures could be corrupted during the runtime. It defines what is the algorithm output and to which extent it is correct and reliable. Or in other words what is the difference between the output one can receive and random data.

This presentation introduces algorithms by looking at the real-world problems that motivate them. We cover all of the above mentioned areas giving algorithm design techniques and implementation examples that were used in the Boost.Polygon.Voronoi library.
---

*--*

---