English

Eliminating Unstable Tests in Floating-Point Programs

Programming Languages 2018-12-04 v2 Logic in Computer Science

Abstract

Round-off errors arising from the difference between real numbers and their floating-point representation cause the control flow of conditional floating-point statements to deviate from the ideal flow of the real-number computation. This problem, which is called test instability, may result in a significant difference between the computation of a floating-point program and the expected output in real arithmetic. In this paper, a formally proven program transformation is proposed to detect and correct the effects of unstable tests. The output of this transformation is a floating-point program that is guaranteed to return either the result of the original floating-point program when it can be assured that both its real and its floating-point flows agree or a warning when these flows may diverge. The proposed approach is illustrated with the transformation of the core computation of a polygon containment algorithm developed at NASA that is used in a geofencing system for unmanned aircraft systems.

Keywords

Cite

@article{arxiv.1808.04289,
  title  = {Eliminating Unstable Tests in Floating-Point Programs},
  author = {Laura Titolo and Cesar A. Muñoz and Marco A. Feliu and Mariano M. Moscato},
  journal= {arXiv preprint arXiv:1808.04289},
  year   = {2018}
}

Comments

Pre-proceedings paper presented at the 28th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2018), Frankfurt am Main, Germany, 4-6 September 2018 (arXiv:1808.03326)

R2 v1 2026-06-23T03:32:16.492Z