OSDN Git Service

2002-06-13 Stephen L. Moshier <steve@moshier.net>
authorjjohnstn <jjohnstn>
Thu, 13 Jun 2002 23:03:00 +0000 (23:03 +0000)
committerjjohnstn <jjohnstn>
Thu, 13 Jun 2002 23:03:00 +0000 (23:03 +0000)
        * libm/math/e_pow.c (__ieee754_pow): Fix case whereby
        x is close to -1.0 and y is very large to use ax (absolute value)
        instead of x.
        * libm/math/ef_pow.c (__ieee754_powf): Ditto.

newlib/ChangeLog
newlib/libm/math/e_pow.c
newlib/libm/math/ef_pow.c

index c51adc4..5eb6ac4 100644 (file)
@@ -1,3 +1,12 @@
+2002-06-13  Stephen L. Moshier  <steve@moshier.net>
+
+       * libm/math/e_pow.c (__ieee754_pow): Fix case whereby
+       x is close to -1.0 and y is very large to use ax (absolute value)
+       instead of x.
+       * libm/math/ef_pow.c (__ieee754_powf): Ditto.
+
+Thu Jun 13 19:23:40 2002  J"orn Rennecke <joern.rennecke@superh.com>
+
 Thu Jun 13 19:23:40 2002  J"orn Rennecke <joern.rennecke@superh.com>
 
        * libc/machine/sh/strcpy.S (strcpy, __SHMEDIA__ code):
index 240a186..55b5f7f 100644 (file)
@@ -196,7 +196,7 @@ ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
            if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
        /* now |1-x| is tiny <= 2**-20, suffice to compute 
           log(x) by x-x^2/2+x^3/3-x^4/4 */
-           t = x-1;            /* t has 20 trailing zeros */
+           t = ax-1;           /* t has 20 trailing zeros */
            w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
            u = ivln2_h*t;      /* ivln2_h has 21 sig. bits */
            v = t*ivln2_l-w*ivln2;
index e50cc58..8b1fc18 100644 (file)
@@ -137,7 +137,7 @@ ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
            if(ix>0x3f800007) return (hy>0)? huge*huge:tiny*tiny;
        /* now |1-x| is tiny <= 2**-20, suffice to compute 
           log(x) by x-x^2/2+x^3/3-x^4/4 */
-           t = x-1;            /* t has 20 trailing zeros */
+           t = ax-1;           /* t has 20 trailing zeros */
            w = (t*t)*((float)0.5-t*((float)0.333333333333-t*(float)0.25));
            u = ivln2_h*t;      /* ivln2_h has 16 sig. bits */
            v = t*ivln2_l-w*ivln2;