English

Finding Root Causes of Floating Point Error with Herbgrind

Programming Languages 2018-07-02 v4

Abstract

Floating-point arithmetic plays a central role in science, engineering, and finance by enabling developers to approximate real arithmetic. To address numerical issues in large floating-point applications, developers must identify root causes, which is difficult because floating-point errors are generally non-local, non-compositional, and non-uniform. This paper presents Herbgrind, a tool to help developers identify and address root causes in numerical code written in low-level C/C++ and Fortran. Herbgrind dynamically tracks dependencies between operations and program outputs to avoid false positives and abstracts erroneous computations to a simplified program fragment whose improvement can reduce output error. We perform several case studies applying Herbgrind to large, expert-crafted numerical programs and show that it scales to applications spanning hundreds of thousands of lines, correctly handling the low-level details of modern floating point hardware and mathematical libraries, and tracking error across function boundaries and through the heap.

Keywords

Cite

@article{arxiv.1705.10416,
  title  = {Finding Root Causes of Floating Point Error with Herbgrind},
  author = {Alex Sanchez-Stern and Pavel Panchekha and Sorin Lerner and Zachary Tatlock},
  journal= {arXiv preprint arXiv:1705.10416},
  year   = {2018}
}

Comments

15 pages published at PLDI 18

R2 v1 2026-06-22T20:02:51.161Z