Numerical Recipes is the generic title of a series of books on algorithms and numerical analysis by William H. Press, Saul A. Teukolsky, William T. Vetterling and Brian P. Flannery. In various editions, the books have been in print since 1986. The most recent edition was published in 2007.
The Numerical Recipes books cover a range of topics that include both classical numerical analysis (interpolation, integration, linear algebra, differential equations, and so on), signal processing (Fourier methods, filtering), statistical treatment of data, and a few topics in machine learning (hidden Markov models, support vector machines). The writing style is accessible and has an informal tone. The emphasis is on understanding the underlying basics of techniques, not on the refinements that may, in practice, be needed to achieve optimal performance and reliability. Few results are proved with any degree of rigor, although the ideas behind proofs are often sketched, and references are given. Importantly, virtually all methods that are discussed are also implemented in a programming language, with the code printed in the book. Each version is keyed to a specific language.
According to the publisher, Cambridge University Press, the Numerical Recipes books are historically the all-time best-selling books on scientific programming methods. In recent years, Numerical Recipes books have been cited in the scientific literature more than 3000 times per year according to ISI Web of Knowledge (e.g., 3962 times in the year 2008).
First published in 1989, with code in Fortran (soon followed by supplemental editions in Pascal, BASIC, and C), Numerical Recipes took, from the start, an opinionated editorial position at odds with the conventional wisdom of the numerical analysis community:
|“||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.||”|
However, as it turned out, the 1980s were fertile years for the "black box" side, yielding important integrated environments like MATLAB and Mathematica. By the early 1990s, when Second Edition versions of Numerical Recipes (with code in C, Fortran-77, and Fortran-90) were published, it was clear that the constituency for Numerical Recipes was by no means the majority of scientists doing computation, but only that slice that lived between the more mathematical numerical analysts and the larger community using integrated environments. The Second Edition versions occupied a stable role in this niche environment.
By the mid-2000s, the practice of scientific computing had been radically altered by the mature Internet and Web. Recognizing that their Numerical Recipes books were increasingly valued more for their explanatory text than for their code examples, the authors significantly expanded the scope of the book, and significantly rewrote a large part of the text. They continued to include code, still printed in the book, now in C++, for every method discussed. The Third Edition was also released as an electronic book, eventually made available on the Web for free (with limited page views) or by paid or institutional subscription (with unlimited page views).
An early reviewer wrote, "The phrase 'numerical recipes' is bound to send the shudders down every honest numerical mathematician's spine." He also praised, however, the authors' readiness to "go out on a limb and present their own opinions". Given the editorial style of the books, it is not surprising that they were (and to some extent remain) controversial within the numerical analysis community. Early criticism centered on the books' assumed unreliability (the First Edition indeed contained some mistakes), the exclusion of some algorithms, and the authors' implication, not always correct, that their programs were as efficient and reliable as "black-box" libraries, for example the NAG Numerical Libraries. Although not mentioning Numerical Recipes by name, Whaley et al. demonstrate that LAPACK with a highly optimized BLAS library can be an order of magnitude faster (or more) than textbook-style triply nested-loop linear-algebra routines similar to the code in Numerical Recipes. As another example, Frigo and Johnson point out that the fast Fourier transform (FFT) code in highly optimized programs on modern computer architectures is 5–40 times faster than the example in Numerical Recipes.
A second line of criticism centers on the fact that, although printed in the books, the code is copyright by the Numerical Recipes authors, and thus not freely available for use under a GNU General Public License or similar open license. Indeed, one early motivation for the GNU Scientific Library was that a free library was needed as a substitute for Numerical Recipes. The Numerical Recipes authors have been unapologetic to this criticism. They derive income from selling individual and corporate licenses to the code, and clearly consider the Numerical Recipes enterprise as a business.
A third line of criticism centers on the coding style of the books, which strike some modern readers as "Fortran-ish", even when the actual coding language is contemporary, object-oriented C++. The authors have defended their very terse coding style as necessary to the format of the book because of space limitations and for readability.
Titles in the series (partial list)
The books differ by edition (1st, 2nd, and 3rd) and by the computer language in which the code is given.
- Numerical Recipes. The Art of Scientific Computing, 3rd Edition, 2007, ISBN 0-521-88068-8. (C++ code)
- Numerical Recipes in C. The Art of Scientific Computing, 2nd Edition, 1992, ISBN 0-521-43108-5.
- Numerical Recipes in Fortran 77. The Art of Scientific Computing, 2nd Edition, 1992, ISBN 0-521-43064-X.
- Numerical Recipes in Fortran 90. The Art of Parallel Scientific Computing, 2nd Edition, 1996, ISBN 0-521-57439-0.
- Numerical Recipes in Pascal. The Art of Scientific Computing, 1st Edition, 1989, ISBN 0-521-37516-9.
The books are published by Cambridge University Press.
- Thomson Reuters, Web of Knowledge, Cited Reference Search.
- Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (1986). "Preface". Numerical Recipes: The Art of Scientific Computing. New York: Cambridge University Press. p. xi. ISBN 0-521-30811-9.
- Press, William H.; and Teukolsky, Saul A.; "Numerical Recipes: Does This Paradigm Have a Future?," Computers in Physics, 11, 416 (1997). Preprint.
- Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). "Preface to the Third Edition". Numerical Recipes: The Art of Scientific Computing (3rd ed.). New York: Cambridge University Press. p. xi. ISBN 978-0-521-88068-8.
- Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). Numerical Recipes: The Art of Scientific Computing (3rd ed.). New York: Cambridge University Press. ISBN 978-0-521-88068-8.
- Iserles, Arieh; Mathematical Gazette, vol. 73, no. 464 (June 1989)
- Whaley, R. Clint; Petitet, Antoine; and Dongarra, Jack J.; "Automated empirical optimization of software and the ATLAS project," Parallel Computing 27, 3–35 (2001).
- Johnson, Steven G.; and Frigo, Matteo; "Implementing FFTs in practice in Fast Fourier Transforms (Burrus, C. Sidney; ed.), ch. 11, Rice University, Houston TX: Connexions, September 2008.
- Numerical Recipes Web site, Numerical Recipes Code
- Numerical Recipes web site.
- Current electronic edition of Numerical Recipes (limited free page views).
- Older versions of Numerical Recipes available electronically (links to C, Fortran 77, and Fortran 90 versions in various formats, plus other hosted books)
- Reviews of Numerical Recipes
- Norman Gray, A balanced discussion of NR and its critics
- Alternatives to Numerical Recipes