Chapter 8. Linear Algebra

Linear algebra is an essential part of computational finance, and as such it is a necessary and fundamental component for financial C++ software development. Within the span of the two decades, some excellent open source matrix algebra libraries have emerged that have been adopted by the financial software industry, as well as in other computationally intensive domains such as data science, experimental physics, and medical research.

As C++ did not have all the convenient built-in multidimensional array capabilities that came with Fortran platforms, quantitative financial programmers making the transition to C++ back in the 1990s often found themselves in an inconvenient situation with limited options. These included building up this functionality mostly from scratch, wrestling with interfaces to numerical Fortran libraries such as the Basic Linear Algebra Subprograms (BLAS) and LAPACK (Linear Algebra PACKage), or somehow convincing management to invest in a third-party commercial C++ linear algebra library.

Contrived DIY solutions that were sometimes employed, based on what was available in C++ at the time, included representing a matrix as a vector of vector(s) or holding data in a two-dimensional dynamic C-array. Neither of these was particularly palatable, with the former being cumbersome and inefficient, and the latter exposing the software to the risks associated with raw pointers and dynamic memory management. One seemingly useful feature available ...

Get Learning Modern C++ for Finance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.