Semi-Automatic Floating-Point Implementation of Special Functions

This work introduces an approach to the computer-assisted implementation of mathematical functions geared toward special functions such as those occurring in mathematical physics. The general idea is to start with an exact symbolic representation of a function and automate as much as possible of the process of implementing it. In order to deal with a large class of special functions, our symbolic representation is an implicit one: the input is a linear differential equation with polynomial coefficients along with initial values. The output is a C program to evaluate the solution of the equation using domain splitting, argument reduction and polynomial approximations in double-precision arithmetic, in the usual style of mathematical libraries. Our generation method combines symbolic-numeric manipulations of linear ODEs with interval-based tools for the floating-point implementation of "black-box" functions. We describe a prototype code generator that can automatically produce implementations on moderately large intervals. Implementations on the whole real line are possible in some cases but require manual tool setup and code integration. Due to this limitation and as some heuristics remain, we refer to our method as "semi-automatic" at this stage. Along with other examples, we present an implementation of the Voigt profile with fixed parameters that may be of independent interest.

[1]  J. A. Gubner A new series for approximating Voigt functions , 1994 .

[2]  Pat H. Sterbenz,et al.  Floating-point computation , 1973 .

[3]  F. Olver Asymptotics and Special Functions , 1974 .

[4]  Sylvain Chevillard,et al.  Évaluation efficace de fonctions numériques - Outils et exemples. (Efficient evaluation of numerical functions - Tools and examples) , 2009 .

[5]  Jonathan Richard Shewchuk,et al.  Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates , 1997, Discret. Comput. Geom..

[6]  Florent de Dinechin,et al.  Optimizing polynomials for floating-point implementation , 2008, ArXiv.

[7]  L. Fox,et al.  Chebyshev polynomials in numerical analysis , 1970 .

[8]  Nedialko S. Nedialkov,et al.  On Taylor Model Based Integration of ODEs , 2007, SIAM J. Numer. Anal..

[9]  Philipp Nadel,et al.  Ordinary Differential Equations In The Complex Domain , 2016 .

[10]  William J. Thompson,et al.  Numerous Neat Algorithms for the Voigt Profile Function , 1993 .

[11]  Christoph Quirin Lauter,et al.  Sollya: An Environment for the Development of Numerical Codes , 2010, ICMS.

[12]  Joris van der Hoeven,et al.  Fast Evaluation of Holonomic Functions Near and in Regular Singularities , 2001, J. Symb. Comput..

[13]  Joris van der Hoeven,et al.  Fast Evaluation of Holonomic Functions , 1999, Theor. Comput. Sci..

[14]  Nicolas Brunie,et al.  Contributions to computer arithmetic and applications to embedded systems. (Contribution à l'arithmétique des ordinateurs et applications aux systèmes embarqués) , 2014 .

[15]  Franz Schreier,et al.  The Voigt and complex error function: A comparison of computational methods , 1992 .

[16]  Nelson H. F. Beebe,et al.  A new math library , 2009 .

[17]  Christoph Quirin Lauter Arrondi correct de fonctions mathématiques : fonctions univariées et bivariées, certification et automatisation , 2008 .

[18]  Marc Mezzarobba,et al.  NumGfun: a package for numerical and analytic computation with D-finite functions , 2010, ISSAC.

[19]  Nico M. Temme,et al.  Numerical methods for special functions , 2007 .

[20]  Florent de Dinechin,et al.  Certifying the Floating-Point Implementation of an Elementary Function Using Gappa , 2011, IEEE Transactions on Computers.

[21]  Bruno Salvy,et al.  Effective bounds for P-recursive sequences , 2009, J. Symb. Comput..

[22]  Florent de Dinechin,et al.  Automatic generation of polynomial-based hardware architectures for function evaluation , 2010, ASAP 2010 - 21st IEEE International Conference on Application-specific Systems, Architectures and Processors.

[23]  John Harrison Fast and Accurate Bessel Function Computation , 2009, 2009 19th IEEE Symposium on Computer Arithmetic.

[24]  Christoph Quirin Lauter,et al.  Metalibm: A Mathematical Functions Code Generator , 2014, ICMS.

[25]  Jean-Michel Muller,et al.  Handbook of Floating-Point Arithmetic (2nd Ed.) , 2018 .