13 #if defined(LIBM_SCCS) && !defined(lint)
14 static const char rcsid[] =
15 "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $";
140 static const int init_jk[] = { 2, 3, 4, 6 };
142 static int init_jk[] = { 2, 3, 4, 6 };
146 static const double PIo2[] = {
148 static double PIo2[] = {
150 1.57079625129699707031e+00,
151 7.54978941586159635335e-08,
152 5.39030252995776476554e-15,
153 3.28200341580791294123e-22,
154 1.27065575308067607349e-29,
155 1.22933308981111328932e-36,
156 2.73370053816464559624e-44,
157 2.16741683877804819444e-51,
180 int32_t jz,
jx,
jv,
jp,
jk, carry,
n,
iq[20],
i,
j,
k,
m,
q0,
ih;
181 double z,
fw,
f[20],
fq[20],
q[20];
192 q0 = e0 - 24 * (jv + 1);
197 for (i = 0; i <=
m; i++, j++)
198 f[i] = (j < 0) ?
zero : (double) ipio2[j];
201 for (i = 0; i <=
jk; i++) {
202 for (j = 0, fw = 0.0; j <=
jx; j++)
203 fw += x[j] * f[jx + i - j];
210 for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--) {
218 z -= 8.0 *
floor(z * 0.125);
223 i = (iq[jz - 1] >> (24 -
q0));
225 iq[jz - 1] -= i << (24 -
q0);
226 ih = iq[jz - 1] >> (23 -
q0);
228 ih = iq[jz - 1] >> 23;
235 for (i = 0; i <
jz; i++) {
240 iq[
i] = 0x1000000 -
j;
243 iq[
i] = 0xffffff -
j;
248 iq[jz - 1] &= 0x7fffff;
251 iq[jz - 1] &= 0x3fffff;
265 for (i = jz - 1; i >=
jk; i--)
268 for (k = 1; iq[jk -
k] == 0; k++);
270 for (i = jz + 1; i <= jz +
k; i++) {
271 f[jx +
i] = (double) ipio2[jv + i];
272 for (j = 0, fw = 0.0; j <=
jx; j++)
273 fw += x[j] * f[jx + i - j];
285 while (iq[jz] == 0) {
303 for (i = jz; i >= 0; i--) {
304 q[
i] = fw * (double) iq[i];
309 for (i = jz; i >= 0; i--) {
310 for (fw = 0.0, k = 0; k <= jp && k <= jz -
i; k++)
311 fw += PIo2[k] * q[i + k];
319 for (i = jz; i >= 0; i--)
321 y[0] = (ih == 0) ? fw : -fw;
326 for (i = jz; i >= 0; i--)
328 y[0] = (ih == 0) ? fw : -fw;
330 for (i = 1; i <=
jz; i++)
332 y[1] = (ih == 0) ? fw : -fw;
335 for (i = jz; i > 0; i--) {
336 fw = fq[i - 1] + fq[
i];
337 fq[
i] += fq[i - 1] -
fw;
340 for (i = jz; i > 1; i--) {
341 fw = fq[i - 1] + fq[
i];
342 fq[
i] += fq[i - 1] -
fw;
345 for (fw = 0.0, i = jz; i >= 2; i--)
GLfloat GLfloat GLfloat GLfloat nx
EGLSurface EGLint EGLint y
int __kernel_rem_pio2(double *, double *, int, int, int, const int *) attribute_hidden
#define libm_hidden_proto(x)
GLdouble GLdouble GLdouble GLdouble q
GLint GLint GLint GLint z
double scalbn(double x, int n)