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 text deals thoroughly with 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. 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.
• This book contains condensed information on the main features of six major programming languages - Ada, C, C++, Fortran, Java, and Python • The INTLAB toolbox of the MATLAB® software and the PRECISE toolbox of Fortran are discussed in detail • There is an accompanying website, www.nsc.liu.se/wg25/book/with codes, links, color versions of some illustrations, and additional material
Preface; Part I. Pitfalls in Numerical Computation: 1. What can go wrong in scientific computing? Bo Einarsson; 2. Assessment of accuracy and reliability Ronald F. Boisvert, Ronald Cools and Bo Einarsson; 3. Approximating integrals, estimating errors and giving the wrong solution for a deceptively easy problem Ronald Cools; 4. An introduction to the quality of computed solutions Sven Hammarling; 5. Qualitative computing Françoise Chaitin-Chatelin and Elisabeth Traviesas-Cassan; Part II. Diagnostic Tools: 6. PRECISE and the quality of reliable numerical software Françoise Chaitin-Chatelin and Elisabeth Traviesas-Cassan; 7. Tools for the verification of approximate solutions to differential equations Wayne H. Enright; Part III. Technology for Improving Accuracy and Reliability: 8. General methods for implementing reliable and correct software Bo Einarsson; 9. The use and implementation of interval data types G. William Walster; 10. Computer-assisted proofs and self-validating methods Siegfried M. Rump; 11. Hardware assisted algorithms Craig C. Douglas and Hans Petter Langtangen; 12. Issues in accurate and reliable use of parallel computing in numerical programs William D. Gropp; 13. Software reliability engineering of numerical systems Mladen A. Vouk; Bibliography; Index.