Print this page
11175 libm should use signbit() correctly
11188 c99 math macros should return strictly backward compatible values

@@ -66,11 +66,12 @@
 two  = 2.0L,
 zero = 0.0L,
 one  = 1.0L;
 
 GENERIC
-jnl(n, x) int n; GENERIC x; {
+jnl(int n, GENERIC x)
+{
         int i, sgn;
         GENERIC a, b, temp, z, w;
 
         /*
          * J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)

@@ -111,30 +112,40 @@
                                  *         1    -s-c            -c+s
                                  *         2    -s+c            -c-s
                                  *         3     s+c             c-s
                                  */
                 switch (n&3) {
-                    case 0: temp =  cosl(x)+sinl(x); break;
-                    case 1: temp = -cosl(x)+sinl(x); break;
-                    case 2: temp = -cosl(x)-sinl(x); break;
-                    case 3: temp =  cosl(x)-sinl(x); break;
+                        case 0:
+                                temp =  cosl(x)+sinl(x);
+                                break;
+                        case 1:
+                                temp = -cosl(x)+sinl(x);
+                                break;
+                        case 2:
+                                temp = -cosl(x)-sinl(x);
+                                break;
+                        case 3:
+                                temp =  cosl(x)-sinl(x);
+                                break;
                 }
                 b = invsqrtpi*temp/sqrtl(x);
             } else {
                         a = j0l(x);
                         b = j1l(x);
                         for (i = 1; i < n; i++) {
                     temp = b;
-                    b = b*((GENERIC)(i+i)/x) - a; /* avoid underflow */
+                                /* avoid underflow */
+                                b = b*((GENERIC)(i+i)/x) - a;
                     a = temp;
                         }
             }
         } else {
             if (x < 1e-17L) {   /* use J(n,x) = 1/n!*(x/2)^n */
                 b = powl(0.5L*x, (GENERIC)n);
                 if (b != zero) {
-                    for (a = one, i = 1; i <= n; i++) a *= (GENERIC)i;
+                                for (a = one, i = 1; i <= n; i++)
+                                        a *= (GENERIC)i;
                     b = b/a;
                 }
             } else {
                 /* use backward recurrence */
                 /*

@@ -163,23 +174,30 @@
                  * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
                  * When Q(k) > 1e4      good for single
                  * When Q(k) > 1e9      good for double
                  * When Q(k) > 1e17     good for quaduple
                  */
-            /* determin k */
+                        /* determine k */
                 GENERIC t, v;
-                double q0, q1, h, tmp; int k, m;
-                w  = (n+n)/(double)x; h = 2.0/(double)x;
-                q0 = w;  z = w+h; q1 = w*z - 1.0; k = 1;
+                        double q0, q1, h, tmp;
+                        int k, m;
+                        w  = (n+n)/(double)x;
+                        h = 2.0/(double)x;
+                        q0 = w;
+                        z = w+h;
+                        q1 = w*z - 1.0;
+                        k = 1;
                 while (q1 < 1.0e17) {
-                        k += 1; z += h;
+                                k += 1;
+                                z += h;
                         tmp = z*q1 - q0;
                         q0 = q1;
                         q1 = tmp;
                 }
                 m = n+n;
-                for (t = zero, i = 2*(n+k); i >= m; i -= 2) t = one/(i/x-t);
+                        for (t = zero, i = 2*(n+k); i >= m; i -= 2)
+                                t = one/(i/x-t);
                 a = t;
                 b = one;
                 /*
                  * estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
                  * hence, if n*(log(2n/x)) > ...

@@ -211,18 +229,19 @@
                     }
                 }
                 b = (t*j0l(x)/b);
             }
         }
-        if (sgn == 1)
+        if (sgn != 0)
                 return (-b);
         else
                 return (b);
 }
 
-GENERIC ynl(n, x)
-int n; GENERIC x; {
+GENERIC
+ynl(int n, GENERIC x)
+{
         int i;
         int sign;
         GENERIC a, b, temp;
 
         if (x != x)

@@ -243,28 +262,38 @@
         if (n == 1)
                 return (sign*y1l(x));
         if (!finitel(x))
                 return (zero);
 
-        if (x > 1.0e91L) {      /* x >> n**2
-                                    Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
-                                    Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
-                                    Let s = sin(x), c = cos(x),
-                                        xn = x-(2n+1)*pi/4, sqt2 = sqrt(2), then
-
-                                           n    sin(xn)*sqt2    cos(xn)*sqt2
-                                        ----------------------------------
-                                           0     s-c             c+s
-                                           1    -s-c            -c+s
-                                           2    -s+c            -c-s
-                                           3     s+c             c-s
+        if (x > 1.0e91L) {
+                /*
+                 * x >> n**2
+                 *   Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+                 *   Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+                 *   Let s = sin(x), c = cos(x),
+                 *      xn = x-(2n+1)*pi/4, sqt2 = sqrt(2), then
+                 *
+                 *         n    sin(xn)*sqt2    cos(xn)*sqt2
+                 *      ----------------------------------
+                 *         0     s-c             c+s
+                 *         1    -s-c            -c+s
+                 *         2    -s+c            -c-s
+                 *         3     s+c             c-s
                                  */
                 switch (n&3) {
-                    case 0: temp =  sinl(x)-cosl(x); break;
-                    case 1: temp = -sinl(x)-cosl(x); break;
-                    case 2: temp = -sinl(x)+cosl(x); break;
-                    case 3: temp =  sinl(x)+cosl(x); break;
+                case 0:
+                        temp =  sinl(x)-cosl(x);
+                        break;
+                case 1:
+                        temp = -sinl(x)-cosl(x);
+                        break;
+                case 2:
+                        temp = -sinl(x)+cosl(x);
+                        break;
+                case 3:
+                        temp =  sinl(x)+cosl(x);
+                        break;
                 }
                 b = invsqrtpi*temp/sqrtl(x);
         } else {
                 a = y0l(x);
                 b = y1l(x);