Mercurial > hg > CbC > CbC_gcc
diff libquadmath/math/j1q.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line diff
--- a/libquadmath/math/j1q.c Thu Oct 25 07:37:49 2018 +0900 +++ b/libquadmath/math/j1q.c Thu Feb 13 11:34:05 2020 +0900 @@ -6,9 +6,9 @@ * * SYNOPSIS: * - * __float128 x, y, j1q(); + * long double x, y, j1l(); * - * y = j1q( x ); + * y = j1l( x ); * * * @@ -52,9 +52,9 @@ * * SYNOPSIS: * - * __float128, y, y1q(); + * double x, y, y1l(); * - * y = y1q( x ); + * y = y1l( x ); * * * @@ -92,17 +92,16 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + License along with this library; if not, see + <http://www.gnu.org/licenses/>. */ -#include <errno.h> #include "quadmath-imp.h" /* 1 / sqrt(pi) */ static const __float128 ONEOSQPI = 5.6418958354775628694807945156077258584405E-1Q; /* 2 / pi */ static const __float128 TWOOPI = 6.3661977236758134307553505349005744813784E-1Q; -static const __float128 zero = 0.0Q; +static const __float128 zero = 0; /* J1(x) = .5x + x x^2 R(x^2) Peak relative error 1.9e-35 @@ -126,7 +125,7 @@ 5.673775894803172808323058205986256928794E8Q, 1.080329960080981204840966206372671147224E6Q, 1.411951256636576283942477881535283304912E3Q, - /* 1.000000000000000000000000000000000000000E0Q */ + /* 1.000000000000000000000000000000000000000E0L */ }; /* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2), @@ -690,9 +689,9 @@ if (x != x) return x + x; else - return 0.0Q; + return 0; } - if (x == 0.0Q) + if (x == 0) return x; xx = fabsq (x); if (xx <= 0x1p-58Q) @@ -703,7 +702,7 @@ errno = ERANGE; return ret; } - if (xx <= 2.0Q) + if (xx <= 2) { /* 0 <= x <= 2 */ z = xx * xx; @@ -723,7 +722,7 @@ sincosq (xx, &s, &c); ss = -s - c; cc = s - c; - if (xx <= FLT128_MAX / 2.0Q) + if (xx <= FLT128_MAX / 2) { z = cosq (xx + xx); if ((s * c) > 0) @@ -740,7 +739,7 @@ return z; } - xinv = 1.0Q / xx; + xinv = 1 / xx; z = xinv * xinv; if (xinv <= 0.25) { @@ -798,7 +797,7 @@ q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D); } } - p = 1.0Q + z * p; + p = 1 + z * p; q = z * q; q = q * xinv + 0.375Q * xinv; z = ONEOSQPI * (p * cc - q * ss) / sqrtq (xx); @@ -808,11 +807,12 @@ } + /* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2) Peak relative error 6.2e-38 0 <= x <= 2 */ #define NY0_2N 7 -static __float128 Y0_2N[NY0_2N + 1] = { +static const __float128 Y0_2N[NY0_2N + 1] = { -6.804415404830253804408698161694720833249E19Q, 1.805450517967019908027153056150465849237E19Q, -8.065747497063694098810419456383006737312E17Q, @@ -823,7 +823,7 @@ 9.541172044989995856117187515882879304461E5Q, }; #define NY0_2D 7 -static __float128 Y0_2D[NY0_2D + 1] = { +static const __float128 Y0_2D[NY0_2D + 1] = { 3.470629591820267059538637461549677594549E20Q, 4.120796439009916326855848107545425217219E18Q, 2.477653371652018249749350657387030814542E16Q, @@ -845,9 +845,9 @@ if (! finiteq (x)) return 1 / (x + x * x); - if (x <= 0.0Q) + if (x <= 0) { - if (x < 0.0Q) + if (x < 0) return (zero / (zero * x)); return -1 / zero; /* -inf and divide by zero exception. */ } @@ -859,10 +859,10 @@ errno = ERANGE; return z; } - if (xx <= 2.0Q) - { + if (xx <= 2) + { /* 0 <= x <= 2 */ - /* FIXME: SET_RESTORE_ROUNDL (FE_TONEAREST); */ + SET_RESTORE_ROUNDF128 (FE_TONEAREST); z = xx * xx; p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D); p = -TWOOPI / xx + p; @@ -879,7 +879,7 @@ sincosq (xx, &s, &c); ss = -s - c; cc = s - c; - if (xx <= FLT128_MAX / 2.0Q) + if (xx <= FLT128_MAX / 2) { z = cosq (xx + xx); if ((s * c) > 0) @@ -891,7 +891,7 @@ if (xx > 0x1p256Q) return ONEOSQPI * ss / sqrtq (xx); - xinv = 1.0Q / xx; + xinv = 1 / xx; z = xinv * xinv; if (xinv <= 0.25) { @@ -949,7 +949,7 @@ q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D); } } - p = 1.0Q + z * p; + p = 1 + z * p; q = z * q; q = q * xinv + 0.375Q * xinv; z = ONEOSQPI * (p * ss + q * cc) / sqrtq (xx);