4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
26 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
27 * Use is subject to license terms.
30 #include <sys/isa_defs.h>
31 #include <sys/ccompile.h>
34 #define HI(x) *(1+(int*)x)
35 #define LO(x) *(unsigned*)x
37 #define HI(x) *(int*)x
38 #define LO(x) *(1+(unsigned*)x)
42 #define restrict _Restrict
50 * Vector sine and cosine function. Just slight modifications to vcos.c.
53 extern const double __vlibm_TBL_sincos_hi
[], __vlibm_TBL_sincos_lo
[];
56 half
[2] = { 0.5, -0.5 },
58 invpio2
= 0.636619772367581343075535, /* 53 bits of pi/2 */
59 pio2_1
= 1.570796326734125614166, /* first 33 bits of pi/2 */
60 pio2_2
= 6.077100506303965976596e-11, /* second 33 bits of pi/2 */
61 pio2_3
= 2.022266248711166455796e-21, /* third 33 bits of pi/2 */
62 pio2_3t
= 8.478427660368899643959e-32, /* pi/2 - pio2_3 */
63 pp1
= -1.666666666605760465276263943134982554676e-0001,
64 pp2
= 8.333261209690963126718376566146180944442e-0003,
65 qq1
= -4.999999999977710986407023955908711557870e-0001,
66 qq2
= 4.166654863857219350645055881018842089580e-0002,
67 poly1
[2]= { -1.666666666666629669805215138920301589656e-0001,
68 -4.999999999999931701464060878888294524481e-0001 },
69 poly2
[2]= { 8.333333332390951295683993455280336376663e-0003,
70 4.166666666394861917535640593963708222319e-0002 },
71 poly3
[2]= { -1.984126237997976692791551778230098403960e-0004,
72 -1.388888552656142867832756687736851681462e-0003 },
73 poly4
[2]= { 2.753403624854277237649987622848330351110e-0006,
74 2.478519423681460796618128289454530524759e-0005 };
76 /* Don't __ the following; acomp will handle it */
77 extern double fabs(double);
78 extern void __vlibm_vsincos_big(int, double *, int, double *, int, double *, int, int);
81 * y[i*stridey] := sin( x[i*stridex] ), for i = 0..n.
82 * c[i*stridec] := cos( x[i*stridex] ), for i = 0..n.
84 * Calls __vlibm_vsincos_big to handle all elts which have abs >~ 1.647e+06.
85 * Argument reduction is done here for elts pi/4 < arg < 1.647e+06.
87 * elts < 2^-27 use the approximation 1.0 ~ cos(x).
90 __vsincos(int n
, double * restrict x
, int stridex
,
91 double * restrict y
, int stridey
,
92 double * restrict c
, int stridec
)
94 double x0_or_one
[4], x1_or_one
[4], x2_or_one
[4];
95 double y0_or_zero
[4], y1_or_zero
[4], y2_or_zero
[4];
99 *xsave
, *ysave
, *csave
;
100 unsigned hx0
, hx1
, hx2
, xsb0
, xsb1
, xsb2
;
101 int i
, biguns
, nsave
, sxsave
, sysave
, scsave
;
102 volatile int v __unused
;
115 /* Gotos here so _break_ exits MAIN LOOP. */
116 LOOP0
: /* Find first arg in right range. */
117 xsb0
= HI(x
); /* get most significant word */
118 hx0
= xsb0
& ~0x80000000; /* mask off sign bit */
119 if (hx0
> 0x3fe921fb) {
120 /* Too big: arg reduction needed, so leave for second part */
130 if (hx0
< 0x3e400000) {
131 /* Too small. cos x ~ 1, sin x ~ x. */
153 LOOP1
: /* Get second arg, same as above. */
155 hx1
= xsb1
& ~0x80000000;
156 if (hx1
> 0x3fe921fb)
167 if (hx1
< 0x3e400000)
190 LOOP2
: /* Get third arg, same as above. */
192 hx2
= xsb2
& ~0x80000000;
193 if (hx2
> 0x3fe921fb)
204 if (hx2
< 0x3e400000)
222 * 0x3fc40000 = 5/32 ~ 0.15625
223 * Get msb after subtraction. Will be 1 only if
224 * hx0 - 5/32 is negative.
226 i
= (hx2
- 0x3fc40000) >> 31;
227 i
|= ((hx1
- 0x3fc40000) >> 30) & 2;
228 i
|= ((hx0
- 0x3fc40000) >> 29) & 4;
231 double a1_0
, a1_1
, a1_2
, a2_0
, a2_1
, a2_2
;
233 double t0
, t1
, t2
, t1_0
, t1_1
, t1_2
, t2_0
, t2_1
, t2_2
;
237 case 0: /* All are > 5/32 */
238 j0
= (xsb0
+ 0x4000) & 0xffff8000;
239 j1
= (xsb1
+ 0x4000) & 0xffff8000;
240 j2
= (xsb2
+ 0x4000) & 0xffff8000;
257 t0
= z0
* (qq1
+ z0
* qq2
);
258 t1
= z1
* (qq1
+ z1
* qq2
);
259 t2
= z2
* (qq1
+ z2
* qq2
);
261 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
262 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
263 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
265 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
266 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
267 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
269 xsb0
= (xsb0
>> 30) & 2;
270 xsb1
= (xsb1
>> 30) & 2;
271 xsb2
= (xsb2
>> 30) & 2;
273 a1_0
= __vlibm_TBL_sincos_hi
[j0
+xsb0
]; /* sin_hi(t) */
274 a1_1
= __vlibm_TBL_sincos_hi
[j1
+xsb1
];
275 a1_2
= __vlibm_TBL_sincos_hi
[j2
+xsb2
];
277 a2_0
= __vlibm_TBL_sincos_hi
[j0
+1]; /* cos_hi(t) */
278 a2_1
= __vlibm_TBL_sincos_hi
[j1
+1];
279 a2_2
= __vlibm_TBL_sincos_hi
[j2
+1];
281 t2_0
= __vlibm_TBL_sincos_lo
[j0
+1] - (a1_0
*w0
- a2_0
*t0
);
282 t2_1
= __vlibm_TBL_sincos_lo
[j1
+1] - (a1_1
*w1
- a2_1
*t1
);
283 t2_2
= __vlibm_TBL_sincos_lo
[j2
+1] - (a1_2
*w2
- a2_2
*t2
);
289 t1_0
= a2_0
*w0
+ a1_0
*t0
;
290 t1_1
= a2_1
*w1
+ a1_1
*t1
;
291 t1_2
= a2_2
*w2
+ a1_2
*t2
;
293 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+xsb0
]; /* sin_lo(t) */
294 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+xsb1
];
295 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+xsb2
];
304 j0
= (xsb0
+ 0x4000) & 0xffff8000;
305 j1
= (xsb1
+ 0x4000) & 0xffff8000;
315 t0
= z0
* (qq1
+ z0
* qq2
);
316 t1
= z1
* (qq1
+ z1
* qq2
);
317 t2
= z2
* (poly3
[1] + z2
* poly4
[1]);
318 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
319 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
320 t2
= z2
* (poly1
[1] + z2
* (poly2
[1] + t2
));
321 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
322 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
323 xsb0
= (xsb0
>> 30) & 2;
324 xsb1
= (xsb1
>> 30) & 2;
326 a1_0
= __vlibm_TBL_sincos_hi
[j0
+xsb0
]; /* sin_hi(t) */
327 a1_1
= __vlibm_TBL_sincos_hi
[j1
+xsb1
];
329 a2_0
= __vlibm_TBL_sincos_hi
[j0
+1]; /* cos_hi(t) */
330 a2_1
= __vlibm_TBL_sincos_hi
[j1
+1];
332 t2_0
= __vlibm_TBL_sincos_lo
[j0
+1] - (a1_0
*w0
- a2_0
*t0
);
333 t2_1
= __vlibm_TBL_sincos_lo
[j1
+1] - (a1_1
*w1
- a2_1
*t1
);
339 t1_0
= a2_0
*w0
+ a1_0
*t0
;
340 t1_1
= a2_1
*w1
+ a1_1
*t1
;
341 t2
= z2
* (poly3
[0] + z2
* poly4
[0]);
343 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+xsb0
]; /* sin_lo(t) */
344 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+xsb1
];
345 t2
= z2
* (poly1
[0] + z2
* (poly2
[0] + t2
));
355 j0
= (xsb0
+ 0x4000) & 0xffff8000;
356 j2
= (xsb2
+ 0x4000) & 0xffff8000;
366 t0
= z0
* (qq1
+ z0
* qq2
);
367 t1
= z1
* (poly3
[1] + z1
* poly4
[1]);
368 t2
= z2
* (qq1
+ z2
* qq2
);
369 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
370 t1
= z1
* (poly1
[1] + z1
* (poly2
[1] + t1
));
371 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
372 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
373 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
374 xsb0
= (xsb0
>> 30) & 2;
375 xsb2
= (xsb2
>> 30) & 2;
377 a1_0
= __vlibm_TBL_sincos_hi
[j0
+xsb0
]; /* sin_hi(t) */
378 a1_2
= __vlibm_TBL_sincos_hi
[j2
+xsb2
];
380 a2_0
= __vlibm_TBL_sincos_hi
[j0
+1]; /* cos_hi(t) */
381 a2_2
= __vlibm_TBL_sincos_hi
[j2
+1];
383 t2_0
= __vlibm_TBL_sincos_lo
[j0
+1] - (a1_0
*w0
- a2_0
*t0
);
384 t2_2
= __vlibm_TBL_sincos_lo
[j2
+1] - (a1_2
*w2
- a2_2
*t2
);
390 t1_0
= a2_0
*w0
+ a1_0
*t0
;
391 t1
= z1
* (poly3
[0] + z1
* poly4
[0]);
392 t1_2
= a2_2
*w2
+ a1_2
*t2
;
394 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+xsb0
]; /* sin_lo(t) */
395 t1
= z1
* (poly1
[0] + z1
* (poly2
[0] + t1
));
396 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+xsb2
];
406 j0
= (xsb0
+ 0x4000) & 0xffff8000;
413 t0
= z0
* (qq1
+ z0
* qq2
);
414 t1
= z1
* (poly3
[1] + z1
* poly4
[1]);
415 t2
= z2
* (poly3
[1] + z2
* poly4
[1]);
416 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
417 t1
= z1
* (poly1
[1] + z1
* (poly2
[1] + t1
));
418 t2
= z2
* (poly1
[1] + z2
* (poly2
[1] + t2
));
419 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
420 xsb0
= (xsb0
>> 30) & 2;
421 a1_0
= __vlibm_TBL_sincos_hi
[j0
+xsb0
]; /* sin_hi(t) */
423 a2_0
= __vlibm_TBL_sincos_hi
[j0
+1]; /* cos_hi(t) */
425 t2_0
= __vlibm_TBL_sincos_lo
[j0
+1] - (a1_0
*w0
- a2_0
*t0
);
431 t1_0
= a2_0
*w0
+ a1_0
*t0
;
432 t1
= z1
* (poly3
[0] + z1
* poly4
[0]);
433 t2
= z2
* (poly3
[0] + z2
* poly4
[0]);
435 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+xsb0
]; /* sin_lo(t) */
436 t1
= z1
* (poly1
[0] + z1
* (poly2
[0] + t1
));
437 t2
= z2
* (poly1
[0] + z2
* (poly2
[0] + t2
));
448 j1
= (xsb1
+ 0x4000) & 0xffff8000;
449 j2
= (xsb2
+ 0x4000) & 0xffff8000;
459 t0
= z0
* (poly3
[1] + z0
* poly4
[1]);
460 t1
= z1
* (qq1
+ z1
* qq2
);
461 t2
= z2
* (qq1
+ z2
* qq2
);
462 t0
= z0
* (poly1
[1] + z0
* (poly2
[1] + t0
));
463 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
464 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
465 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
466 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
467 xsb1
= (xsb1
>> 30) & 2;
468 xsb2
= (xsb2
>> 30) & 2;
470 a1_1
= __vlibm_TBL_sincos_hi
[j1
+xsb1
];
471 a1_2
= __vlibm_TBL_sincos_hi
[j2
+xsb2
];
473 a2_1
= __vlibm_TBL_sincos_hi
[j1
+1];
474 a2_2
= __vlibm_TBL_sincos_hi
[j2
+1];
476 t2_1
= __vlibm_TBL_sincos_lo
[j1
+1] - (a1_1
*w1
- a2_1
*t1
);
477 t2_2
= __vlibm_TBL_sincos_lo
[j2
+1] - (a1_2
*w2
- a2_2
*t2
);
483 t0
= z0
* (poly3
[0] + z0
* poly4
[0]);
484 t1_1
= a2_1
*w1
+ a1_1
*t1
;
485 t1_2
= a2_2
*w2
+ a1_2
*t2
;
487 t0
= z0
* (poly1
[0] + z0
* (poly2
[0] + t0
));
488 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+xsb1
];
489 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+xsb2
];
499 j1
= (xsb1
+ 0x4000) & 0xffff8000;
506 t0
= z0
* (poly3
[1] + z0
* poly4
[1]);
507 t1
= z1
* (qq1
+ z1
* qq2
);
508 t2
= z2
* (poly3
[1] + z2
* poly4
[1]);
509 t0
= z0
* (poly1
[1] + z0
* (poly2
[1] + t0
));
510 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
511 t2
= z2
* (poly1
[1] + z2
* (poly2
[1] + t2
));
512 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
513 xsb1
= (xsb1
>> 30) & 2;
515 a1_1
= __vlibm_TBL_sincos_hi
[j1
+xsb1
];
517 a2_1
= __vlibm_TBL_sincos_hi
[j1
+1];
519 t2_1
= __vlibm_TBL_sincos_lo
[j1
+1] - (a1_1
*w1
- a2_1
*t1
);
525 t0
= z0
* (poly3
[0] + z0
* poly4
[0]);
526 t1_1
= a2_1
*w1
+ a1_1
*t1
;
527 t2
= z2
* (poly3
[0] + z2
* poly4
[0]);
529 t0
= z0
* (poly1
[0] + z0
* (poly2
[0] + t0
));
530 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+xsb1
];
531 t2
= z2
* (poly1
[0] + z2
* (poly2
[0] + t2
));
542 j2
= (xsb2
+ 0x4000) & 0xffff8000;
549 t0
= z0
* (poly3
[1] + z0
* poly4
[1]);
550 t1
= z1
* (poly3
[1] + z1
* poly4
[1]);
551 t2
= z2
* (qq1
+ z2
* qq2
);
552 t0
= z0
* (poly1
[1] + z0
* (poly2
[1] + t0
));
553 t1
= z1
* (poly1
[1] + z1
* (poly2
[1] + t1
));
554 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
555 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
556 xsb2
= (xsb2
>> 30) & 2;
557 a1_2
= __vlibm_TBL_sincos_hi
[j2
+xsb2
];
559 a2_2
= __vlibm_TBL_sincos_hi
[j2
+1];
561 t2_2
= __vlibm_TBL_sincos_lo
[j2
+1] - (a1_2
*w2
- a2_2
*t2
);
567 t0
= z0
* (poly3
[0] + z0
* poly4
[0]);
568 t1
= z1
* (poly3
[0] + z1
* poly4
[0]);
569 t1_2
= a2_2
*w2
+ a1_2
*t2
;
571 t0
= z0
* (poly1
[0] + z0
* (poly2
[0] + t0
));
572 t1
= z1
* (poly1
[0] + z1
* (poly2
[0] + t1
));
573 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+xsb2
];
583 case 7: /* All are < 5/32 */
587 t0
= z0
* (poly3
[1] + z0
* poly4
[1]);
588 t1
= z1
* (poly3
[1] + z1
* poly4
[1]);
589 t2
= z2
* (poly3
[1] + z2
* poly4
[1]);
590 t0
= z0
* (poly1
[1] + z0
* (poly2
[1] + t0
));
591 t1
= z1
* (poly1
[1] + z1
* (poly2
[1] + t1
));
592 t2
= z2
* (poly1
[1] + z2
* (poly2
[1] + t2
));
596 t0
= z0
* (poly3
[0] + z0
* poly4
[0]);
597 t1
= z1
* (poly3
[0] + z1
* poly4
[0]);
598 t2
= z2
* (poly3
[0] + z2
* poly4
[0]);
599 t0
= z0
* (poly1
[0] + z0
* (poly2
[0] + t0
));
600 t1
= z1
* (poly1
[0] + z1
* (poly2
[0] + t1
));
601 t2
= z2
* (poly1
[0] + z2
* (poly2
[0] + t2
));
615 } while (--n
> 0); /* END MAIN LOOP */
618 * CLEAN UP last 0, 1, or 2 elts.
620 if (i
> 0) /* Clean up elts at tail. i < 3. */
622 double a1_0
, a1_1
, a2_0
, a2_1
;
624 double t0
, t1
, t1_0
, t1_1
, t2_0
, t2_1
;
630 if (hx1
< 0x3fc40000)
633 t1
= z1
* (poly3
[1] + z1
* poly4
[1]);
634 t1
= z1
* (poly1
[1] + z1
* (poly2
[1] + t1
));
637 t1
= z1
* (poly3
[0] + z1
* poly4
[0]);
638 t1
= z1
* (poly1
[0] + z1
* (poly2
[0] + t1
));
644 j1
= (xsb1
+ 0x4000) & 0xffff8000;
649 t1
= z1
* (qq1
+ z1
* qq2
);
650 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
651 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
652 xsb1
= (xsb1
>> 30) & 2;
653 a1_1
= __vlibm_TBL_sincos_hi
[j1
+xsb1
];
654 a2_1
= __vlibm_TBL_sincos_hi
[j1
+1];
655 t2_1
= __vlibm_TBL_sincos_lo
[j1
+1] - (a1_1
*w1
- a2_1
*t1
);
657 t1_1
= a2_1
*w1
+ a1_1
*t1
;
658 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+xsb1
];
662 if (hx0
< 0x3fc40000)
665 t0
= z0
* (poly3
[1] + z0
* poly4
[1]);
666 t0
= z0
* (poly1
[1] + z0
* (poly2
[1] + t0
));
669 t0
= z0
* (poly3
[0] + z0
* poly4
[0]);
670 t0
= z0
* (poly1
[0] + z0
* (poly2
[0] + t0
));
676 j0
= (xsb0
+ 0x4000) & 0xffff8000;
681 t0
= z0
* (qq1
+ z0
* qq2
);
682 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
683 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
684 xsb0
= (xsb0
>> 30) & 2;
685 a1_0
= __vlibm_TBL_sincos_hi
[j0
+xsb0
]; /* sin_hi(t) */
686 a2_0
= __vlibm_TBL_sincos_hi
[j0
+1]; /* cos_hi(t) */
687 t2_0
= __vlibm_TBL_sincos_lo
[j0
+1] - (a1_0
*w0
- a2_0
*t0
);
689 t1_0
= a2_0
*w0
+ a1_0
*t0
;
690 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+xsb0
]; /* sin_lo(t) */
699 * Take care of BIGUNS.
725 double fn0
, fn1
, fn2
, a0
, a1
, a2
, w0
, w1
, w2
, y0
, y1
, y2
;
730 * Find 3 more to work on: Not already done, not too big.
736 if (hx
<= 0x3fe921fb) /* Done above. */
746 if (hx
> 0x413921fb) /* (1.6471e+06) Too big: leave it. */
748 if (hx
>= 0x7ff00000) /* Inf or NaN */
779 if (hx
<= 0x3fe921fb)
791 if (hx
>= 0x7ff00000)
822 if (hx
<= 0x3fe921fb)
834 if (hx
>= 0x7ff00000)
855 n0
= (int) (x0
* invpio2
+ half
[xsb0
]);
856 n1
= (int) (x1
* invpio2
+ half
[xsb1
]);
857 n2
= (int) (x2
* invpio2
+ half
[xsb2
]);
864 a0
= x0
- fn0
* pio2_1
;
865 a1
= x1
- fn1
* pio2_1
;
866 a2
= x2
- fn2
* pio2_1
;
879 w0
= fn0
* pio2_3
- y0
;
880 w1
= fn1
* pio2_3
- y1
;
881 w2
= fn2
* pio2_3
- y2
;
891 w0
= fn0
* pio2_3t
- y0
;
892 w1
= fn1
* pio2_3t
- y1
;
893 w2
= fn2
* pio2_3t
- y2
;
901 i
= ((xsb2
& ~0x80000000) - 0x3fc40000) >> 31;
903 i
|= (((xsb1
& ~0x80000000) - 0x3fc40000) >> 30) & 2;
905 i
|= (((xsb0
& ~0x80000000) - 0x3fc40000) >> 29) & 4;
908 double a1_0
, a1_1
, a1_2
, a2_0
, a2_1
, a2_2
;
909 double t0
, t1
, t2
, t1_0
, t1_1
, t1_2
, t2_0
, t2_1
, t2_2
;
914 j0
= (xsb0
+ 0x4000) & 0xffff8000;
915 j1
= (xsb1
+ 0x4000) & 0xffff8000;
916 j2
= (xsb2
+ 0x4000) & 0xffff8000;
929 t0
= z0
* (qq1
+ z0
* qq2
);
930 t1
= z1
* (qq1
+ z1
* qq2
);
931 t2
= z2
* (qq1
+ z2
* qq2
);
932 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
933 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
934 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
935 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
936 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
937 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
938 xsb0
= (xsb0
>> 30) & 2;
939 xsb1
= (xsb1
>> 30) & 2;
940 xsb2
= (xsb2
>> 30) & 2;
941 n0
^= (xsb0
& ~(n0
<< 1));
942 n1
^= (xsb1
& ~(n1
<< 1));
943 n2
^= (xsb2
& ~(n2
<< 1));
948 a1_0
= __vlibm_TBL_sincos_hi
[j0
+n0
];
949 a1_1
= __vlibm_TBL_sincos_hi
[j1
+n1
];
950 a1_2
= __vlibm_TBL_sincos_hi
[j2
+n2
];
952 a2_0
= __vlibm_TBL_sincos_hi
[j0
+((n0
+xsb0
)&3)];
953 a2_1
= __vlibm_TBL_sincos_hi
[j1
+((n1
+xsb1
)&3)];
954 a2_2
= __vlibm_TBL_sincos_hi
[j2
+((n2
+xsb2
)&3)];
956 t2_0
= __vlibm_TBL_sincos_lo
[j0
+((n0
+xsb0
)&3)] - (a1_0
*w0
- a2_0
*t0
);
957 t2_1
= __vlibm_TBL_sincos_lo
[j1
+((n1
+xsb1
)&3)] - (a1_1
*w1
- a2_1
*t1
);
958 t2_2
= __vlibm_TBL_sincos_lo
[j2
+((n2
+xsb2
)&3)] - (a1_2
*w2
- a2_2
*t2
);
972 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+n0
];
973 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+n1
];
974 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+n2
];
983 j0
= (xsb0
+ 0x4000) & 0xffff8000;
984 j1
= (xsb1
+ 0x4000) & 0xffff8000;
999 t0
= z0
* (qq1
+ z0
* qq2
);
1000 t1
= z1
* (qq1
+ z1
* qq2
);
1001 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1002 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
1003 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
1004 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1005 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1006 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1007 xsb0
= (xsb0
>> 30) & 2;
1008 xsb1
= (xsb1
>> 30) & 2;
1009 n0
^= (xsb0
& ~(n0
<< 1));
1010 n1
^= (xsb1
& ~(n1
<< 1));
1013 a1_0
= __vlibm_TBL_sincos_hi
[j0
+n0
];
1014 a1_1
= __vlibm_TBL_sincos_hi
[j1
+n1
];
1016 a2_0
= __vlibm_TBL_sincos_hi
[j0
+((n0
+xsb0
)&3)];
1017 a2_1
= __vlibm_TBL_sincos_hi
[j1
+((n1
+xsb1
)&3)];
1019 t2_0
= __vlibm_TBL_sincos_lo
[j0
+((n0
+xsb0
)&3)] - (a1_0
*w0
- a2_0
*t0
);
1020 t2_1
= __vlibm_TBL_sincos_lo
[j1
+((n1
+xsb1
)&3)] - (a1_1
*w1
- a2_1
*t1
);
1021 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1029 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1031 t1_0
= a2_0
*w0
+ a1_0
*t0
;
1032 t1_1
= a2_1
*w1
+ a1_1
*t1
;
1033 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1035 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+n0
];
1036 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+n1
];
1037 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1046 j0
= (xsb0
+ 0x4000) & 0xffff8000;
1048 j2
= (xsb2
+ 0x4000) & 0xffff8000;
1055 x0
= (x0
- t0
) + y0
;
1057 y1_or_zero
[2] = -y1
;
1058 x2
= (x2
- t2
) + y2
;
1062 t0
= z0
* (qq1
+ z0
* qq2
);
1063 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1064 t2
= z2
* (qq1
+ z2
* qq2
);
1065 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
1066 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1067 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
1068 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1069 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1070 xsb0
= (xsb0
>> 30) & 2;
1071 xsb2
= (xsb2
>> 30) & 2;
1072 n0
^= (xsb0
& ~(n0
<< 1));
1073 n2
^= (xsb2
& ~(n2
<< 1));
1077 a1_0
= __vlibm_TBL_sincos_hi
[j0
+n0
];
1078 a1_2
= __vlibm_TBL_sincos_hi
[j2
+n2
];
1080 a2_0
= __vlibm_TBL_sincos_hi
[j0
+((n0
+xsb0
)&3)];
1081 a2_2
= __vlibm_TBL_sincos_hi
[j2
+((n2
+xsb2
)&3)];
1083 t2_0
= __vlibm_TBL_sincos_lo
[j0
+((n0
+xsb0
)&3)] - (a1_0
*w0
- a2_0
*t0
);
1084 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1085 t2_2
= __vlibm_TBL_sincos_lo
[j2
+((n2
+xsb2
)&3)] - (a1_2
*w2
- a2_2
*t2
);
1093 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1095 t1_0
= a2_0
*w0
+ a1_0
*t0
;
1096 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1097 t1_2
= a2_2
*w2
+ a1_2
*t2
;
1099 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+n0
];
1100 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1101 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+n2
];
1110 j0
= (xsb0
+ 0x4000) & 0xffff8000;
1119 x0
= (x0
- t0
) + y0
;
1121 y1_or_zero
[2] = -y1
;
1123 y2_or_zero
[2] = -y2
;
1127 t0
= z0
* (qq1
+ z0
* qq2
);
1128 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1129 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1130 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
1131 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1132 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1133 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1134 xsb0
= (xsb0
>> 30) & 2;
1135 n0
^= (xsb0
& ~(n0
<< 1));
1138 a1_0
= __vlibm_TBL_sincos_hi
[j0
+n0
];
1139 a2_0
= __vlibm_TBL_sincos_hi
[j0
+((n0
+xsb0
)&3)];
1141 t2_0
= __vlibm_TBL_sincos_lo
[j0
+((n0
+xsb0
)&3)] - (a1_0
*w0
- a2_0
*t0
);
1142 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1143 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1154 t1_0
= a2_0
*w0
+ a1_0
*t0
;
1155 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1156 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1158 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+n0
];
1159 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1160 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1162 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1163 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1173 j1
= (xsb1
+ 0x4000) & 0xffff8000;
1174 j2
= (xsb2
+ 0x4000) & 0xffff8000;
1182 y0_or_zero
[2] = -y0
;
1183 x1
= (x1
- t1
) + y1
;
1184 x2
= (x2
- t2
) + y2
;
1188 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1189 t1
= z1
* (qq1
+ z1
* qq2
);
1190 t2
= z2
* (qq1
+ z2
* qq2
);
1191 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1192 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
1193 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
1194 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1195 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1196 xsb1
= (xsb1
>> 30) & 2;
1197 xsb2
= (xsb2
>> 30) & 2;
1198 n1
^= (xsb1
& ~(n1
<< 1));
1199 n2
^= (xsb2
& ~(n2
<< 1));
1203 a1_1
= __vlibm_TBL_sincos_hi
[j1
+n1
];
1204 a1_2
= __vlibm_TBL_sincos_hi
[j2
+n2
];
1206 a2_1
= __vlibm_TBL_sincos_hi
[j1
+((n1
+xsb1
)&3)];
1207 a2_2
= __vlibm_TBL_sincos_hi
[j2
+((n2
+xsb2
)&3)];
1209 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1210 t2_1
= __vlibm_TBL_sincos_lo
[j1
+((n1
+xsb1
)&3)] - (a1_1
*w1
- a2_1
*t1
);
1211 t2_2
= __vlibm_TBL_sincos_lo
[j2
+((n2
+xsb2
)&3)] - (a1_2
*w2
- a2_2
*t2
);
1219 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1221 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1222 t1_1
= a2_1
*w1
+ a1_1
*t1
;
1223 t1_2
= a2_2
*w2
+ a1_2
*t2
;
1225 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1226 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+n1
];
1227 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+n2
];
1237 j1
= (xsb1
+ 0x4000) & 0xffff8000;
1246 y0_or_zero
[2] = -y0
;
1247 x1
= (x1
- t1
) + y1
;
1249 y2_or_zero
[2] = -y2
;
1253 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1254 t1
= z1
* (qq1
+ z1
* qq2
);
1255 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1256 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1257 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
1258 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1259 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1260 xsb1
= (xsb1
>> 30) & 2;
1261 n1
^= (xsb1
& ~(n1
<< 1));
1264 a1_1
= __vlibm_TBL_sincos_hi
[j1
+n1
];
1265 a2_1
= __vlibm_TBL_sincos_hi
[j1
+((n1
+xsb1
)&3)];
1267 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1268 t2_1
= __vlibm_TBL_sincos_lo
[j1
+((n1
+xsb1
)&3)] - (a1_1
*w1
- a2_1
*t1
);
1269 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1280 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1281 t1_1
= a2_1
*w1
+ a1_1
*t1
;
1282 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1284 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1285 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+n1
];
1286 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1288 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1289 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1300 j2
= (xsb2
+ 0x4000) & 0xffff8000;
1308 y0_or_zero
[2] = -y0
;
1310 y1_or_zero
[2] = -y1
;
1311 x2
= (x2
- t2
) + y2
;
1315 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1316 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1317 t2
= z2
* (qq1
+ z2
* qq2
);
1318 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1319 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1320 w2
= x2
* (one
+ z2
* (pp1
+ z2
* pp2
));
1321 j2
= (((j2
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1322 xsb2
= (xsb2
>> 30) & 2;
1323 n2
^= (xsb2
& ~(n2
<< 1));
1326 a1_2
= __vlibm_TBL_sincos_hi
[j2
+n2
];
1327 a2_2
= __vlibm_TBL_sincos_hi
[j2
+((n2
+xsb2
)&3)];
1329 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1330 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1331 t2_2
= __vlibm_TBL_sincos_lo
[j2
+((n2
+xsb2
)&3)] - (a1_2
*w2
- a2_2
*t2
);
1342 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1343 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1344 t1_2
= a2_2
*w2
+ a1_2
*t2
;
1346 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1347 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1348 t1_2
+= __vlibm_TBL_sincos_lo
[j2
+n2
];
1350 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1351 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1370 y0_or_zero
[2] = -y0
;
1372 y1_or_zero
[2] = -y1
;
1374 y2_or_zero
[2] = -y2
;
1378 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1379 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1380 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1381 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1382 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1383 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1384 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1385 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1386 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1397 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1398 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1399 t2
= z2
* (poly3
[j2
] + z2
* poly4
[j2
]);
1400 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1401 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1402 t2
= z2
* (poly1
[j2
] + z2
* (poly2
[j2
] + t2
));
1403 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1404 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1405 t2
= x2_or_one
[n2
] + (y2_or_zero
[n2
] + x2_or_one
[n2
] * t2
);
1420 double a1_0
, a1_1
, a2_0
, a2_1
;
1421 double t0
, t1
, t1_0
, t1_1
, t2_0
, t2_1
;
1422 double fn0
, fn1
, a0
, a1
, w0
, w1
, y0
, y1
;
1429 n1
= (int) (x1
* invpio2
+ half
[xsb1
]);
1432 a1
= x1
- fn1
* pio2_1
;
1435 y1
= (a1
- x1
) - w1
;
1437 w1
= fn1
* pio2_3
- y1
;
1439 y1
= (a1
- x1
) - w1
;
1441 w1
= fn1
* pio2_3t
- y1
;
1443 y1
= (a1
- x1
) - w1
;
1445 if ((xsb1
& ~0x80000000) < 0x3fc40000)
1451 y1_or_zero
[2] = -y1
;
1453 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1454 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1455 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1459 t1
= z1
* (poly3
[j1
] + z1
* poly4
[j1
]);
1460 t1
= z1
* (poly1
[j1
] + z1
* (poly2
[j1
] + t1
));
1461 t1
= x1_or_one
[n1
] + (y1_or_zero
[n1
] + x1_or_one
[n1
] * t1
);
1466 j1
= (xsb1
+ 0x4000) & 0xffff8000;
1469 x1
= (x1
- t1
) + y1
;
1471 t1
= z1
* (qq1
+ z1
* qq2
);
1472 w1
= x1
* (one
+ z1
* (pp1
+ z1
* pp2
));
1473 j1
= (((j1
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1474 xsb1
= (xsb1
>> 30) & 2;
1475 n1
^= (xsb1
& ~(n1
<< 1));
1477 a1_1
= __vlibm_TBL_sincos_hi
[j1
+n1
];
1478 a2_1
= __vlibm_TBL_sincos_hi
[j1
+((n1
+xsb1
)&3)];
1479 t2_1
= __vlibm_TBL_sincos_lo
[j1
+((n1
+xsb1
)&3)] - (a1_1
*w1
- a2_1
*t1
);
1481 t1_1
= a2_1
*w1
+ a1_1
*t1
;
1482 t1_1
+= __vlibm_TBL_sincos_lo
[j1
+n1
];
1486 n0
= (int) (x0
* invpio2
+ half
[xsb0
]);
1489 a0
= x0
- fn0
* pio2_1
;
1492 y0
= (a0
- x0
) - w0
;
1494 w0
= fn0
* pio2_3
- y0
;
1496 y0
= (a0
- x0
) - w0
;
1498 w0
= fn0
* pio2_3t
- y0
;
1500 y0
= (a0
- x0
) - w0
;
1502 if ((xsb0
& ~0x80000000) < 0x3fc40000)
1508 y0_or_zero
[2] = -y0
;
1510 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1511 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1512 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1516 t0
= z0
* (poly3
[j0
] + z0
* poly4
[j0
]);
1517 t0
= z0
* (poly1
[j0
] + z0
* (poly2
[j0
] + t0
));
1518 t0
= x0_or_one
[n0
] + (y0_or_zero
[n0
] + x0_or_one
[n0
] * t0
);
1523 j0
= (xsb0
+ 0x4000) & 0xffff8000;
1526 x0
= (x0
- t0
) + y0
;
1528 t0
= z0
* (qq1
+ z0
* qq2
);
1529 w0
= x0
* (one
+ z0
* (pp1
+ z0
* pp2
));
1530 j0
= (((j0
& ~0x80000000) - 0x3fc40000) >> 13) & ~0x3;
1531 xsb0
= (xsb0
>> 30) & 2;
1532 n0
^= (xsb0
& ~(n0
<< 1));
1534 a1_0
= __vlibm_TBL_sincos_hi
[j0
+n0
];
1535 a2_0
= __vlibm_TBL_sincos_hi
[j0
+((n0
+xsb0
)&3)];
1536 t2_0
= __vlibm_TBL_sincos_lo
[j0
+((n0
+xsb0
)&3)] - (a1_0
*w0
- a2_0
*t0
);
1538 t1_0
= a2_0
*w0
+ a1_0
*t0
;
1539 t1_0
+= __vlibm_TBL_sincos_lo
[j0
+n0
];
1545 __vlibm_vsincos_big(nsave
, xsave
, sxsave
, ysave
, sysave
, csave
, scsave
, 0x413921fb);