Pages: p. 67
The SIAM 100-Digit Challenge: A Study in High-Accuracy Numerical Computing, by Folkmar Bornemann et al., SIAM, 2004, ISBN 089871561X, US$57.
The SIAM 100-Digit Challenge is an entertaining and valuable book that belongs on the shelf of everyone who takes numerical computation seriously. Even the story of how the book came to be is interesting. In January 2002, Nick Trefethen published an article in SIAM News in which he posed 10 computational problems, each having a single real number as its answer. He challenged readers to solve these problems, and offered a prize of one dollar per correct digit, up to 10 for each problem, and hence up to a total of $100 for all 10 solved with 10 correct digits each. But Trefethen made one mistake: he assumed that there would probably be, at most, one perfect score and went so far as to say, "If anyone gets 50 digits in total, I will be impressed."
Naturally, the computational science community, sensing that its honor was at stake, responded to the challenge with a great big, "Oh yeah?" In all, there were 20 perfect scores and many more with at least 50 correct digits. Trefethen apparently spent $100 of his own funds, plus another $200 from Oxford Scientific Consulting, to give three of the winners the promised prize. The SIAM 100-Digit Challenge consists of descriptions of how the problems were solved, written by some of the winners. David Bailey provides an interesting foreword.
The problems involved many subjects in computational science, ranging from evaluation of a very difficult integral through topics in linear algebra, approximation methods, function minimization, partial differential equations, and the theory of random walk. The 20 winners employed an impressive variety of mathematical techniques to obtain the solutions, including conformal mapping, interval arithmetic, p-adic arithmetic, approximation via complex functions, probability theory, and more. Reading about the various mathematical strategies and software tools used is fascinating: the authors knew how and when to work backward, when to use purely analytic methods, exactly how far Matlab alone could get them, and much, much more. Anyone who thinks that the main topic of numerical analysis is how to reduce round-off will come away from this book with a different opinion.
No mere mortal working in the computational science business can write a review of this book without at least one suggestion of how a problem could have been done even better, or at least differently. My favorite is Problem 7, "Too Large to Be Easy, Too Small to Be Hard." We're given a 20,000 × 20,000 matrix A whose entries are all zero except for the primes 2, 3, 5, 7, ..., 224,737 along the main diagonal and the number 1 in all positions a ij, such that | i - j| is a power of two; we're to compute the (1, 1) element of A-1. The problem's author mentions that because the entries of A are integers, it's possible to do the problem exactly by doing many instances modulo a set of prime numbers. My approach would have been to use the Bareiss algorithm as I described in a previous issue ("Determining the Determinant," Computing in Science & Eng., vol. 2, no. 5, 2000, pp. 63–66). Its advantage is that all intermediate results are integers, but its drawback is that unlike Wiedemann's algorithm, it doesn't make use of A's sparsity.
One topic that Trefethen's problem set didn't touch is computational issues at the interface between combinatorics and statistical physics, especially those problems that are known to be "hard" in the sense of complexity theory. For example, it's well known that random instances of 3-SAT undergo a phase transition between satisfiability and unsatisfiability when the ratio c of clauses to variables passes a critical value. The value of c is approximately 4.25, but as far as I know, the value of c is not known to 10 digits. Another example is the hard-square entropy constant in three dimensions, which requires accurate counting of independent sets of certain grid graphs. We could easily list 10 or more such problems, but it would probably be wise to accumulate a stack of $100 bills before doing so.