diff options
Diffstat (limited to 'newlib/libm/mathfp/sf_logarithm.c')
-rw-r--r-- | newlib/libm/mathfp/sf_logarithm.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/newlib/libm/mathfp/sf_logarithm.c b/newlib/libm/mathfp/sf_logarithm.c deleted file mode 100644 index 224482f..0000000 --- a/newlib/libm/mathfp/sf_logarithm.c +++ /dev/null @@ -1,72 +0,0 @@ - -/* @(#)z_logarithmf.c 1.0 98/08/13 */ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ -/****************************************************************** - * Logarithm - * - * Input: - * x - floating point value - * ten - indicates base ten numbers - * - * Output: - * logarithm of x - * - * Description: - * This routine calculates logarithms. - * - *****************************************************************/ - -#include "fdlibm.h" -#include "zmath.h" - -static const float a[] = { -0.5527074855 }; -static const float b[] = { -0.6632718214e+1 }; -static const float C1 = 0.693145752; -static const float C2 = 1.428606820e-06; -static const float C3 = 0.4342944819; - -float -_DEFUN (logarithmf, (float, int), - float x _AND - int ten) -{ - int N; - float f, w, z; - - /* Check for domain error here. */ - if (x <= 0.0) - { - errno = ERANGE; - return (z_notanum_f.f); - } - - /* Get the exponent and mantissa where x = f * 2^N. */ - f = frexpf (x, &N); - - z = f - 0.5; - - if (f > __SQRT_HALF) - z = (z - 0.5) / (f * 0.5 + 0.5); - else - { - N--; - z /= (z * 0.5 + 0.5); - } - w = z * z; - - /* Use Newton's method with 4 terms. */ - z += z * w * (a[0]) / ((w + 1.0) * w + b[0]); - - if (N != 0) - z = (N * C2 + z) + N * C1; - - if (ten) - z *= C3; - - return (z); -} |