Code Generators for Mathematical Functions

Nicolas Brunie,Florent De Dinechin,Olga Kupriianova,Christoph Lauter
DOI: https://doi.org/10.1109/arith.2015.22
2015-06-01
Abstract:A typical floating-point environment includes support for a small set of about 30 mathematical functions such as exponential, logarithm, trigonometric and hyperbolic functions. These functions are provided by mathematical software libraries (libm), typically in IEEE754 single, double and quad precision. This article suggests to replace this 1 ibm paradigm by a more general approach: the on-demand generation of numerical function code, on arbitrary domains and with arbitrary accuracies. First, such code generation opens up the libm function space available to programmers. It may capture a much wider set of functions, and may capture even standard functions on nonstandard domains and accuracy/performance points. Second, writing 1 ibm code requires fine-tuned instruction selection and scheduling for performance, and sophisticated floating-point techniques for accuracy. Automating this task through code generation improves confidence in the code while enabling better design space exploration, and therefore better time to market., even for the libm functions. This article discusses the new challenges of this paradigm shift, and presents the current state of open-source function code generators available on http://www.metalibm.org/.
What problem does this paper attempt to address?