version 1.9, 1997/10/09 11:30:56 |
version 1.10, 1999/07/02 15:37:42 |
|
|
* |
* |
* Developed at SunPro, a Sun Microsystems, Inc. business. |
* Developed at SunPro, a Sun Microsystems, Inc. business. |
* Permission to use, copy, modify, and distribute this |
* Permission to use, copy, modify, and distribute this |
* software is freely granted, provided that this notice |
* software is freely granted, provided that this notice |
* is preserved. |
* is preserved. |
* ==================================================== |
* ==================================================== |
*/ |
*/ |
Line 29 __RCSID("$NetBSD$"); |
|
Line 29 __RCSID("$NetBSD$"); |
|
* [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) |
* [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) |
* |
* |
* Constants: |
* Constants: |
* The hexadecimal values are the intended ones for the following |
* The hexadecimal values are the intended ones for the following |
* constants. The decimal values may be used, provided that the |
* constants. The decimal values may be used, provided that the |
* compiler will convert from decimal to binary accurately enough |
* compiler will convert from decimal to binary accurately enough |
* to produce the hexadecimal values shown. |
* to produce the hexadecimal values shown. |
*/ |
*/ |
|
|
Line 79 static double aT[] = { |
|
Line 79 static double aT[] = { |
|
}; |
}; |
|
|
#ifdef __STDC__ |
#ifdef __STDC__ |
static const double |
static const double |
#else |
#else |
static double |
static double |
#endif |
#endif |
one = 1.0, |
one = 1.0, |
huge = 1.0e300; |
huge = 1.0e300; |
|
|
x = fabs(x); |
x = fabs(x); |
if (ix < 0x3ff30000) { /* |x| < 1.1875 */ |
if (ix < 0x3ff30000) { /* |x| < 1.1875 */ |
if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */ |
if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */ |
id = 0; x = (2.0*x-one)/(2.0+x); |
id = 0; x = (2.0*x-one)/(2.0+x); |
} else { /* 11/16<=|x|< 19/16 */ |
} else { /* 11/16<=|x|< 19/16 */ |
id = 1; x = (x-one)/(x+one); |
id = 1; x = (x-one)/(x+one); |
} |
} |
} else { |
} else { |
if (ix < 0x40038000) { /* |x| < 2.4375 */ |
if (ix < 0x40038000) { /* |x| < 2.4375 */ |