School of Computing

Is the quality of numerical subroutine code improving?

Tim Hopkins

Technical Report 1-97*, University of Kent, Computing Laboratory, University of Kent, Canterbury, UK, January 1997.


We begin by using a software metric tool to generate a number of software complexity measures and we investigate how these values may be used to determine subroutines which are likely to be of substandard quality.

Following this we look at how these metric values have changed over the years. First we consider a number of freely available Fortran libraries (Eispack, Linpack and Lapack) which have been constructed by teams. In order to ensure a fair comparison we use a restructuring tool to transform original Fortran 66 code into Fortran 77.

We then consider the Fortran codes from the Collected Algorithms from the ACM (CALGO) to see whether we can detect the same trends in software written by the general numerical community.

Our measurements show that although the standard of code in the freely available libraries does appear to have improved over time these libraries still contain routines which are effectively unmaintainable and untestable.

Applied to the CALGO codes the metrics indicate a very conservative approach to software engineering and there is no evidence of improvement, during the last twenty years, in the qualities under discussion.

[This paper appears in Modern Software Tools for Scientific Computing, ed. Arge, Bruaset, and Langtangen, Birkhauser Boston, 1997, ISBN 0-8176-3974-8. Reprinted with permission.]

Download publication 110 kbytes

Bibtex Record

author = {Tim Hopkins},
title = {Is the Quality of Numerical Subroutine Code Improving?},
month = {January},
year = {1997},
pages = {182-196},
keywords = {determinacy analysis, Craig interpolants},
note = {},
doi = {},
url = {},
    address = {University of Kent, Canterbury, UK},
    hensa_abstractfilename = {pub/misc/ukc.reports/comp.sci/abstracts/1-97},
    hensa_ftpaddress = {},
    hensa_reportfilename = {pub/misc/ukc.reports/comp.sci/reports/},
    institution = {University of Kent, Computing Laboratory},
    number = {1-97*},

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 21/03/2014