Writing Scientific Software: A Guide to Good Style
The core of scientific computing is designing, writing, testing, debugging and modifying numerical software for application to a vast range of areas: from graphics, meteorology and chemistry to engineering, biology and finance. Scientists, engineers and computer scientists need to write good code, for speed, clarity, flexibility and ease of re-use. Oliveira and Stewart's style guide for numerical software points out good practices to follow, and pitfalls to avoid. By following their advice, readers will learn how to write efficient software, and how to test it for bugs, accuracy and performance. Techniques are explained with a variety of programming languages, and illustrated with two extensive design examples, one in Fortran 90 and one in C++: other examples in C, C++, Fortran 90 and Java are scattered throughout the book. This manual of scientific computing style will be an essential addition to the bookshelf and lab of everyone who writes numerical software.
What people are saying - Write a review
We haven't found any reviews in the usual places.
algorithm allocated memory argument arithmetic array banded matrix Bitkeeper BLAS block of memory C/C++ cache line catastrophic cancellation clock cycles compiler compute const MyVec create data structures debugging deﬁned double double-precision efﬁcient entries equations evaluate example extended precision ﬁles ﬁnd ﬁrst ﬁxed ﬂexible ﬂoating point numbers ﬂoating point operations ﬂoating-point Fortran 90 function call garbage collection grid hardware IEEE iflag implemented input integer interface inttype iteration Java languages LAPACK libraries linear system loop LU factorization main memory malloc MATLAB matrix–vector memory allocation memory heap memory leaks method Microsoft Windows multigrid multigrid methods multiple MyMat NULL object-oriented optimization output overﬂow periodic spline pointer problems recursion registers result roundoff error scratch space solve sparse matrix speciﬁc spline function stack standard stored subroutine template tridiagonal Unix usually variables Vector write zero
Page 1 - An mxn matrix is a matrix with m rows and n columns and has the form: 'au au ••• ain A = _am\ (mxn).
Page 15 - But, averaging over progress from the 1950s to now, the number of transistors on a "chip" doubles about every eighteen months to two years.