Numerical Fuzz: A Programming Language for Rounding Error Analysis

Ariel Kellison, Cornell University

Photo of Ariel Kellison

Program sensitivity provides a measure of the distance between the results of a program when run on slightly perturbed inputs, and plays an important role in many areas of computer science, including embedded systems, data privacy and high-performance computing. In applications that rely heavily on floating-point computations, lowering the precision in regions of code that are insensitive to rounding errors can lead to significant performance gains. Unfortunately, due to the lack of scalable and rigorous tools for analyzing the sensitivity of code regions, developers often resort to the expensive but safe option of using high precision throughout an application. To address this problem, we are designing Numerical Fuzz (NFuzz), a programming language that allows developers to write numerical programs with guaranteed accuracy bounds in a flexible and compositional way, and provides a fine-grained analysis of how sensitive components of a program are to changes in the floating-point precision. The core of NFuzz is derived from Fuzz, a programming language for differential privacy where each type in the language is equipped with a distance metric, and sensitivity analysis can be done in an automated way via type checking.

Abstract Author(s): Ariel Kellison