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 $";
142 static const int init_jk[] = { 2, 3, 4, 6 };
144 static int init_jk[] = { 2, 3, 4, 6 };
148 static const double PIo2[] = {
150 static double PIo2[] = {
152 1.57079625129699707031e+00,
153 7.54978941586159635335e-08,
154 5.39030252995776476554e-15,
155 3.28200341580791294123e-22,
156 1.27065575308067607349e-29,
157 1.22933308981111328932e-36,
158 2.73370053816464559624e-44,
159 2.16741683877804819444e-51,
182 int32_t jz, jx, jv, jp, jk, carry,
n, iq[20],
i,
j, k,
m, q0, ih;
183 double z, fw,
f[20], fq[20],
q[20];
197 q0 = e0 - 24 * (jv + 1);
202 for (i = 0; i <=
m; i++, j++)
203 f[i] = (j < 0) ?
zero : (double) ipio2[j];
206 for (i = 0; i <= jk; i++) {
207 for (j = 0, fw = 0.0; j <= jx; j++)
208 fw += x[j] * f[jx + i - j];
215 for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--) {
223 z -= 8.0 *
floor(z * 0.125);
228 i = (iq[jz - 1] >> (24 - q0));
230 iq[jz - 1] -= i << (24 - q0);
231 ih = iq[jz - 1] >> (23 - q0);
233 ih = iq[jz - 1] >> 23;
240 for (i = 0; i < jz; i++) {
245 iq[
i] = 0x1000000 -
j;
248 iq[
i] = 0xffffff -
j;
253 iq[jz - 1] &= 0x7fffff;
256 iq[jz - 1] &= 0x3fffff;
270 for (i = jz - 1; i >= jk; i--)
273 for (k = 1; iq[jk - k] == 0; k++);
275 for (i = jz + 1; i <= jz + k; i++) {
276 f[jx +
i] = (double) ipio2[jv + i];
277 for (j = 0, fw = 0.0; j <= jx; j++)
278 fw += x[j] * f[jx + i - j];
290 while (iq[jz] == 0) {
308 for (i = jz; i >= 0; i--) {
309 q[
i] = fw * (double) iq[i];
314 for (i = jz; i >= 0; i--) {
315 for (fw = 0.0, k = 0; k <= jp && k <= jz -
i; k++)
316 fw += PIo2[k] * q[i + k];
324 for (i = jz; i >= 0; i--)
326 y[0] = (ih == 0) ? fw : -fw;
331 for (i = jz; i >= 0; i--)
333 y[0] = (ih == 0) ? fw : -fw;
335 for (i = 1; i <= jz; i++)
337 y[1] = (ih == 0) ? fw : -fw;
340 for (i = jz; i > 0; i--) {
341 fw = fq[i - 1] + fq[
i];
342 fq[
i] += fq[i - 1] - fw;
345 for (i = jz; i > 1; i--) {
346 fw = fq[i - 1] + fq[
i];
347 fq[
i] += fq[i - 1] - fw;
350 for (fw = 0.0, i = jz; i >= 2; i--)
GLint GLint GLint GLint GLint x
GLdouble GLdouble GLdouble GLdouble q
int attribute_hidden __kernel_rem_pio2(x, y, int e0, int nx, int prec, ipio2)
GLint GLint GLint GLint GLint GLint y
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
#define SDL_assert(condition)
#define SDL_arraysize(array)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
libm_hidden_proto(scalbn)