on November 15, 2008
This book was first brought to my attention when the second edition in Fortran was published. I had just made a lateral move from civil engineering to geophysics and many more uses of numerical methods became important to my programming work. I found the Chapter on 2-D FFT methods very helpful, as well as the section on interpolation and least-squares fitting.
Later, I put together an application involving Delaunay Triangulation of many thousands of vertices, requiring a fast algorithm. For that, I turned to Knuth's Axioms and Hulls paper and subsequent book The Stanford Graphbase. I was very pleased to see that Chapter 21 on Computational Geometry includes a section on Delaunay Triangles and other useful routines.
I must admit that I was surprised to find that their code did not include data structures from the C++ Standard Template Library. Having made extensive use of STL methods in several projects of late, I was initially annoyed that a *certain* academic streak of stubbornness might have crept in. Afterall, why not take advantage of the fact that well-written and highly reuseable templates for commonly used data structures are available to all ANSI- and ISO-compliant C++ compiler users. Well, after reading the Preface and Chapter 1 it became clear that many of the numerical algorithms covered in the book do not require classes with the depth and complexity that are available in the STL. This was hard to swallow at first, but their use of smaller and more efficient structures with their own methods actually simplifies the code.
This is the essence of well crafted numerical techniques: keep things simple, keep things efficient, keep things flexible, and know the limits of each algorithm you implement. This is more than just an updated edition using the C++ language but also a very nice lesson in object-oriented techniques for serious number crunching programmers.