diff options
Diffstat (limited to 'libm/float/exp10f.c')
| -rw-r--r-- | libm/float/exp10f.c | 115 | 
1 files changed, 0 insertions, 115 deletions
diff --git a/libm/float/exp10f.c b/libm/float/exp10f.c deleted file mode 100644 index c7c62c567..000000000 --- a/libm/float/exp10f.c +++ /dev/null @@ -1,115 +0,0 @@ -/*							exp10f.c - * - *	Base 10 exponential function - *      (Common antilogarithm) - * - * - * - * SYNOPSIS: - * - * float x, y, exp10f(); - * - * y = exp10f( x ); - * - * - * - * DESCRIPTION: - * - * Returns 10 raised to the x power. - * - * Range reduction is accomplished by expressing the argument - * as 10**x = 2**n 10**f, with |f| < 0.5 log10(2). - * A polynomial approximates 10**f. - * - * - * - * ACCURACY: - * - *                      Relative error: - * arithmetic   domain     # trials      peak         rms - *    IEEE      -38,+38     100000      9.8e-8      2.8e-8 - * - * ERROR MESSAGES: - * - *   message         condition      value returned - * exp10 underflow    x < -MAXL10        0.0 - * exp10 overflow     x > MAXL10       MAXNUM - * - * IEEE single arithmetic: MAXL10 = 38.230809449325611792. - * - */ - -/* -Cephes Math Library Release 2.2:  June, 1992 -Copyright 1984, 1987, 1988, 1992 by Stephen L. Moshier -Direct inquiries to 30 Frost Street, Cambridge, MA 02140 -*/ - - -#include <math.h> - -static float P[] = { - 2.063216740311022E-001, - 5.420251702225484E-001, - 1.171292686296281E+000, - 2.034649854009453E+000, - 2.650948748208892E+000, - 2.302585167056758E+000 -}; - -/*static float LOG102 = 3.01029995663981195214e-1;*/ -static float LOG210 = 3.32192809488736234787e0; -static float LG102A = 3.00781250000000000000E-1; -static float LG102B = 2.48745663981195213739E-4; -static float MAXL10 = 38.230809449325611792; - - - - -extern float MAXNUMF; - -float floorf(float), ldexpf(float, int), polevlf(float, float *, int); - -float exp10f(float xx) -{ -float x, px, qx; -short n; - -x = xx; -if( x > MAXL10 ) -	{ -	mtherr( "exp10f", OVERFLOW ); -	return( MAXNUMF ); -	} - -if( x < -MAXL10 )	/* Would like to use MINLOG but can't */ -	{ -	mtherr( "exp10f", UNDERFLOW ); -	return(0.0); -	} - -/* The following is necessary because range reduction blows up: */ -if( x == 0 ) -	return(1.0); - -/* Express 10**x = 10**g 2**n - *   = 10**g 10**( n log10(2) ) - *   = 10**( g + n log10(2) ) - */ -px = x * LOG210; -qx = floorf( px + 0.5 ); -n = qx; -x -= qx * LG102A; -x -= qx * LG102B; - -/* rational approximation for exponential - * of the fractional part: - * 10**x - 1  =  2x P(x**2)/( Q(x**2) - P(x**2) ) - */ -px = 1.0 + x * polevlf( x, P, 5 ); - -/* multiply by power of 2 */ -x = ldexpf( px, n ); - -return(x); -}  | 
