Numerical Recipes

From Wikipedia, the free encyclopedia

Numerical Recipes is the generic title of an influential series of books on algorithms and numerical analysis, all by William Press, Saul Teukolsky, William Vetterling and Brian Flannery:

Contents

[edit] Overview

Numerical Recipes in Fortran: The Art of Scientific Computing by William Press, Saul Teukolsky, William Vetterling and Brian Flannery
Numerical Recipes in Fortran: The Art of Scientific Computing by William Press, Saul Teukolsky, William Vetterling and Brian Flannery

The books contain an enormous amount of material on computational methods, and an accompanying disk includes a large amount of computer code and several libraries. The scope is supposed to be "everything up to, but not including, partial differential equations (PDEs)", although the second edition does include a chapter on PDEs that discusses the important concepts in the field and cites the most important papers.

The Numerical Recipes series is notable for its accessibility and generally informal tone. The emphasis is on the understanding of techniques (the authors repeatedly state their suspicion of black-box techniques). They say that the algorithms emphasise clarity and simplicity:[1]

If there is a single dominant theme in this book, it is that practical methods of numerical computation can be simultaneously efficient, clever, and — important — clear. The alternative viewpoint, that efficient computational methods must necessarily be so arcane and complex as to be useful only in "black box" form, we firmly reject.

Some of the topics discussed are: random number generation, sorting, special functions, orthogonal polynomials, optimization techniques, statistical methods, Fourier transforms and wavelet transforms.

[edit] Analysis and criticism

The series has attracted a great deal of acclaim and criticism. Acclaim typically focuses on the clear explanations and the wide range of methods presented.

The books are especially controversial in the numerical analysis community. Negative criticism has centred on the books' assumed unreliability (the first edition contained some mistakes), the exclusion of some algorithms, the authors' implication that their programs have efficiency and reliability comparable to that of "black-box" libraries (see above), and the fact that the software cannot be freely redistributed in modified (or unmodified) version—it is issued under a non-free licence. A well-known free software library providing many functions similar to those in Numerical Recipes is the GNU Scientific Library.

For example, Whaley et al., 2001, maintain that LAPACK with a highly optimized BLAS library can be an order of magnitude faster than textbook linear-algebra routines such as the Gaussian elimination or LU decomposition code in Numerical Recipes (see e.g. ). (In contrast, the Recipes authors state that "much of the sophistication of complicated 'linear equation-solving packages' is devoted to the detection and/or correction of [numerical accuracy problems]", although they also mention LAPACK and LINPACK as having "increased efficiency" by minimizing the "number of operations" and "storage" for "very large linear systems".) As another example, Frigo and Johnson (2005) point out that the fast Fourier transform (FFT) code in Numerical Recipes is 3–10 times slower than highly optimized programs on modern computer architectures. (In contrast, the Recipes authors write that tricks such as larger radices for the FFT "can be faster than simpler FFTs by some significant, but not overwhelming, factor, e.g., 20 or 30 percent.")

[edit] Notes

  1. ^ From the preface to the first edition, which is reprinted in the second edition.

[edit] References

[edit] Titles

Each book in the Numerical Recipes series communicates much the same information, but focuses on its implementation in a particular computer programming language.

The books, which are published by Cambridge University Press, are now in their third edition.

[edit] Journal articles

  • R. Clint Whaley, Antoine Petitet, and Jack J. Dongarra, "Automated empirical optimization of software and the ATLAS project," Parallel Computing 27, 3-35 (2001).
  • M. Frigo and S. G. Johnson, "The design and implementation of FFTW3," Proc. IEEE 93 (2), 216-231 (2005).

[edit] See also

[edit] External links

Languages