1/*
2Copyright (c) 2014, Intel Corporation
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8    * Redistributions of source code must retain the above copyright notice,
9    * this list of conditions and the following disclaimer.
10
11    * Redistributions in binary form must reproduce the above copyright notice,
12    * this list of conditions and the following disclaimer in the documentation
13    * and/or other materials provided with the distribution.
14
15    * Neither the name of Intel Corporation nor the names of its contributors
16    * may be used to endorse or promote products derived from this software
17    * without specific prior written permission.
18
19THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29*/
30
31/******************************************************************************/
32//                     ALGORITHM DESCRIPTION
33//                     ---------------------
34//
35//     1. RANGE REDUCTION
36//
37//     We perform an initial range reduction from X to r with
38//
39//          X =~= N * pi/32 + r
40//
41//     so that |r| <= pi/64 + epsilon. We restrict inputs to those
42//     where |N| <= 932560. Beyond this, the range reduction is
43//     insufficiently accurate. For extremely small inputs,
44//     denormalization can occur internally, impacting performance.
45//     This means that the main path is actually only taken for
46//     2^-252 <= |X| < 90112.
47//
48//     To avoid branches, we perform the range reduction to full
49//     accuracy each time.
50//
51//          X - N * (P_1 + P_2 + P_3)
52//
53//     where P_1 and P_2 are 32-bit numbers (so multiplication by N
54//     is exact) and P_3 is a 53-bit number. Together, these
55//     approximate pi well enough for all cases in the restricted
56//     range.
57//
58//     The main reduction sequence is:
59//
60//             y = 32/pi * x
61//             N = integer(y)
62//     (computed by adding and subtracting off SHIFTER)
63//
64//             m_1 = N * P_1
65//             m_2 = N * P_2
66//             r_1 = x - m_1
67//             r = r_1 - m_2
68//     (this r can be used for most of the calculation)
69//
70//             c_1 = r_1 - r
71//             m_3 = N * P_3
72//             c_2 = c_1 - m_2
73//             c = c_2 - m_3
74//
75//     2. MAIN ALGORITHM
76//
77//     The algorithm uses a table lookup based on B = M * pi / 32
78//     where M = N mod 64. The stored values are:
79//       sigma             closest power of 2 to cos(B)
80//       C_hl              53-bit cos(B) - sigma
81//       S_hi + S_lo       2 * 53-bit sin(B)
82//
83//     The computation is organized as follows:
84//
85//          sin(B + r + c) = [sin(B) + sigma * r] +
86//                           r * (cos(B) - sigma) +
87//                           sin(B) * [cos(r + c) - 1] +
88//                           cos(B) * [sin(r + c) - r]
89//
90//     which is approximately:
91//
92//          [S_hi + sigma * r] +
93//          C_hl * r +
94//          S_lo + S_hi * [(cos(r) - 1) - r * c] +
95//          (C_hl + sigma) * [(sin(r) - r) + c]
96//
97//     and this is what is actually computed. We separate this sum
98//     into four parts:
99//
100//          hi + med + pols + corr
101//
102//     where
103//
104//          hi       = S_hi + sigma r
105//          med      = C_hl * r
106//          pols     = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
107//          corr     = S_lo + c * ((C_hl + sigma) - S_hi * r)
108//
109//     3. POLYNOMIAL
110//
111//     The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
112//     (sin(r) - r) can be rearranged freely, since it is quite
113//     small, so we exploit parallelism to the fullest.
114//
115//          psc4       =   SC_4 * r_1
116//          msc4       =   psc4 * r
117//          r2         =   r * r
118//          msc2       =   SC_2 * r2
119//          r4         =   r2 * r2
120//          psc3       =   SC_3 + msc4
121//          psc1       =   SC_1 + msc2
122//          msc3       =   r4 * psc3
123//          sincospols =   psc1 + msc3
124//          pols       =   sincospols *
125//                         <S_hi * r^2 | (C_hl + sigma) * r^3>
126//
127//     4. CORRECTION TERM
128//
129//     This is where the "c" component of the range reduction is
130//     taken into account; recall that just "r" is used for most of
131//     the calculation.
132//
133//          -c   = m_3 - c_2
134//          -d   = S_hi * r - (C_hl + sigma)
135//          corr = -c * -d + S_lo
136//
137//     5. COMPENSATED SUMMATIONS
138//
139//     The two successive compensated summations add up the high
140//     and medium parts, leaving just the low parts to add up at
141//     the end.
142//
143//          rs        =  sigma * r
144//          res_int   =  S_hi + rs
145//          k_0       =  S_hi - res_int
146//          k_2       =  k_0 + rs
147//          med       =  C_hl * r
148//          res_hi    =  res_int + med
149//          k_1       =  res_int - res_hi
150//          k_3       =  k_1 + med
151//
152//     6. FINAL SUMMATION
153//
154//     We now add up all the small parts:
155//
156//          res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
157//
158//     Now the overall result is just:
159//
160//          res_hi + res_lo
161//
162//     7. SMALL ARGUMENTS
163//
164//     Inputs with |X| < 2^-252 are treated specially as
165//     1 - |x|.
166//
167// Special cases:
168//  cos(NaN) = quiet NaN, and raise invalid exception
169//  cos(INF) = NaN and raise invalid exception
170//  cos(0) = 1
171//
172/******************************************************************************/
173
174#include <private/bionic_asm.h>
175# -- Begin  static_func
176        .text
177        .align __bionic_asm_align
178        .type static_func, @function
179static_func:
180..B1.1:
181        call      ..L2
182..L2:
183        popl      %eax
184        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
185        lea       static_const_table@GOTOFF(%eax), %eax
186        ret
187        .size   static_func,.-static_func
188# -- End  static_func
189
190# -- Begin  cos
191ENTRY(cos)
192# parameter 1: 8 + %ebp
193..B2.1:
194..B2.2:
195        pushl     %ebp
196        movl      %esp, %ebp
197        subl      $120, %esp
198        movl      %ebx, 56(%esp)
199        call      static_func
200        movl      %eax, %ebx
201        movsd     128(%esp), %xmm0
202        pextrw    $3, %xmm0, %eax
203        andl      $32767, %eax
204        subl      $12336, %eax
205        cmpl      $4293, %eax
206        ja        .L_2TAG_PACKET_0.0.2
207        movsd     2160(%ebx), %xmm1
208        mulsd     %xmm0, %xmm1
209        movapd    2240(%ebx), %xmm5
210        movsd     2224(%ebx), %xmm4
211        andpd     %xmm0, %xmm4
212        orps      %xmm4, %xmm5
213        movsd     2128(%ebx), %xmm3
214        movapd    2112(%ebx), %xmm2
215        addpd     %xmm5, %xmm1
216        cvttsd2si %xmm1, %edx
217        cvtsi2sdl %edx, %xmm1
218        mulsd     %xmm1, %xmm3
219        unpcklpd  %xmm1, %xmm1
220        addl      $1865232, %edx
221        movapd    %xmm0, %xmm4
222        andl      $63, %edx
223        movapd    2096(%ebx), %xmm5
224        lea       (%ebx), %eax
225        shll      $5, %edx
226        addl      %edx, %eax
227        mulpd     %xmm1, %xmm2
228        subsd     %xmm3, %xmm0
229        mulsd     2144(%ebx), %xmm1
230        subsd     %xmm3, %xmm4
231        movsd     8(%eax), %xmm7
232        unpcklpd  %xmm0, %xmm0
233        movapd    %xmm4, %xmm3
234        subsd     %xmm2, %xmm4
235        mulpd     %xmm0, %xmm5
236        subpd     %xmm2, %xmm0
237        movapd    2064(%ebx), %xmm6
238        mulsd     %xmm4, %xmm7
239        subsd     %xmm4, %xmm3
240        mulpd     %xmm0, %xmm5
241        mulpd     %xmm0, %xmm0
242        subsd     %xmm2, %xmm3
243        movapd    (%eax), %xmm2
244        subsd     %xmm3, %xmm1
245        movsd     24(%eax), %xmm3
246        addsd     %xmm3, %xmm2
247        subsd     %xmm2, %xmm7
248        mulsd     %xmm4, %xmm2
249        mulpd     %xmm0, %xmm6
250        mulsd     %xmm4, %xmm3
251        mulpd     %xmm0, %xmm2
252        mulpd     %xmm0, %xmm0
253        addpd     2080(%ebx), %xmm5
254        mulsd     (%eax), %xmm4
255        addpd     2048(%ebx), %xmm6
256        mulpd     %xmm0, %xmm5
257        movapd    %xmm3, %xmm0
258        addsd     8(%eax), %xmm3
259        mulpd     %xmm7, %xmm1
260        movapd    %xmm4, %xmm7
261        addsd     %xmm3, %xmm4
262        addpd     %xmm5, %xmm6
263        movsd     8(%eax), %xmm5
264        subsd     %xmm3, %xmm5
265        subsd     %xmm4, %xmm3
266        addsd     16(%eax), %xmm1
267        mulpd     %xmm2, %xmm6
268        addsd     %xmm0, %xmm5
269        addsd     %xmm7, %xmm3
270        addsd     %xmm5, %xmm1
271        addsd     %xmm3, %xmm1
272        addsd     %xmm6, %xmm1
273        unpckhpd  %xmm6, %xmm6
274        addsd     %xmm6, %xmm1
275        addsd     %xmm1, %xmm4
276        movsd     %xmm4, (%esp)
277        fldl      (%esp)
278        jmp       .L_2TAG_PACKET_1.0.2
279.L_2TAG_PACKET_0.0.2:
280        jg        .L_2TAG_PACKET_2.0.2
281        pextrw    $3, %xmm0, %eax
282        andl      $32767, %eax
283        pinsrw    $3, %eax, %xmm0
284        movsd     2192(%ebx), %xmm1
285        subsd     %xmm0, %xmm1
286        movsd     %xmm1, (%esp)
287        fldl      (%esp)
288        jmp       .L_2TAG_PACKET_1.0.2
289.L_2TAG_PACKET_2.0.2:
290        movl      132(%esp), %eax
291        andl      $2146435072, %eax
292        cmpl      $2146435072, %eax
293        je        .L_2TAG_PACKET_3.0.2
294        subl      $32, %esp
295        movsd     %xmm0, (%esp)
296        lea       40(%esp), %eax
297        movl      %eax, 8(%esp)
298        movl      $1, %eax
299        movl      %eax, 12(%esp)
300        call      __libm_sincos_huge
301        addl      $32, %esp
302        fldl      8(%esp)
303        jmp       .L_2TAG_PACKET_1.0.2
304.L_2TAG_PACKET_3.0.2:
305        fldl      128(%esp)
306        fmull     2208(%ebx)
307.L_2TAG_PACKET_1.0.2:
308        movl      56(%esp), %ebx
309        movl      %ebp, %esp
310        popl      %ebp
311        ret
312..B2.3:
313END(cos)
314# -- End  cos
315
316# Start file scope ASM
317ALIAS_SYMBOL(cosl, cos);
318# End file scope ASM
319	.section .rodata, "a"
320	.align 16
321	.align 16
322static_const_table:
323	.long	0
324	.long	0
325	.long	0
326	.long	0
327	.long	0
328	.long	0
329	.long	0
330	.long	1072693248
331	.long	393047345
332	.long	3212032302
333	.long	3156849708
334	.long	1069094822
335	.long	3758096384
336	.long	3158189848
337	.long	0
338	.long	1072693248
339	.long	18115067
340	.long	3214126342
341	.long	1013556747
342	.long	1070135480
343	.long	3221225472
344	.long	3160567065
345	.long	0
346	.long	1072693248
347	.long	2476548698
348	.long	3215330282
349	.long	785751814
350	.long	1070765062
351	.long	2684354560
352	.long	3161838221
353	.long	0
354	.long	1072693248
355	.long	2255197647
356	.long	3216211105
357	.long	2796464483
358	.long	1071152610
359	.long	3758096384
360	.long	3160878317
361	.long	0
362	.long	1072693248
363	.long	1945768569
364	.long	3216915048
365	.long	939980347
366	.long	1071524701
367	.long	536870912
368	.long	1012796809
369	.long	0
370	.long	1072693248
371	.long	1539668340
372	.long	3217396327
373	.long	967731400
374	.long	1071761211
375	.long	536870912
376	.long	1015752157
377	.long	0
378	.long	1072693248
379	.long	1403757309
380	.long	3217886718
381	.long	621354454
382	.long	1071926515
383	.long	536870912
384	.long	1013450602
385	.long	0
386	.long	1072693248
387	.long	2583490354
388	.long	1070236281
389	.long	1719614413
390	.long	1072079006
391	.long	536870912
392	.long	3163282740
393	.long	0
394	.long	1071644672
395	.long	2485417816
396	.long	1069626316
397	.long	1796544321
398	.long	1072217216
399	.long	536870912
400	.long	3162686945
401	.long	0
402	.long	1071644672
403	.long	2598800519
404	.long	1068266419
405	.long	688824739
406	.long	1072339814
407	.long	3758096384
408	.long	1010431536
409	.long	0
410	.long	1071644672
411	.long	2140183630
412	.long	3214756396
413	.long	4051746225
414	.long	1072445618
415	.long	2147483648
416	.long	3161907377
417	.long	0
418	.long	1071644672
419	.long	1699043957
420	.long	3216902261
421	.long	3476196678
422	.long	1072533611
423	.long	536870912
424	.long	1014257638
425	.long	0
426	.long	1071644672
427	.long	1991047213
428	.long	1067753521
429	.long	1455828442
430	.long	1072602945
431	.long	3758096384
432	.long	1015505073
433	.long	0
434	.long	1070596096
435	.long	240740309
436	.long	3215727903
437	.long	3489094832
438	.long	1072652951
439	.long	536870912
440	.long	1014325783
441	.long	0
442	.long	1070596096
443	.long	257503056
444	.long	3214647653
445	.long	2748392742
446	.long	1072683149
447	.long	1073741824
448	.long	3163061750
449	.long	0
450	.long	1069547520
451	.long	0
452	.long	0
453	.long	0
454	.long	1072693248
455	.long	0
456	.long	0
457	.long	0
458	.long	0
459	.long	257503056
460	.long	1067164005
461	.long	2748392742
462	.long	1072683149
463	.long	1073741824
464	.long	3163061750
465	.long	0
466	.long	3217031168
467	.long	240740309
468	.long	1068244255
469	.long	3489094832
470	.long	1072652951
471	.long	536870912
472	.long	1014325783
473	.long	0
474	.long	3218079744
475	.long	1991047213
476	.long	3215237169
477	.long	1455828442
478	.long	1072602945
479	.long	3758096384
480	.long	1015505073
481	.long	0
482	.long	3218079744
483	.long	1699043957
484	.long	1069418613
485	.long	3476196678
486	.long	1072533611
487	.long	536870912
488	.long	1014257638
489	.long	0
490	.long	3219128320
491	.long	2140183630
492	.long	1067272748
493	.long	4051746225
494	.long	1072445618
495	.long	2147483648
496	.long	3161907377
497	.long	0
498	.long	3219128320
499	.long	2598800519
500	.long	3215750067
501	.long	688824739
502	.long	1072339814
503	.long	3758096384
504	.long	1010431536
505	.long	0
506	.long	3219128320
507	.long	2485417816
508	.long	3217109964
509	.long	1796544321
510	.long	1072217216
511	.long	536870912
512	.long	3162686945
513	.long	0
514	.long	3219128320
515	.long	2583490354
516	.long	3217719929
517	.long	1719614413
518	.long	1072079006
519	.long	536870912
520	.long	3163282740
521	.long	0
522	.long	3219128320
523	.long	1403757309
524	.long	1070403070
525	.long	621354454
526	.long	1071926515
527	.long	536870912
528	.long	1013450602
529	.long	0
530	.long	3220176896
531	.long	1539668340
532	.long	1069912679
533	.long	967731400
534	.long	1071761211
535	.long	536870912
536	.long	1015752157
537	.long	0
538	.long	3220176896
539	.long	1945768569
540	.long	1069431400
541	.long	939980347
542	.long	1071524701
543	.long	536870912
544	.long	1012796809
545	.long	0
546	.long	3220176896
547	.long	2255197647
548	.long	1068727457
549	.long	2796464483
550	.long	1071152610
551	.long	3758096384
552	.long	3160878317
553	.long	0
554	.long	3220176896
555	.long	2476548698
556	.long	1067846634
557	.long	785751814
558	.long	1070765062
559	.long	2684354560
560	.long	3161838221
561	.long	0
562	.long	3220176896
563	.long	18115067
564	.long	1066642694
565	.long	1013556747
566	.long	1070135480
567	.long	3221225472
568	.long	3160567065
569	.long	0
570	.long	3220176896
571	.long	393047345
572	.long	1064548654
573	.long	3156849708
574	.long	1069094822
575	.long	3758096384
576	.long	3158189848
577	.long	0
578	.long	3220176896
579	.long	0
580	.long	0
581	.long	0
582	.long	0
583	.long	0
584	.long	0
585	.long	0
586	.long	3220176896
587	.long	393047345
588	.long	1064548654
589	.long	3156849708
590	.long	3216578470
591	.long	3758096384
592	.long	1010706200
593	.long	0
594	.long	3220176896
595	.long	18115067
596	.long	1066642694
597	.long	1013556747
598	.long	3217619128
599	.long	3221225472
600	.long	1013083417
601	.long	0
602	.long	3220176896
603	.long	2476548698
604	.long	1067846634
605	.long	785751814
606	.long	3218248710
607	.long	2684354560
608	.long	1014354573
609	.long	0
610	.long	3220176896
611	.long	2255197647
612	.long	1068727457
613	.long	2796464483
614	.long	3218636258
615	.long	3758096384
616	.long	1013394669
617	.long	0
618	.long	3220176896
619	.long	1945768569
620	.long	1069431400
621	.long	939980347
622	.long	3219008349
623	.long	536870912
624	.long	3160280457
625	.long	0
626	.long	3220176896
627	.long	1539668340
628	.long	1069912679
629	.long	967731400
630	.long	3219244859
631	.long	536870912
632	.long	3163235805
633	.long	0
634	.long	3220176896
635	.long	1403757309
636	.long	1070403070
637	.long	621354454
638	.long	3219410163
639	.long	536870912
640	.long	3160934250
641	.long	0
642	.long	3220176896
643	.long	2583490354
644	.long	3217719929
645	.long	1719614413
646	.long	3219562654
647	.long	536870912
648	.long	1015799092
649	.long	0
650	.long	3219128320
651	.long	2485417816
652	.long	3217109964
653	.long	1796544321
654	.long	3219700864
655	.long	536870912
656	.long	1015203297
657	.long	0
658	.long	3219128320
659	.long	2598800519
660	.long	3215750067
661	.long	688824739
662	.long	3219823462
663	.long	3758096384
664	.long	3157915184
665	.long	0
666	.long	3219128320
667	.long	2140183630
668	.long	1067272748
669	.long	4051746225
670	.long	3219929266
671	.long	2147483648
672	.long	1014423729
673	.long	0
674	.long	3219128320
675	.long	1699043957
676	.long	1069418613
677	.long	3476196678
678	.long	3220017259
679	.long	536870912
680	.long	3161741286
681	.long	0
682	.long	3219128320
683	.long	1991047213
684	.long	3215237169
685	.long	1455828442
686	.long	3220086593
687	.long	3758096384
688	.long	3162988721
689	.long	0
690	.long	3218079744
691	.long	240740309
692	.long	1068244255
693	.long	3489094832
694	.long	3220136599
695	.long	536870912
696	.long	3161809431
697	.long	0
698	.long	3218079744
699	.long	257503056
700	.long	1067164005
701	.long	2748392742
702	.long	3220166797
703	.long	1073741824
704	.long	1015578102
705	.long	0
706	.long	3217031168
707	.long	0
708	.long	0
709	.long	0
710	.long	3220176896
711	.long	0
712	.long	0
713	.long	0
714	.long	0
715	.long	257503056
716	.long	3214647653
717	.long	2748392742
718	.long	3220166797
719	.long	1073741824
720	.long	1015578102
721	.long	0
722	.long	1069547520
723	.long	240740309
724	.long	3215727903
725	.long	3489094832
726	.long	3220136599
727	.long	536870912
728	.long	3161809431
729	.long	0
730	.long	1070596096
731	.long	1991047213
732	.long	1067753521
733	.long	1455828442
734	.long	3220086593
735	.long	3758096384
736	.long	3162988721
737	.long	0
738	.long	1070596096
739	.long	1699043957
740	.long	3216902261
741	.long	3476196678
742	.long	3220017259
743	.long	536870912
744	.long	3161741286
745	.long	0
746	.long	1071644672
747	.long	2140183630
748	.long	3214756396
749	.long	4051746225
750	.long	3219929266
751	.long	2147483648
752	.long	1014423729
753	.long	0
754	.long	1071644672
755	.long	2598800519
756	.long	1068266419
757	.long	688824739
758	.long	3219823462
759	.long	3758096384
760	.long	3157915184
761	.long	0
762	.long	1071644672
763	.long	2485417816
764	.long	1069626316
765	.long	1796544321
766	.long	3219700864
767	.long	536870912
768	.long	1015203297
769	.long	0
770	.long	1071644672
771	.long	2583490354
772	.long	1070236281
773	.long	1719614413
774	.long	3219562654
775	.long	536870912
776	.long	1015799092
777	.long	0
778	.long	1071644672
779	.long	1403757309
780	.long	3217886718
781	.long	621354454
782	.long	3219410163
783	.long	536870912
784	.long	3160934250
785	.long	0
786	.long	1072693248
787	.long	1539668340
788	.long	3217396327
789	.long	967731400
790	.long	3219244859
791	.long	536870912
792	.long	3163235805
793	.long	0
794	.long	1072693248
795	.long	1945768569
796	.long	3216915048
797	.long	939980347
798	.long	3219008349
799	.long	536870912
800	.long	3160280457
801	.long	0
802	.long	1072693248
803	.long	2255197647
804	.long	3216211105
805	.long	2796464483
806	.long	3218636258
807	.long	3758096384
808	.long	1013394669
809	.long	0
810	.long	1072693248
811	.long	2476548698
812	.long	3215330282
813	.long	785751814
814	.long	3218248710
815	.long	2684354560
816	.long	1014354573
817	.long	0
818	.long	1072693248
819	.long	18115067
820	.long	3214126342
821	.long	1013556747
822	.long	3217619128
823	.long	3221225472
824	.long	1013083417
825	.long	0
826	.long	1072693248
827	.long	393047345
828	.long	3212032302
829	.long	3156849708
830	.long	3216578470
831	.long	3758096384
832	.long	1010706200
833	.long	0
834	.long	1072693248
835	.long	1431655765
836	.long	3217380693
837	.long	0
838	.long	3219128320
839	.long	286331153
840	.long	1065423121
841	.long	1431655765
842	.long	1067799893
843	.long	436314138
844	.long	3207201184
845	.long	381774871
846	.long	3210133868
847	.long	2773927732
848	.long	1053236707
849	.long	436314138
850	.long	1056571808
851	.long	442499072
852	.long	1032893537
853	.long	442499072
854	.long	1032893537
855	.long	1413480448
856	.long	1069097467
857	.long	0
858	.long	0
859	.long	771977331
860	.long	996350346
861	.long	0
862	.long	0
863	.long	1841940611
864	.long	1076125488
865	.long	0
866	.long	0
867	.long	0
868	.long	1127743488
869	.long	0
870	.long	0
871	.long	0
872	.long	1072693248
873	.long	0
874	.long	0
875	.long	0
876	.long	2147483648
877	.long	0
878	.long	0
879	.long	0
880	.long	2147483648
881	.long	0
882	.long	0
883	.long	0
884	.long	1071644672
885	.long	0
886	.long	1071644672
887	.type	static_const_table,@object
888	.size	static_const_table,2256
889	.data
890	.hidden __libm_sincos_huge
891	.section .note.GNU-stack, ""
892# End
893