Email updates

Keep up to date with the latest news and content from Source Code for Biology and Medicine and BioMed Central.

Open Access Highly Accessed Software review

Automatic Fortran to C++ conversion with FABLE

Ralf W Grosse-Kunstleve1*, Thomas C Terwilliger2, Nicholas K Sauter1 and Paul D Adams13

Author Affiliations

1 Lawrence Berkeley National Laboratory, Cyclotron Road, BLDG, 64R0121, Berkeley, CA 94720-8118, USA

2 Los Alamos National Laboratory, Los Alamos, NM 87545, USA

3 Department of Bioengineering, University of California Berkeley, Berkeley, CA 94720, USA

For all author emails, please log on.

Source Code for Biology and Medicine 2012, 7:5  doi:10.1186/1751-0473-7-5

Published: 28 May 2012

Abstract

Background

In scientific computing, Fortran was the dominant implementation language throughout most of the second part of the 20th century. The many tools accumulated during this time have been difficult to integrate with modern software, which is now dominated by object-oriented languages.

Results

Driven by the requirements of a large-scale scientific software project, we have developed a Fortran to C++ source-to-source conversion tool named FABLE. This enables the continued development of new methods even while switching languages. We report the application of FABLE in three major projects and present detailed comparisons of Fortran and C++ runtime performances.

Conclusions

Our experience suggests that most Fortran 77 codes can be converted with an effort that is minor (measured in days) compared to the original development time (often measured in years). With FABLE it is possible to reuse and evolve legacy work in modern object-oriented environments, in a portable and maintainable way. FABLE is available under a nonrestrictive open source license. In FABLE the analysis of the Fortran sources is separated from the generation of the C++ sources. Therefore parts of FABLE could be reused for other target languages.

Keywords:
Fortran; C++; Source-to-source conversion; Python; Test-driven development