Print this page
11210 libm should be cstyle(1ONBLD) clean

*** 16,28 **** --- 16,30 ---- * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ + /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */
*** 241,293 **** pio2 = 1.5707963267948965580e+00, negpi = -3.1415926535897931160e+00, q1 = -3.3333333333296428046e-01, q2 = 1.9999999186853752618e-01, zero = 0.0; - static const float two24 = 16777216.0; float atan2f(float fy, float fx) { double a, t, s, dbase; float x, y, base; int i, k, hx, hy, ix, iy, sign; #if defined(__i386) && !defined(__amd64) int rp; #endif iy = *(int *)&fy; ix = *(int *)&fx; hy = iy & ~0x80000000; hx = ix & ~0x80000000; sign = 0; if (hy > hx) { x = fy; y = fx; i = hx; hx = hy; hy = i; if (iy < 0) { x = -x; sign = 1; } if (ix < 0) { y = -y; a = pio2; } else { a = -pio2; sign = 1 - sign; } } else { y = fy; x = fx; if (iy < 0) { y = -y; sign = 1; } if (ix < 0) { x = -x; a = negpi; sign = 1 - sign; } else { --- 243,300 ---- pio2 = 1.5707963267948965580e+00, negpi = -3.1415926535897931160e+00, q1 = -3.3333333333296428046e-01, q2 = 1.9999999186853752618e-01, zero = 0.0; static const float two24 = 16777216.0; float atan2f(float fy, float fx) { double a, t, s, dbase; float x, y, base; int i, k, hx, hy, ix, iy, sign; + #if defined(__i386) && !defined(__amd64) int rp; #endif iy = *(int *)&fy; ix = *(int *)&fx; hy = iy & ~0x80000000; hx = ix & ~0x80000000; sign = 0; + if (hy > hx) { x = fy; y = fx; i = hx; hx = hy; hy = i; + if (iy < 0) { x = -x; sign = 1; } + if (ix < 0) { y = -y; a = pio2; } else { a = -pio2; sign = 1 - sign; } } else { y = fy; x = fx; + if (iy < 0) { y = -y; sign = 1; } + if (ix < 0) { x = -x; a = negpi; sign = 1 - sign; } else {
*** 302,317 **** else if (hy >= 0x7f800000) a += pio4; } else if ((int)a == 0) { a = (double)y / x; } ! return ((float)((sign)? -a : a)); } if (hy < 0x00800000) { if (hy == 0) ! return ((float)((sign)? -a : a)); /* scale subnormal y */ y *= two24; x *= two24; hy = *(int *)&y; hx = *(int *)&x; --- 309,326 ---- else if (hy >= 0x7f800000) a += pio4; } else if ((int)a == 0) { a = (double)y / x; } ! ! return ((float)((sign) ? -a : a)); } if (hy < 0x00800000) { if (hy == 0) ! return ((float)((sign) ? -a : a)); ! /* scale subnormal y */ y *= two24; x *= two24; hy = *(int *)&y; hx = *(int *)&x;
*** 319,328 **** --- 328,338 ---- #if defined(__i386) && !defined(__amd64) rp = __swapRP(fp_extended); #endif k = (hy - hx + 0x3f800000) & 0xfff80000; + if (k >= 0x3c800000) { /* |y/x| >= 1/64 */ *(int *)&base = k; k = (k - 0x3c800000) >> 19; a += TBL[k]; } else {
*** 330,344 **** * For some reason this is faster on USIII than just * doing t = y/x in this case. */ *(int *)&base = 0; } dbase = (double)base; t = (y - x * dbase) / (x + y * dbase); s = t * t; a = (a + t) + t * s * (q1 + s * q2); #if defined(__i386) && !defined(__amd64) if (rp != fp_extended) (void) __swapRP(rp); #endif ! return ((float)((sign)? -a : a)); } --- 340,355 ---- * For some reason this is faster on USIII than just * doing t = y/x in this case. */ *(int *)&base = 0; } + dbase = (double)base; t = (y - x * dbase) / (x + y * dbase); s = t * t; a = (a + t) + t * s * (q1 + s * q2); #if defined(__i386) && !defined(__amd64) if (rp != fp_extended) (void) __swapRP(rp); #endif ! return ((float)((sign) ? -a : a)); }