# Articles > Recommended Books on Numerical Programming

Here are some brief reviews of the books that I have used most while working on the "GNU Scientific Library".

All these books are personally recommended by me, they are detailed, readable and have **high-quality** information.

I have written this page so I can use it in reply to emails asking for advice on numerical programming.

As a physicist, I like books which explain how things work in detail, but don't get bogged down in pages of obscure mathematical formalism. These books strike the right balance.

I hope you find this list useful.

Brian GoughUPDATE: see also More Recommended Books for Numerical Programming.

## "Numerical Computation" (2 Volumes) by C.W. Ueberhuber

Springer 1997, ISBN: 3540620583 (Vol 1) and ISBN: 3540620575 (Vol 2).A readable but rigorous overview of modern numerical analysis, with extensive references to the literature. Goes into much more depth than "popular" books, covering both algorithms and practical issues such as low-level optimization. A nice feature is that it describes routines in well-known numerical libraries (both public domain and proprietary) in each section, giving advice on their usage.

The author is a professor of numerical analysis at the Technical University of Vienna, and one of the authors of the widely used public-domain numerical integration package QUADPACK.

Minor things to be aware of: the book contains a section on using the World Wide Web and FTP which is now outdated. It does not cover differential equations or random distributions. One can hope that there will be a future 3rd volume covering these.

Overall, thoroughly recommended for anyone who wants to know how to
write *high-quality* numerical software.

## "Accuracy and Stability of Numerical Algorithms" by N.J. Higham

SIAM, ISBN: 0898715210.Explains error analysis for numerical algorithms in detail, focusing on linear algebra. Unlike most books it covers both forward and backward error analysis -- if you weren't aware of the difference, it would be worth reading. Very readable, with many practical examples that can be used in GNU Octave (similar to MATLAB). It provides many references to the literature.

The author is a professor of numerical analysis at Manchester University (UK) and a noted expert in the field. He has made many important contributions to the LAPACK free linear algebra package.

## "Matrix Computations" (3rd Ed) by G.H. Golub, C.F. Van Loan

Johns Hopkins University Press 1996, ISBN: 0801854148.This is the best book I have found on the subject of numerical linear algebra. Covers all the topics to a high level, including parallel algorithms, and has extensive references to the literature.

If you start with this book for any problem in numerical linear algebra, you shouldn't go wrong.

## "Handbook of Mathematical Functions" edited by Abramowitz & Stegun

Dover, ISBN: 0486612724.The best day-to-day reference for pratical mathematical knowledge. In the GNU Scientific Library, the conventions of A&S are used wherever possible. It is a public domain book (originally produced by the US National Bureau of Standards), so it is available very cheaply -- it is worth getting several copies (for home/work).

## "LAPACK Users' Guide" (3rd Edition)

SIAM 1999, ISBN: 0898714478.I don't use LAPACK itself much, but this book contains some useful discussion of implementation issues for linear algebra. Of course, if you are using LAPACK you will need this book.

## "The Art of Computer Programming" (3rd Edition, 3 Volumes) by D. Knuth

Addison Wesley, ISBN: 0201485419For the numerical programmer, volume 2 (Semi-numerical algorithms) is the main volume of interest. It covers random number generators, random distributions, floating-point error analysis, multi-precision arithmetic, rational numbers & factorization, polynomials and power-series.

If you are serious about programming then it is important to read all of Knuth. The 3 volumes are not cheap, but you get what you pay for --- in terms of coverage and depth there is nothing comparable to Knuth.