This book gives the concepts and background necessary to understand and build algorithms for computing elementary functions, presenting and structuring the algorithms (hardware- oriented as well as software-oriented), and discusses issues related to the accurate floating-point implementation. The purpose is not to give "cookbook recipes" that allow one to implement some given function, but to provide the reader with the knowledge that is necessary to build, or adapt, algorithms to their specific computing environment. Topics and Features: * background material reviewed in Chapter 2, Computer Arithmetic * polynomial and rational approximations * table based methods * shift-and-add algorithms thoroughly covered in Part Two * CORDIC algorithm * range reduction and accuracy covered in Part Three * Web site for the book containing additional resources and selected code The book provides an up-to-date presentation of the information needed to understand and accurately use mathematical functions and algorithms in computational work and design. Graduates, professionals and researchers in scientific computing, software engineering, and computer engineering will find the book a useful reference and resource.
"An important topic, which is on the boundary between numerical analysis and computer science.... I found the book well written and containing much interesting material, most of the time disseminated in specialized papers published in specialized journals difficult to find. Moreover, there are very few books on these topics and they are not recent."
–Numerical Algorithms (review of the first edition)
This unique book provides concepts and background necessary to understand and build algorithms for computing the elementary functions―sine, cosine, tangent, exponentials, and logarithms. The author presents and structures the algorithms, hardware-oriented as well as software-oriented, and also discusses issues related to accurate floating-point implementation. The purpose is not to give "cookbook recipes" that allow one to implement a given function, but rather to provide the reader with tools necessary to build or adapt algorithms for their specific computing environment.
This expanded second edition contains a number of revisions and additions, which incorporate numerous new results obtained during the last few years. New algorithms invented since 1997―such as Matula’s bipartite method, another table-based method due to Ercegovac, Lang, Tisserand, and Muller―as well as new chapters on multiple-precision arithmetic and examples of implementation have been added. In addition, the section on correct rounding of elementary functions has been fully reworked, also in the context of new results. Finally, the introductory presentation of floating-point arithmetic has been expanded, with more emphasis given to the use of the fused multiply-accumulate instruction.
The book is an up-to-date presentation of information needed to understand and accurately use mathematical functions and algorithms in computational work and design. Graduate and advanced undergraduate students, professionals, and researchers in scientific computing, numerical analysis, software engineering, and computer engineering will find the book a useful reference and resource.