Determining the numerical stability of quantum chemistry algorithms

Gerald Knizia, Wenbin Li, Sven Simon, Hans Joachim Werner

Research output: Contribution to journalArticlepeer-review

25 Scopus citations


We present a simple, broadly applicable method for determining the numerical properties of quantum chemistry algorithms. The method deliberately introduces random numerical noise into computations, which is of the same order of magnitude as the floating point precision. Accordingly, repeated runs of an algorithm give slightly different results, which can be analyzed statistically to obtain precise estimates of its numerical stability. This noise is produced by automatic code injection into regular compiler output, so that no substantial programming effort is required, only a recompilation of the affected program sections. The method is applied to investigate: (i) the numerical stability of the three-center Obara-Saika integral evaluation scheme for high angular momenta, (ii) if coupled cluster perturbative triples can be evaluated with single precision arithmetic, (iii) how to implement the density fitting approximation in Moller-Plesset perturbation theory (MP2) most accurately, and (iv) which parts of density fitted MP2 can be safely evaluated with single precision arithmetic. In the integral case, we find a numerical instability in an equation that is used in almost all integral programs. Due to the results of (ii) and (iv), we conjecture that single precision arithmetic can be applied whenever a calculation is done in an orthogonal basis set and excessively long linear sums are avoided.

Original languageEnglish (US)
Pages (from-to)2387-2398
Number of pages12
JournalJournal of Chemical Theory and Computation
Issue number8
StatePublished - Aug 9 2011

All Science Journal Classification (ASJC) codes

  • Computer Science Applications
  • Physical and Theoretical Chemistry


Dive into the research topics of 'Determining the numerical stability of quantum chemistry algorithms'. Together they form a unique fingerprint.

Cite this