Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations

This article presents a portable C++ system for multiple precision calculations of special functions called e_float. It has an extendable architecture with a uniform C++ layer which can be used with any suitably prepared MP type. The system implements many high-precision special functions and extends some of these to very large parameter ranges. It supports calculations with 30 ⋯ 300 decimal digits of precision. Interoperabilities with Microsoft’s® CLR, Python, and Mathematica® are supported. The e_float system and its usage are described in detail. Implementation notes, testing results, and performance measurements are provided.

[1]  R. Romer,et al.  Tables of functions with formulae and curves , 1934 .

[2]  William J. Cody,et al.  Algorithm 715: SPECFUN–a portable FORTRAN package of special function routines and test drivers , 1993, TOMS.

[3]  Michael Foord,et al.  IronPython in Action , 2009 .

[4]  Linas Vepstas An efficient algorithm for accelerating the convergence of oscillatory series, useful for computing the polylogarithm and Hurwitz zeta functions , 2007, Numerical Algorithms.

[5]  Weblog Wikipedia,et al.  In Wikipedia the Free Encyclopedia , 2005 .

[6]  Donald E. Knuth,et al.  The Art of Computer Programming, Vol. 2 , 1981 .

[7]  David H. Bailey,et al.  Experimental Mathematics in Action , 2007 .

[8]  Pete Becker The C++ Standard Library Extensions: A Tutorial and Reference , 2006 .

[9]  Nico M. Temme,et al.  Computing the real parabolic cylinder functions U(a, x), V(a, x) , 2006, TOMS.

[10]  William M. Waite,et al.  Software manual for the elementary functions , 1980 .

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

[12]  Yudell L. Luke,et al.  Algorithms for the Computation of Mathematical Functions , 1977 .

[13]  A V Hershey,et al.  Computation of Special Functions , 1978 .

[14]  Leon M. Hall,et al.  Special Functions , 1998 .

[15]  Loyola Marymount,et al.  Multiple Precision Complex Arithmetic and Functions , 1998 .

[16]  David M. Smith,et al.  Algorithm 786: multiple-precision complex arithmetic and functions , 1998, TOMS.

[17]  Steven R. Finch,et al.  Mathematical constants , 2005, Encyclopedia of mathematics and its applications.

[18]  David J. Goodman,et al.  Personal Communications , 1994, Mobile Communications.

[19]  S. Tucker Taft,et al.  Information technology — Programming Languages — Ada , 2001 .

[20]  Brian Gough,et al.  GNU Scientific Library Reference Manual - Third Edition , 2003 .

[21]  David M. Smith,et al.  Algorithm 693: a FORTRAN package for floating-point multiple-precision arithmetic , 1991, TOMS.

[22]  David H. Bailey,et al.  Parallel integer relation detection: Techniques and applications , 2001, Math. Comput..

[23]  R. Romer,et al.  Tables of functions with formulae and curves , 1934 .

[24]  S. N. Stuart Table errata: Higher transcendental functions, Vol. II [McGraw-Hill, New York, 1953; MR 15, 419] by A. Erdélyi, W. Magnus, F. Oberhettinger and F. G. Tricomi , 1981 .

[25]  D. E. Amos Algorithm 644: A portable package for Bessel functions of a complex argument and nonnegative order , 1986, TOMS.

[26]  Donald E. Knuth,et al.  The Art of Computer Programming, Volumes 1-3 Boxed Set , 1998 .

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

[28]  David H. Bailey,et al.  Algorithm 719: Multiprecision translation and execution of FORTRAN programs , 1993, TOMS.

[29]  Donald Ervin Knuth,et al.  The Art of Computer Programming, 2nd Ed. (Addison-Wesley Series in Computer Science and Information , 1978 .

[30]  Richard P. Brent,et al.  Recent technical reports , 1977, SIGA.

[31]  V. Moll,et al.  A generalized polygamma function , 2003, math/0305079.

[32]  It Informatics On-Line Encyclopedia of Integer Sequences , 2010 .

[33]  Jet Wimp,et al.  Computation with recurrence relations , 1986 .

[34]  T. MacRobert Higher Transcendental Functions , 1955, Nature.

[35]  Nicolai M. Josuttis The C++ Standard Library: A Tutorial and Reference , 2012 .

[36]  Xiaoye S. Li,et al.  ARPREC: An arbitrary precision computation package , 2002 .

[37]  Stephen Wolfram,et al.  The Mathematica book (4th edition) , 1999 .

[38]  David H. Bailey,et al.  Multiprecision Translation and Execution of Fortran Programs , 1993 .

[39]  D. E. Amos,et al.  A remark on Algorithm 644: “A portable package for Bessel functions of a complex argument and nonnegative order” , 1995, TOMS.

[40]  Louis Vessot King,et al.  On the Direct Numerical Calculation of Elliptic Functions and Integrals , 2011 .

[41]  L. Milne‐Thomson A Treatise on the Theory of Bessel Functions , 1945, Nature.

[42]  Vincent Lefèvre,et al.  MPFR: A multiple-precision binary floating-point library with correct rounding , 2007, TOMS.

[43]  David H. Bailey,et al.  A Fortran 90-based multiprecision system , 1995, TOMS.

[44]  N. M. Temme,et al.  On the numerical evaluation of the modified bessel function of the third kind , 1975 .

[45]  Peter Borwein,et al.  An efficient algorithm for the Riemann zeta function , 1995 .

[46]  William H. Press,et al.  Numerical recipes in C (2nd ed.): the art of scientific computing , 1992 .