Numerical software is used to test scientific theories, design airplanes and bridges, operate manufacturing lines, control power plants and refineries, analyze financial derivatives, identify genomes, and provide the understanding necessary to derive and analyze cancer treatments. Because of the high stakes involved, it is essential that results computed using software be accurate, reliable, and robust. Unfortunately, developing accurate and reliable scientific software is notoriously difficult. This book investigates some of the difficulties related to scientific computing and provides insight into how to overcome them and obtain dependable results. The tools to assess existing scientific applications are described, and a variety of techniques that can improve the accuracy and reliability of newly developed applications is discussed. Accuracy and Reliability in Scientific Computing can be considered a handbook for improving the quality of scientific computing. It will help computer scientists address the problems that affect software in general as well as the particular challenges of numerical computation: approximations occurring at all levels, continuous functions replaced by discretized versions, infinite processes replaced by finite ones, and real numbers replaced by finite precision numbers. Divided into three parts, it starts by illustrating some of the difficulties in producing robust and reliable scientific software. Well-known cases of failure are reviewed and the what and why of numerical computations are considered. The second section describes diagnostic tools that can be used to assess the accuracy and reliability of existing scientific applications. In the last section, the authors describe a variety of techniques that can be employed to improve the accuracy and reliability of newly developed scientific applications. The authors of the individual chapters are international experts, many of them members of the IFIP Working Group on Numerical Software. The book contains condensed information on the main features of six major programming languages - Ada, C, C++, Fortran, Java, and Python - and the INTLAB toolbox of the MATLAB? software and the PRECISE toolbox of Fortran are discussed in detail. This book has an accompanying website, with codes, links, color versions of some illustrations, and additional material.
Bo Einarsson has retired as an Associate Professor of Numerical Analysis and Numerical Analyst at the National Supercomputer Center at Linkoping University in Sweden.
List of Contributors List of Figures List of Tables Preface Part I: PITFALLS IN NUMERICAL COMPUTATION. Chapter 1: What Can Go Wrong in Scientific Computing? Bo Einarsson Chapter 2: Assessment of Accuracy and Reliability, Ronald F. Boisvert, Ronald Cools, and Bo Einarsson Chapter 3: Approximating Integrals, Estimating Errors, and Giving the Wrong Solution for a Deceptively Easy Problem, Ronald Cools Chapter 4: An Introduction to the Quality of Computed Solutions, Sven Hammarling Chapter 5: Qualitative Computing, Francoise Chaitin-Chatelin and Elisabeth Traviesas-Cassan Part II: DIAGNOSTIC TOOLS. Chapter 6: PRECISE and the Quality of Reliable Numerical Software, Francoise Chaitin-Chatelin and Elisabeth Traviesas-Cassan Chapter 7: Tools for the Verification of Approximate Solutions to Differential Equations, Wayne H. Enright Part III: TECHNOLOGY FOR IMPROVING ACCURACY AND RELIABILITY. Chapter 8: General Methods forImplementing Reliable and Correct Software, Bo Einarsson Chapter 9: The Use and Implementation of Interval Data Types, G.WilliamWalster Chapter 10: Computer-Assisted Proofs and Self-Validating Methods, Siegfried M. Rump Chapter 11: Hardware Assisted Algorithms, Craig C. Douglas and Hans Petter Langtangen Chapter 12: Issues in Accurate and Reliable Use of Parallel Computing in Numerical Programs, William D. Gropp Chapter 13: Software Reliability Engineering of Numerical Systems, Mladen A. Vouk Bibliography Index.