math: use double_t for temporaries to avoid stores on i386
[musl] / src / math / __tan.c
index f1be2ec..fc739f9 100644 (file)
@@ -59,17 +59,13 @@ static const double T[] = {
              7.14072491382608190305e-05, /* 3F12B80F, 32F0A7E9 */
             -1.85586374855275456654e-05, /* BEF375CB, DB605373 */
              2.59073051863633712884e-05, /* 3EFB2A70, 74BF7AD4 */
-/* one */    1.00000000000000000000e+00, /* 3FF00000, 00000000 */
-/* pio4 */   7.85398163397448278999e-01, /* 3FE921FB, 54442D18 */
-/* pio4lo */ 3.06161699786838301793e-17  /* 3C81A626, 33145C07 */
-};
-#define one     T[13]
-#define pio4    T[14]
-#define pio4lo  T[15]
+},
+pio4 =       7.85398163397448278999e-01, /* 3FE921FB, 54442D18 */
+pio4lo =     3.06161699786838301793e-17; /* 3C81A626, 33145C07 */
 
 double __tan(double x, double y, int iy)
 {
-       double z, r, v, w, s, sign;
+       double_t z, r, v, w, s, sign;
        int32_t ix, hx;
 
        GET_HIGH_WORD(hx,x);
@@ -110,7 +106,8 @@ double __tan(double x, double y, int iy)
                 * -1.0 / (x+r) here
                 */
                /* compute -1.0 / (x+r) accurately */
-               double a, t;
+               double_t a;
+               double z, t;
                z = w;
                SET_LOW_WORD(z,0);
                v = r - (z - x);        /* z+v = r+x */