Theorems on efficient argument reductions

A commonly used argument reduction technique in elementary function computations begins with two positive floating point numbers /spl alpha/ and /spl gamma/ that approximate (usually irrational but not necessarily) numbers 1/C and C, e.g., C = 2/spl pi/ for trigonometric functions and ln 2 for e/sup x/. Given an argument to the function of interest it extracts z as defined by x/spl alpha/ = z + /spl sigmav/ with z = k2/sup -N/ and |sigmav;| /spl les/ 2/sup -N-1/, where k, N are integers and N /spl ges/ 0 is preselected, and then computes u = x - z/spl gamma/. Usually z/spl gamma/ takes more bits than the working precision provides for storing its significant and thus exact x - z/spl gamma/ may not be represented exactly by a floating point number of the same precision. This will cause performance penalty when the working precision is the highest available on the underlying hardware and thus considerable extra work is needed to get all the bits of x - z/spl gamma/ right. We present theorems that show under mild conditions that can be easily met on today's computer hardware and still allow /spl alpha/ /spl ap/ 1/C and /spl gamma/ /spl ap/ C to almost the full working precision, x - z/spl gamma/ is a floating point number of the same precision. An algorithmic procedure based on the theorems is obtained. The results will enhance performance, in particular on machines that has hardware support for fused multiply-add (fma) instruction(s).

[1]  Jean-Michel Muller,et al.  Elementary Functions: Algorithms and Implementation , 1997 .

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

[3]  Laurence Rideau,et al.  A Generic Library for Floating-Point Numbers and Its Application to Exact Computing , 2001, TPHOLs.

[4]  M. J. D. Powell,et al.  On the Maximum Errors of Polynomial Approximations Defined by Interpolation and by Least Squares Criteria , 1967, Comput. J..

[5]  Michael L. Overton,et al.  Numerical Computing with IEEE Floating Point Arithmetic , 2001 .

[6]  Peter Tang,et al.  The Computation of Transcendental Functions on the IA-64 Architecture , 1999 .

[7]  Christine Paulin-Mohring,et al.  The Coq Proof Assistant : A Tutorial : Version 7.2 , 1997 .

[8]  Ping Tak Peter Tang,et al.  Table-lookup algorithms for elementary functions and their error analysis , 1991, [1991] Proceedings 10th IEEE Symposium on Computer Arithmetic.

[9]  Ping Tak Peter Tang Table-driven implementation of the Expm1 function in IEEE floating-point arithmetic , 1992, TOMS.

[10]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[11]  M. D. MacLaren The Art of Computer Programming. Volume 2: Seminumerical Algorithms (Donald E. Knuth) , 1970 .

[12]  Peter W. Markstein,et al.  IA-64 and elementary functions - speed and precision , 2000 .

[13]  GoldbergDavid,et al.  "What Every Computer Scientist Should Know About Floating-Point Arithmetic" , 1991, ACM Comput. Surv..

[14]  Nicholas J. Higham,et al.  INVERSE PROBLEMS NEWSLETTER , 1991 .

[15]  Ping Tak Peter Tang Table-driven implementation of the logarithm function in IEEE floating-point arithmetic , 1990, TOMS.

[16]  Ansi Ieee,et al.  IEEE Standard for Binary Floating Point Arithmetic , 1985 .

[17]  Ren-Cang Li,et al.  Always Chebyshev Interpolation In Elementary Function Computations , 2002 .

[18]  David Thomas,et al.  The Art in Computer Programming , 2001 .

[19]  Ping Tak Peter Tang Table-driven implementation of the exponential function in IEEE floating-point arithmetic , 1989, TOMS.