HOME

TheInfoList



OR:

''Numerical Recipes'' is the generic title of a series of books on
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specificat ...
s and
numerical analysis Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic computation, symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of ...
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.


Overview

The ''Numerical Recipes'' books cover a range of topics that include both classical
numerical analysis Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic computation, symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of ...
( interpolation,
integration Integration may refer to: Biology *Multisensory integration *Path integration * Pre-integration complex, viral genetic material used to insert a viral genome into a host genome *DNA integration, by means of site-specific recombinase technology, ...
,
linear algebra Linear algebra is the branch of mathematics concerning linear equations such as: :a_1x_1+\cdots +a_nx_n=b, linear maps such as: :(x_1, \ldots, x_n) \mapsto a_1x_1+\cdots +a_nx_n, and their representations in vector spaces and through matrices. ...
,
differential equations In mathematics, a differential equation is an equation that relates one or more unknown functions and their derivatives. In applications, the functions generally represent physical quantities, the derivatives represent their rates of change, an ...
, and so on), signal processing ( Fourier methods,
filtering Filter, filtering or filters may refer to: Science and technology Computing * Filter (higher-order function), in functional programming * Filter (software), a computer program to process a data stream * Filter (video), a software component tha ...
), statistical treatment of data, and a few topics in
machine learning Machine learning (ML) is a field of inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of artificial intelligence. Machine ...
(
hidden Markov model A hidden Markov model (HMM) is a statistical Markov model in which the system being modeled is assumed to be a Markov process — call it X — with unobservable ("''hidden''") states. As part of the definition, HMM requires that there be an ob ...
, 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 A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
, with the code printed in the book. Each version is keyed to a specific language. According to the publisher,
Cambridge University Press Cambridge University Press is the university press of the University of Cambridge. Granted letters patent by Henry VIII of England, King Henry VIII in 1534, it is the oldest university press A university press is an academic publishing hou ...
, 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). And as of the end of 2017, the book had over 44000 citations on
Google Scholar Google Scholar is a freely accessible web search engine that indexes the full text or metadata of scholarly literature across an array of publishing formats and disciplines. Released in beta in November 2004, the Google Scholar index includes p ...
.


History

The first publication was in 1986 with the title,”Numerical Recipes, The Art of Scientific Computing”, containing code in both Fortran and Pascal; an accompanying book, “Numerical Recipes Example Book (Pascal)” was first published in 1985. (A preface note in “Examples" mentions that the main book was also published in 1985, but the official note in that book says 1986.) Supplemental editions followed with code 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: However, as it turned out, the 1980s were fertile years for the "black box" side, yielding important libraries such as
BLAS Basic Linear Algebra Subprograms (BLAS) is a specification that prescribes a set of low-level routines for performing common linear algebra operations such as vector addition, scalar multiplication, dot products, linear combinations, and matrix ...
and
LAPACK LAPACK ("Linear Algebra Package") is a standard software library for numerical linear algebra. It provides routines for solving systems of linear equations and linear least squares, eigenvalue problems, and singular value decomposition. It als ...
, and integrated environments like
MATLAB MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation ...
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.Press, William H.; and Teukolsky, Saul A.; "Numerical Recipes: Does This Paradigm Have a Future?," Computers in Physics, 11, 416 (1997)
Preprint.
/ref> 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 nags) or by paid or institutional subscription (with faster, full access and no nags). In 2015 Numerical Recipes sold its historic two-letter domain name nr.com and became numerical.recipes instead.


Reception


Content

Numerical Recipes is a single volume that covers very broad range of algorithms. Unfortunately that format skewed the choice of algorithms towards simpler and shorter early algorithms which were not as accurate, efficient or stable as later more complex algorithms. (updated for the third edition

(Date estimated by Editor's remark. Last update circa September 1999

The first edition had also some minor bugs, which were fixed in later editions; however according to the authors for years they were encountering on the internet rumors that Numerical Recipes is ''"full of bugs"''. They attributed this to people using outdated versions of the code, bugs in other parts of the code and misuse of routines which require some understanding to use correctly. (Date given is first archive.org date for the page on the old nr.com domain.) The rebuttal does not, however, cover criticisms regarding lack of mentions to code limitations, boundary conditions, and more modern algorithms, another theme in Snyder's comment compilation. A precision issue in Bessel functions has persisted to the third edition according to Pavel Holoborodko. Despite criticism by numerical analysts, engineers and scientists generally find the book conveniently broad in scope. Norman Gray concurs in the following quote:
Numerical Recipes rdoes not claim to be a numerical analysis textbook, and it makes a point of noting that its authors are (astro-)physicists and engineers rather than analysts, and so share the motivations and impatience of the book's intended audience. The declared premise of the NR authors is that you will come to grief one way or the other if you use numerical routines you do not understand. They attempt to give you enough mathematical detail that you understand the routines they present, in enough depth that you can diagnose problems when they occur, and make more sophisticated choices about replacements when the NR routines run out of steam. Problems will occur because ../blockquote>


License

The code listings are copyrighted and commercially licensed by the ''Numerical Recipes'' authors. A license to use the code is given with the purchase of a book, but the terms of use are highly restrictive. For example, programmers need to make sure NR code cannot be extracted from their finished programs and used – a difficult requirement with dubious enforceability. However, ''Numerical Recipes'' does include the following statement regarding copyrights on computer programs:
Copyright does not protect ideas, but only the expression of those ideas in a particular form. In the case of a computer program, the ideas consist of the program's methodology and algorithm, including the necessary sequence of steps adopted by the programmer. The expression of those ideas is the program source code... If you analyze the ideas contained in a program, and then express those ideas in your own completely different implementation, then that new program implementation belongs to you.
One early motivation for the
GNU Scientific Library The GNU Scientific Library (or GSL) is a software library for numerical computations in applied mathematics and science. The GSL is written in C; wrappers are available for other programming languages. The GSL is part of the GNU Project and is d ...
was that a free library was needed as a substitute for ''Numerical Recipes''.


Style

Another line of criticism centers on the coding style of the books, which strike some modern readers as "Fortran-ish", though written in 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, 1st Edition'', 1986, . ( Fortran and Pascal) * ''Numerical Recipes in C. The Art of Scientific Computing, 1st Edition'', 1988, . * ''Numerical Recipes in Pascal. The Art of Scientific Computing, 1st Edition'', 1989, . * ''Numerical Recipes in Fortran. The Art of Scientific Computing, 1st Edition'', 1989, . * ''Numerical Recipes in
BASIC BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
. The Art of Scientific Computing, 1st Edition'', 1991, . (supplemental edition) * ''Numerical Recipes in Fortran. The Art of Scientific Computing, 2nd Edition'', 1992, . * ''Numerical Recipes in C. The Art of Scientific Computing, 2nd Edition'', 1992, . * ''Numerical Recipes in Fortran 90. The Art of Parallel Scientific Computing, 2nd Edition'', 1996, . * ''Numerical Recipes in
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
. The Art of Scientific Computing, 2nd Edition'', 2002, . * ''Numerical Recipes. The Art of Scientific Computing, 3rd Edition'', 2007, . (
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
code) The books are published by
Cambridge University Press Cambridge University Press is the university press of the University of Cambridge. Granted letters patent by Henry VIII of England, King Henry VIII in 1534, it is the oldest university press A university press is an academic publishing hou ...
.


References


External links

*
Current electronic edition of Numerical Recipes
(limited free page views). * {{google books , id=1aAOdzK3FegC

(links to C, Fortran 77, and Fortran 90 versions in various formats, plus other hosted books) * W. Van Snyder
Why not use Numerical Recipes?
, full four-page mirror by Lek-Heng Lim (includes discussion of alternatives) Computer science books Engineering textbooks Mathematics books Numerical software