English | 2016 | ISBN: 978-1-4899-7981-0 | 283 Pages | PDF | 10 MB
This textbook presents the concepts and tools necessary to understand, build, and implement algorithms for computing elementary functions (e.g., logarithms, exponentials, and the trigonometric functions). Both hardware- and software-oriented algorithms are included, along with issues related to accurate floating-point implementation. This third edition has been updated and expanded to incorporate the most recent advances in the field, new elementary function algorithms, and function software.
After a preliminary chapter that briefly introduces some fundamental concepts of computer arithmetic, such as floating-point arithmetic and redundant number systems, the text is divided into three main parts. Part I considers the computation of elementary functions using algorithms based on polynomial or rational approximations and using table-based methods; the final chapter in this section deals with basic principles of multiple-precision arithmetic. Part II is devoted to a presentation of “shift-and-add” algorithms (hardware-oriented algorithms that use additions and shifts only). Issues related to accuracy, including range reduction, preservation of monotonicity, and correct rounding, as well as some examples of implementation are explored in Part III. Numerous examples of command lines and full programs are provided throughout for various software packages, including Maple, Sollya, and Gappa. New to this edition are an in-depth overview of the IEEE-754-2008 standard for floating-point arithmetic; a section on using double- and triple-word numbers; a presentation of new tools for designing accurate function software; and a section on the Toom-Cook family of multiplication algorithms.
The techniques presented in this book will be of interest to implementers of elementary function libraries or circuits and programmers of numerical applications. Additionally, graduate and advanced undergraduate students, professionals, and researchers in scientific computing, numerical analysis, software engineering, and computer engineering will find this a useful reference and resource.