Discovering Discrepancies in Numerical Libraries Jackson Vanover Xuan Deng Cindy Rubio-González University of California, Davis University of California, Davis University of California, Davis United States of America United States of America United States of America
[email protected] [email protected] [email protected] ABSTRACT libraries aim to offer a certain level of correctness and robustness in Numerical libraries constitute the building blocks for software appli- their algorithms. Specifically, a discrete numerical algorithm should cations that perform numerical calculations. Thus, it is paramount not diverge from the continuous analytical function it implements that such libraries provide accurate and consistent results. To that for its given domain. end, this paper addresses the problem of finding discrepancies be- Extensive testing is necessary for any software that aims to be tween synonymous functions in different numerical libraries asa correct and robust; in all application domains, software testing means of identifying incorrect behavior. Our approach automati- is often complicated by a deficit of reliable test oracles and im- cally finds such synonymous functions, synthesizes testing drivers, mense domains of possible inputs. Testing of numerical software and executes differential tests to discover meaningful discrepan- in particular presents additional difficulties: there is a lack of stan- cies across numerical libraries. We implement our approach in a dards for dealing with inevitable numerical errors, and the IEEE 754 tool named FPDiff, and provide an evaluation on four popular nu- Standard [1] for floating-point representations of real numbers in- merical libraries: GNU Scientific Library (GSL), SciPy, mpmath, and herently introduces imprecision. As a result, bugs are commonplace jmat.