Many of the numerical algorithms used in today’s scientific computing are built on results from classical approximation theory. However, in spite of its significance, activities in this area have suffered a noticeable decline since the late 1990s. The fact that this trend has now been reversed is evident in the fact that numerous new textbooks in approximation theory have been published recently [1,2,3]. Most of these textbooks cover traditional content and are written in a classical style. In contrast, this new work deviates from the usual paths in both respects.

The author discusses the usual questions, but under a somewhat different fundamental assumption. Specifically, while one traditionally used to deal with functions of a limited degree of smoothness (that is, a finite number of derivatives), this book focuses on analytic functions and argues that, in practice, all relevant functions are analytic--possibly after a suitable transformation--or at least piecewise analytic, and, in the latter case, should be handled in a piecewise manner.

This approach has significant implications. For example, classical methods and results like Peano kernels and Jackson and Bernstein theorems become irrelevant in such a context; here, they are replaced by Cauchy kernels and related error bounds.

Another important point the author emphasizes is the fact that suitably chosen polynomials, mainly based on Chebyshev points, can usually provide approximations that are almost as good as the optimal ones, but much easier to compute. These should therefore be the tool of choice. Thus, the core of the book explores methods based on this approach and describes their theoretical and practical properties.

The style of writing is also highly nonclassical. As a matter of fact, each chapter is actually a hardcopy of a MATLAB M-file that can be downloaded from a companion website. As the title of the book suggests, the development of the theory is accompanied by many practical exercises and examples, all of which are coded in MATLAB and heavily use the author’s Chebfun package. At first sight, this is a very attractive feature. However, it also has a slight disadvantage. Because the (sometimes not very self-explanatory) MATLAB syntax is not explained, reading the book and understanding what is actually happening in the examples is occasionally somewhat cumbersome for readers who are not experienced in working with MATLAB.

Nevertheless, this is an excellent overview for readers who are interested in the practical aspects of numerical approximation. If you are more of a theoretical person, you will still find the book worth reading, but to get the complete picture, you should read it in combination with a more classical book.