s_tan.S revision 5d4f0e6a26b66f1dab8d20a65af4469c6dd7370d
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// Polynomials coefficients and other constants.
36//
37// Note that in this algorithm, there is a different polynomial for
38// each breakpoint, so there are 32 sets of polynomial coefficients
39// as well as 32 instances of the other constants.
40//
41// The polynomial coefficients and constants are offset from the start
42// of the main block as follows:
43//
44//   0:  c8 | c0
45//  16:  c9 | c1
46//  32: c10 | c2
47//  48: c11 | c3
48//  64: c12 | c4
49//  80: c13 | c5
50//  96: c14 | c6
51// 112: c15 | c7
52// 128: T_hi
53// 136: T_lo
54// 144: Sigma
55// 152: T_hl
56// 160: Tau
57// 168: Mask
58// 176: (end of block)
59//
60// The total table size is therefore 5632 bytes.
61//
62// Note that c0 and c1 are always zero. We could try storing
63// other constants here, and just loading the low part of the
64// SIMD register in these cases, after ensuring the high part
65// is zero.
66//
67// The higher terms of the polynomial are computed in the *low*
68// part of the SIMD register. This is so we can overlap the
69// multiplication by r^8 and the unpacking of the other part.
70//
71// The constants are:
72// T_hi + T_lo = accurate constant term in power series
73// Sigma + T_hl = accurate coefficient of r in power series (Sigma=1 bit)
74// Tau = multiplier for the reciprocal, always -1 or 0
75//
76// The basic reconstruction formula using these constants is:
77//
78// High = tau * recip_hi + t_hi
79// Med = (sgn * r + t_hl * r)_hi
80// Low = (sgn * r + t_hl * r)_lo +
81//       tau * recip_lo + T_lo + (T_hl + sigma) * c + pol
82//
83// where pol = c0 + c1 * r + c2 * r^2 + ... + c15 * r^15
84//
85// (c0 = c1 = 0, but using them keeps SIMD regularity)
86//
87// We then do a compensated sum High + Med, add the low parts together
88// and then do the final sum.
89//
90// Here recip_hi + recip_lo is an accurate reciprocal of the remainder
91// modulo pi/2
92//
93// Special cases:
94//  tan(NaN) = quiet NaN, and raise invalid exception
95//  tan(INF) = NaN and raise invalid exception
96//  tan(+/-0) = +/-0
97//
98/******************************************************************************/
99
100#include <private/bionic_asm.h>
101# -- Begin  static_func
102        .text
103        .align __bionic_asm_align
104        .type static_func, @function
105static_func:
106..B1.1:
107        call      ..L2
108..L2:
109        popl      %eax
110        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
111        lea       static_const_table@GOTOFF(%eax), %eax
112        ret
113        .size   static_func,.-static_func
114# -- End  static_func
115
116# -- Begin  tan
117ENTRY(tan)
118# parameter 1: 8 + %ebp
119..B2.1:
120..B2.2:
121        pushl     %ebp
122        movl      %esp, %ebp
123        subl      $120, %esp
124        movl      %ebx, 56(%esp)
125        call      static_func
126        movl      %eax, %ebx
127        movsd     128(%esp), %xmm0
128        pextrw    $3, %xmm0, %eax
129        andl      $32767, %eax
130        subl      $14368, %eax
131        cmpl      $2216, %eax
132        ja        .L_2TAG_PACKET_0.0.2
133        movapd    5840(%ebx), %xmm5
134        movapd    5856(%ebx), %xmm6
135        unpcklpd  %xmm0, %xmm0
136        movapd    5712(%ebx), %xmm4
137        andpd     %xmm0, %xmm4
138        movapd    5632(%ebx), %xmm1
139        mulpd     %xmm0, %xmm1
140        orpd      %xmm4, %xmm5
141        addpd     %xmm5, %xmm1
142        movapd    %xmm1, %xmm7
143        unpckhpd  %xmm7, %xmm7
144        cvttsd2si %xmm7, %edx
145        cvttpd2dq %xmm1, %xmm1
146        cvtdq2pd  %xmm1, %xmm1
147        mulpd     %xmm6, %xmm1
148        movapd    5664(%ebx), %xmm3
149        movsd     5728(%ebx), %xmm5
150        addl      $469248, %edx
151        movapd    5680(%ebx), %xmm4
152        mulpd     %xmm1, %xmm3
153        andl      $31, %edx
154        mulsd     %xmm1, %xmm5
155        movl      %edx, %ecx
156        mulpd     %xmm1, %xmm4
157        shll      $1, %ecx
158        subpd     %xmm3, %xmm0
159        mulpd     5696(%ebx), %xmm1
160        addl      %ecx, %edx
161        shll      $2, %ecx
162        addl      %ecx, %edx
163        addsd     %xmm0, %xmm5
164        movapd    %xmm0, %xmm2
165        subpd     %xmm4, %xmm0
166        movsd     5744(%ebx), %xmm6
167        shll      $4, %edx
168        lea       (%ebx), %eax
169        andpd     5776(%ebx), %xmm5
170        movapd    %xmm0, %xmm3
171        addl      %edx, %eax
172        subpd     %xmm0, %xmm2
173        unpckhpd  %xmm0, %xmm0
174        divsd     %xmm5, %xmm6
175        subpd     %xmm4, %xmm2
176        movapd    16(%eax), %xmm7
177        subsd     %xmm5, %xmm3
178        mulpd     %xmm0, %xmm7
179        subpd     %xmm1, %xmm2
180        movapd    48(%eax), %xmm1
181        mulpd     %xmm0, %xmm1
182        movapd    96(%eax), %xmm4
183        mulpd     %xmm0, %xmm4
184        addsd     %xmm3, %xmm2
185        movapd    %xmm0, %xmm3
186        mulpd     %xmm0, %xmm0
187        addpd     (%eax), %xmm7
188        addpd     32(%eax), %xmm1
189        mulpd     %xmm0, %xmm1
190        addpd     80(%eax), %xmm4
191        addpd     %xmm1, %xmm7
192        movapd    112(%eax), %xmm1
193        mulpd     %xmm0, %xmm1
194        mulpd     %xmm0, %xmm0
195        addpd     %xmm1, %xmm4
196        movapd    64(%eax), %xmm1
197        mulpd     %xmm0, %xmm1
198        addpd     %xmm1, %xmm7
199        movapd    %xmm3, %xmm1
200        mulpd     %xmm0, %xmm3
201        mulsd     %xmm0, %xmm0
202        mulpd     144(%eax), %xmm1
203        mulpd     %xmm3, %xmm4
204        movapd    %xmm1, %xmm3
205        addpd     %xmm4, %xmm7
206        movapd    %xmm1, %xmm4
207        mulsd     %xmm7, %xmm0
208        unpckhpd  %xmm7, %xmm7
209        addsd     %xmm7, %xmm0
210        unpckhpd  %xmm1, %xmm1
211        addsd     %xmm1, %xmm3
212        subsd     %xmm3, %xmm4
213        addsd     %xmm4, %xmm1
214        movapd    %xmm2, %xmm4
215        movsd     144(%eax), %xmm7
216        unpckhpd  %xmm2, %xmm2
217        addsd     152(%eax), %xmm7
218        mulsd     %xmm2, %xmm7
219        addsd     136(%eax), %xmm7
220        addsd     %xmm1, %xmm7
221        addsd     %xmm7, %xmm0
222        movsd     5744(%ebx), %xmm7
223        mulsd     %xmm6, %xmm4
224        movsd     168(%eax), %xmm2
225        andpd     %xmm6, %xmm2
226        mulsd     %xmm2, %xmm5
227        mulsd     160(%eax), %xmm6
228        subsd     %xmm5, %xmm7
229        subsd     128(%eax), %xmm2
230        subsd     %xmm4, %xmm7
231        mulsd     %xmm6, %xmm7
232        movapd    %xmm3, %xmm4
233        subsd     %xmm2, %xmm3
234        addsd     %xmm3, %xmm2
235        subsd     %xmm2, %xmm4
236        addsd     %xmm4, %xmm0
237        subsd     %xmm7, %xmm0
238        addsd     %xmm3, %xmm0
239        movsd     %xmm0, (%esp)
240        fldl      (%esp)
241        jmp       .L_2TAG_PACKET_1.0.2
242.L_2TAG_PACKET_0.0.2:
243        jg        .L_2TAG_PACKET_2.0.2
244        shrl      $4, %eax
245        cmpl      $268434558, %eax
246        jne       .L_2TAG_PACKET_3.0.2
247        movapd    %xmm0, %xmm3
248        mulsd     5808(%ebx), %xmm3
249.L_2TAG_PACKET_3.0.2:
250        movsd     5792(%ebx), %xmm3
251        mulsd     %xmm0, %xmm3
252        addsd     %xmm0, %xmm3
253        mulsd     5808(%ebx), %xmm3
254        movsd     %xmm3, (%esp)
255        fldl      (%esp)
256        jmp       .L_2TAG_PACKET_1.0.2
257.L_2TAG_PACKET_2.0.2:
258        movq      5712(%ebx), %xmm7
259        andpd     %xmm0, %xmm7
260        xorpd     %xmm0, %xmm7
261        ucomisd   5760(%ebx), %xmm7
262        je        .L_2TAG_PACKET_4.0.2
263        subl      $32, %esp
264        movsd     %xmm0, (%esp)
265        lea       40(%esp), %eax
266        movl      %eax, 8(%esp)
267        movl      $2, %eax
268        movl      %eax, 12(%esp)
269        call      __libm_tancot_huge
270        addl      $32, %esp
271        fldl      8(%esp)
272        jmp       .L_2TAG_PACKET_1.0.2
273.L_2TAG_PACKET_4.0.2:
274        movq      %xmm0, (%esp)
275        fldl      (%esp)
276        fsubl     (%esp)
277.L_2TAG_PACKET_1.0.2:
278        movl      56(%esp), %ebx
279        movl      %ebp, %esp
280        popl      %ebp
281        ret
282..B2.3:
283END(tan)
284# -- End  tan
285
286# Start file scope ASM
287.weak tanl
288.equ tanl, tan
289# End file scope ASM
290	.section .rodata, "a"
291	.align 16
292	.align 16
293static_const_table:
294	.long	0
295	.long	0
296	.long	0
297	.long	0
298	.long	2284589306
299	.long	1066820852
300	.long	0
301	.long	0
302	.long	0
303	.long	0
304	.long	0
305	.long	0
306	.long	1441186365
307	.long	1065494243
308	.long	1431655765
309	.long	1070945621
310	.long	0
311	.long	0
312	.long	0
313	.long	0
314	.long	236289504
315	.long	1064135997
316	.long	286331153
317	.long	1069617425
318	.long	0
319	.long	0
320	.long	0
321	.long	0
322	.long	1160476131
323	.long	1062722102
324	.long	463583772
325	.long	1068212666
326	.long	0
327	.long	0
328	.long	0
329	.long	0
330	.long	0
331	.long	1072693248
332	.long	0
333	.long	0
334	.long	0
335	.long	0
336	.long	0
337	.long	0
338	.long	1313038235
339	.long	1066745731
340	.long	0
341	.long	0
342	.long	1013878342
343	.long	1067152618
344	.long	0
345	.long	0
346	.long	3663426833
347	.long	1065725283
348	.long	3693284251
349	.long	1069118808
350	.long	650852232
351	.long	1065882376
352	.long	1996245381
353	.long	1071000265
354	.long	2008746170
355	.long	1064664197
356	.long	3055842593
357	.long	1068578846
358	.long	1495406348
359	.long	1064652437
360	.long	2269530157
361	.long	1069711235
362	.long	285563696
363	.long	1063576465
364	.long	1046897440
365	.long	1067705865
366	.long	233429731
367	.long	1063453151
368	.long	522045958
369	.long	1068476590
370	.long	2354785698
371	.long	1069102779
372	.long	1317599141
373	.long	1012432133
374	.long	0
375	.long	1072693248
376	.long	2828230105
377	.long	1065606626
378	.long	0
379	.long	0
380	.long	0
381	.long	0
382	.long	1512545955
383	.long	1068119047
384	.long	0
385	.long	0
386	.long	1127048698
387	.long	1067909459
388	.long	0
389	.long	0
390	.long	2300200450
391	.long	1067254767
392	.long	3593250296
393	.long	1070233561
394	.long	3009365544
395	.long	1066902117
396	.long	1127373050
397	.long	1071173457
398	.long	3046103305
399	.long	1066371299
400	.long	24583402
401	.long	1069723988
402	.long	4082511758
403	.long	1065914199
404	.long	3223889699
405	.long	1070020367
406	.long	548927984
407	.long	1065415756
408	.long	558065897
409	.long	1068949418
410	.long	680073315
411	.long	1064940726
412	.long	388873200
413	.long	1068944270
414	.long	3763679576
415	.long	1070167541
416	.long	1497360404
417	.long	1009710547
418	.long	0
419	.long	1072693248
420	.long	64931152
421	.long	1067729411
422	.long	0
423	.long	0
424	.long	0
425	.long	0
426	.long	2467582782
427	.long	1069256389
428	.long	0
429	.long	0
430	.long	162150096
431	.long	1068946420
432	.long	0
433	.long	0
434	.long	3702794237
435	.long	1068579152
436	.long	3631919291
437	.long	1070936926
438	.long	3456821413
439	.long	1068217218
440	.long	2031366438
441	.long	1071495745
442	.long	1596664020
443	.long	1067799281
444	.long	1509038701
445	.long	1070601643
446	.long	583171477
447	.long	1067510148
448	.long	3785344682
449	.long	1070618476
450	.long	2402036048
451	.long	1067075736
452	.long	3233018412
453	.long	1069913186
454	.long	411280568
455	.long	1066710556
456	.long	1065584192
457	.long	1069747896
458	.long	895247324
459	.long	1070819848
460	.long	500078909
461	.long	3161288781
462	.long	0
463	.long	1072693248
464	.long	729983843
465	.long	1068994194
466	.long	0
467	.long	0
468	.long	0
469	.long	0
470	.long	1458794562
471	.long	1070398550
472	.long	0
473	.long	0
474	.long	2857777489
475	.long	1070137637
476	.long	0
477	.long	0
478	.long	1024359517
479	.long	1069876531
480	.long	2616040238
481	.long	1071582937
482	.long	1609024636
483	.long	1069675088
484	.long	2529240549
485	.long	1071836633
486	.long	1510128600
487	.long	1069440113
488	.long	2251697184
489	.long	1071253687
490	.long	1262761453
491	.long	1069142850
492	.long	1263091857
493	.long	1071190461
494	.long	3043383486
495	.long	1068885191
496	.long	2476932470
497	.long	1070842002
498	.long	3659995028
499	.long	1068669200
500	.long	855891755
501	.long	1070696894
502	.long	2583490354
503	.long	1071284857
504	.long	3062633575
505	.long	1014008623
506	.long	0
507	.long	1072693248
508	.long	2550940471
509	.long	1069938201
510	.long	0
511	.long	0
512	.long	0
513	.long	0
514	.long	3422807297
515	.long	1071640847
516	.long	0
517	.long	0
518	.long	1151658053
519	.long	1071494715
520	.long	0
521	.long	0
522	.long	929607071
523	.long	1071346340
524	.long	1037049034
525	.long	1072037305
526	.long	2786928657
527	.long	1071215282
528	.long	1447406859
529	.long	1072265209
530	.long	3490952107
531	.long	1071090851
532	.long	3205232916
533	.long	1071968658
534	.long	1297344304
535	.long	1070977120
536	.long	1066110976
537	.long	1071946035
538	.long	3803721480
539	.long	1070871082
540	.long	1496754229
541	.long	1071807201
542	.long	2982550683
543	.long	1070773243
544	.long	4014441989
545	.long	1071736222
546	.long	419968236
547	.long	1071717047
548	.long	3451266538
549	.long	3163444811
550	.long	0
551	.long	1072693248
552	.long	2960267235
553	.long	1070745841
554	.long	0
555	.long	0
556	.long	0
557	.long	0
558	.long	724322768
559	.long	1072881308
560	.long	0
561	.long	0
562	.long	643153048
563	.long	1072905816
564	.long	0
565	.long	0
566	.long	4285079458
567	.long	1072928558
568	.long	3912524733
569	.long	1072622983
570	.long	118362272
571	.long	1072952754
572	.long	4107767972
573	.long	1072827408
574	.long	2689502883
575	.long	1072976922
576	.long	946523347
577	.long	1072772766
578	.long	573204189
579	.long	1073001761
580	.long	581531518
581	.long	1072826391
582	.long	1386236526
583	.long	1073026959
584	.long	3718905905
585	.long	1072832823
586	.long	1145558140
587	.long	1073052673
588	.long	513572637
589	.long	1072861969
590	.long	716700048
591	.long	1071997368
592	.long	547126769
593	.long	1015523525
594	.long	0
595	.long	1072693248
596	.long	1097907398
597	.long	1071420120
598	.long	0
599	.long	0
600	.long	0
601	.long	0
602	.long	3349892442
603	.long	1074290212
604	.long	0
605	.long	0
606	.long	3913197405
607	.long	1074501181
608	.long	0
609	.long	0
610	.long	2494034522
611	.long	1074739170
612	.long	1264738763
613	.long	1073084804
614	.long	1520293906
615	.long	1074899632
616	.long	1958936600
617	.long	1073411493
618	.long	2133649635
619	.long	1075052171
620	.long	4270740730
621	.long	1073574708
622	.long	1728930189
623	.long	1075224844
624	.long	1303998552
625	.long	1073799186
626	.long	618611933
627	.long	1075420255
628	.long	1769828046
629	.long	1073938542
630	.long	2200537986
631	.long	1075641421
632	.long	433361110
633	.long	1074105369
634	.long	719595600
635	.long	1072317184
636	.long	294527206
637	.long	3162140088
638	.long	0
639	.long	1073741824
640	.long	3811788216
641	.long	3218400550
642	.long	0
643	.long	0
644	.long	0
645	.long	0
646	.long	1704352102
647	.long	1075943001
648	.long	0
649	.long	0
650	.long	2284589306
651	.long	1076258036
652	.long	0
653	.long	0
654	.long	2211264291
655	.long	1076659010
656	.long	0
657	.long	1073741824
658	.long	1441186365
659	.long	1077028579
660	.long	1431655765
661	.long	1074091349
662	.long	876943673
663	.long	1077353622
664	.long	2863311531
665	.long	1074440874
666	.long	236289504
667	.long	1077767485
668	.long	286331153
669	.long	1074860305
670	.long	2805473311
671	.long	1078115278
672	.long	95443718
673	.long	1075163227
674	.long	1160476131
675	.long	1078450742
676	.long	463583772
677	.long	1075552698
678	.long	0
679	.long	1072693248
680	.long	0
681	.long	0
682	.long	0
683	.long	1073741824
684	.long	0
685	.long	0
686	.long	0
687	.long	0
688	.long	0
689	.long	0
690	.long	1330165971
691	.long	3207850745
692	.long	0
693	.long	0
694	.long	217536623
695	.long	1059109098
696	.long	0
697	.long	0
698	.long	3492120849
699	.long	3205151475
700	.long	602185705
701	.long	3215678092
702	.long	760422958
703	.long	1056312597
704	.long	555127889
705	.long	1067545266
706	.long	3139784124
707	.long	3202470837
708	.long	3690544014
709	.long	3213150171
710	.long	95707915
711	.long	1053635428
712	.long	4003114407
713	.long	1064581412
714	.long	2034926231
715	.long	3199711161
716	.long	3759536023
717	.long	3210559989
718	.long	3826928214
719	.long	1050893819
720	.long	3837960785
721	.long	1061790379
722	.long	1526325248
723	.long	3217967566
724	.long	2356426521
725	.long	1025423456
726	.long	0
727	.long	0
728	.long	457728975
729	.long	1071088276
730	.long	0
731	.long	1072693248
732	.long	0
733	.long	4294967288
734	.long	1398462608
735	.long	3207303968
736	.long	0
737	.long	0
738	.long	26205983
739	.long	1058461213
740	.long	0
741	.long	0
742	.long	56226238
743	.long	3204528612
744	.long	2754706541
745	.long	3215359511
746	.long	2187799823
747	.long	1055634437
748	.long	790323742
749	.long	1067402587
750	.long	1372385848
751	.long	3201651479
752	.long	4097292716
753	.long	3212856302
754	.long	3348210357
755	.long	1052830099
756	.long	2442796466
757	.long	1064337602
758	.long	862608142
759	.long	3198830754
760	.long	170296152
761	.long	3210060867
762	.long	3755571428
763	.long	1049933343
764	.long	3614866008
765	.long	1061361670
766	.long	719978496
767	.long	3217669096
768	.long	1998842465
769	.long	3174703977
770	.long	0
771	.long	0
772	.long	3749156607
773	.long	1071048258
774	.long	0
775	.long	1072693248
776	.long	0
777	.long	4294967288
778	.long	3120498638
779	.long	3206749304
780	.long	0
781	.long	0
782	.long	2773578114
783	.long	1058009312
784	.long	0
785	.long	0
786	.long	2030783676
787	.long	3203817873
788	.long	2223654598
789	.long	3215071936
790	.long	2976134650
791	.long	1054987244
792	.long	706390066
793	.long	1067217386
794	.long	4258437615
795	.long	3200900378
796	.long	1066252975
797	.long	3212391267
798	.long	815777514
799	.long	1051989462
800	.long	3202745457
801	.long	1064010682
802	.long	2493556375
803	.long	3198004753
804	.long	1046243251
805	.long	3209678971
806	.long	2593078846
807	.long	1049017717
808	.long	2763962276
809	.long	1060970161
810	.long	701480960
811	.long	3217377742
812	.long	3205862232
813	.long	3174660915
814	.long	0
815	.long	0
816	.long	2267016812
817	.long	1071015664
818	.long	0
819	.long	1072693248
820	.long	0
821	.long	4294967288
822	.long	2107155798
823	.long	3206166872
824	.long	0
825	.long	0
826	.long	2642992129
827	.long	1057424578
828	.long	0
829	.long	0
830	.long	1936992811
831	.long	3203204426
832	.long	1485063559
833	.long	3214682643
834	.long	1432914553
835	.long	1054319398
836	.long	3996381654
837	.long	1067075828
838	.long	2833029256
839	.long	3200223545
840	.long	2866066872
841	.long	3211982662
842	.long	2432888737
843	.long	1051234178
844	.long	3669764559
845	.long	1063748136
846	.long	2458496952
847	.long	3197170774
848	.long	1948234989
849	.long	3209098147
850	.long	2843698787
851	.long	1048163519
852	.long	3398041407
853	.long	1060559728
854	.long	2829230080
855	.long	3217092115
856	.long	1034046433
857	.long	3174271903
858	.long	0
859	.long	0
860	.long	298675305
861	.long	1070989821
862	.long	0
863	.long	1072693248
864	.long	0
865	.long	4294967288
866	.long	437603223
867	.long	3205589761
868	.long	0
869	.long	0
870	.long	759330352
871	.long	1057048511
872	.long	0
873	.long	0
874	.long	3107463368
875	.long	3202507988
876	.long	3144465176
877	.long	3214191500
878	.long	2290961810
879	.long	1053841035
880	.long	1618153340
881	.long	1066971547
882	.long	3836869393
883	.long	3199400272
884	.long	584032116
885	.long	3211469261
886	.long	1245704358
887	.long	1050626462
888	.long	4247487438
889	.long	1063561943
890	.long	1669034927
891	.long	3196274812
892	.long	3844233498
893	.long	3208626322
894	.long	2706958524
895	.long	1047411374
896	.long	3857199098
897	.long	1060281647
898	.long	3593904128
899	.long	3216590719
900	.long	3267547836
901	.long	3172163321
902	.long	0
903	.long	0
904	.long	4076712227
905	.long	1070970214
906	.long	0
907	.long	1072693248
908	.long	0
909	.long	4294967288
910	.long	3290090340
911	.long	3204793485
912	.long	0
913	.long	0
914	.long	3685760367
915	.long	1056668370
916	.long	0
917	.long	0
918	.long	2655163949
919	.long	3201674917
920	.long	628750575
921	.long	3213566872
922	.long	680140505
923	.long	1053299777
924	.long	2954464709
925	.long	1066900026
926	.long	803201619
927	.long	3198516435
928	.long	1466315631
929	.long	3210837162
930	.long	1611220163
931	.long	1049972438
932	.long	2766187256
933	.long	1063437894
934	.long	1804579484
935	.long	3195331491
936	.long	3695969289
937	.long	3207854418
938	.long	2617238373
939	.long	1046675948
940	.long	3095830084
941	.long	1060095334
942	.long	3789570048
943	.long	3216034914
944	.long	23826559
945	.long	3172048060
946	.long	0
947	.long	0
948	.long	3870939386
949	.long	1070956467
950	.long	0
951	.long	1072693248
952	.long	0
953	.long	4294967288
954	.long	1571758758
955	.long	3203672535
956	.long	0
957	.long	0
958	.long	113026373
959	.long	1056416381
960	.long	0
961	.long	0
962	.long	1913766298
963	.long	3200523326
964	.long	2507068734
965	.long	3212502004
966	.long	4000648818
967	.long	1053003803
968	.long	2446607349
969	.long	1066858259
970	.long	912662124
971	.long	3197333001
972	.long	1349489537
973	.long	3209765608
974	.long	3412972607
975	.long	1049641401
976	.long	1721283327
977	.long	1063366855
978	.long	1466691883
979	.long	3194116746
980	.long	3852528092
981	.long	3206760861
982	.long	285443293
983	.long	1046158380
984	.long	1758739894
985	.long	1059895449
986	.long	1858781184
987	.long	3214984212
988	.long	3447575948
989	.long	1024675855
990	.long	0
991	.long	0
992	.long	2242038011
993	.long	1070948320
994	.long	0
995	.long	1072693248
996	.long	0
997	.long	4294967288
998	.long	0
999	.long	0
1000	.long	0
1001	.long	0
1002	.long	737611454
1003	.long	1056336527
1004	.long	0
1005	.long	0
1006	.long	0
1007	.long	0
1008	.long	0
1009	.long	0
1010	.long	3594790527
1011	.long	1052911621
1012	.long	381774871
1013	.long	1066844524
1014	.long	0
1015	.long	0
1016	.long	0
1017	.long	0
1018	.long	3303051618
1019	.long	1049456050
1020	.long	3154187623
1021	.long	1063343722
1022	.long	0
1023	.long	0
1024	.long	0
1025	.long	0
1026	.long	528061788
1027	.long	1045944910
1028	.long	2469719819
1029	.long	1059831159
1030	.long	0
1031	.long	0
1032	.long	0
1033	.long	0
1034	.long	0
1035	.long	0
1036	.long	1431655765
1037	.long	1070945621
1038	.long	0
1039	.long	1072693248
1040	.long	0
1041	.long	4294967288
1042	.long	1571758758
1043	.long	1056188887
1044	.long	0
1045	.long	0
1046	.long	113026373
1047	.long	1056416381
1048	.long	0
1049	.long	0
1050	.long	1913766298
1051	.long	1053039678
1052	.long	2507068734
1053	.long	1065018356
1054	.long	4000648818
1055	.long	1053003803
1056	.long	2446607349
1057	.long	1066858259
1058	.long	912662124
1059	.long	1049849353
1060	.long	1349489537
1061	.long	1062281960
1062	.long	3412972607
1063	.long	1049641401
1064	.long	1721283327
1065	.long	1063366855
1066	.long	1466691883
1067	.long	1046633098
1068	.long	3852528092
1069	.long	1059277213
1070	.long	285443293
1071	.long	1046158380
1072	.long	1758739894
1073	.long	1059895449
1074	.long	1858781184
1075	.long	1067500564
1076	.long	3447575948
1077	.long	3172159503
1078	.long	0
1079	.long	0
1080	.long	2242038011
1081	.long	1070948320
1082	.long	0
1083	.long	1072693248
1084	.long	0
1085	.long	4294967288
1086	.long	3290090340
1087	.long	1057309837
1088	.long	0
1089	.long	0
1090	.long	3685760367
1091	.long	1056668370
1092	.long	0
1093	.long	0
1094	.long	2655163949
1095	.long	1054191269
1096	.long	628750575
1097	.long	1066083224
1098	.long	680140505
1099	.long	1053299777
1100	.long	2954464709
1101	.long	1066900026
1102	.long	803201619
1103	.long	1051032787
1104	.long	1466315631
1105	.long	1063353514
1106	.long	1611220163
1107	.long	1049972438
1108	.long	2766187256
1109	.long	1063437894
1110	.long	1804579484
1111	.long	1047847843
1112	.long	3695969289
1113	.long	1060370770
1114	.long	2617238373
1115	.long	1046675948
1116	.long	3095830084
1117	.long	1060095334
1118	.long	3789570048
1119	.long	1068551266
1120	.long	23826559
1121	.long	1024564412
1122	.long	0
1123	.long	0
1124	.long	3870939386
1125	.long	1070956467
1126	.long	0
1127	.long	1072693248
1128	.long	0
1129	.long	4294967288
1130	.long	437603223
1131	.long	1058106113
1132	.long	0
1133	.long	0
1134	.long	759330352
1135	.long	1057048511
1136	.long	0
1137	.long	0
1138	.long	3107463368
1139	.long	1055024340
1140	.long	3144465176
1141	.long	1066707852
1142	.long	2290961810
1143	.long	1053841035
1144	.long	1618153340
1145	.long	1066971547
1146	.long	3836869393
1147	.long	1051916624
1148	.long	584032116
1149	.long	1063985613
1150	.long	1245704358
1151	.long	1050626462
1152	.long	4247487438
1153	.long	1063561943
1154	.long	1669034927
1155	.long	1048791164
1156	.long	3844233498
1157	.long	1061142674
1158	.long	2706958524
1159	.long	1047411374
1160	.long	3857199098
1161	.long	1060281647
1162	.long	3593904128
1163	.long	1069107071
1164	.long	3267547836
1165	.long	1024679673
1166	.long	0
1167	.long	0
1168	.long	4076712227
1169	.long	1070970214
1170	.long	0
1171	.long	1072693248
1172	.long	0
1173	.long	4294967288
1174	.long	2107155798
1175	.long	1058683224
1176	.long	0
1177	.long	0
1178	.long	2642992129
1179	.long	1057424578
1180	.long	0
1181	.long	0
1182	.long	1936992811
1183	.long	1055720778
1184	.long	1485063559
1185	.long	1067198995
1186	.long	1432914553
1187	.long	1054319398
1188	.long	3996381654
1189	.long	1067075828
1190	.long	2833029256
1191	.long	1052739897
1192	.long	2866066872
1193	.long	1064499014
1194	.long	2432888737
1195	.long	1051234178
1196	.long	3669764559
1197	.long	1063748136
1198	.long	2458496952
1199	.long	1049687126
1200	.long	1948234989
1201	.long	1061614499
1202	.long	2843698787
1203	.long	1048163519
1204	.long	3398041407
1205	.long	1060559728
1206	.long	2829230080
1207	.long	1069608467
1208	.long	1034046433
1209	.long	1026788255
1210	.long	0
1211	.long	0
1212	.long	298675305
1213	.long	1070989821
1214	.long	0
1215	.long	1072693248
1216	.long	0
1217	.long	4294967288
1218	.long	3120498638
1219	.long	1059265656
1220	.long	0
1221	.long	0
1222	.long	2773578114
1223	.long	1058009312
1224	.long	0
1225	.long	0
1226	.long	2030783676
1227	.long	1056334225
1228	.long	2223654598
1229	.long	1067588288
1230	.long	2976134650
1231	.long	1054987244
1232	.long	706390066
1233	.long	1067217386
1234	.long	4258437615
1235	.long	1053416730
1236	.long	1066252975
1237	.long	1064907619
1238	.long	815777514
1239	.long	1051989462
1240	.long	3202745457
1241	.long	1064010682
1242	.long	2493556375
1243	.long	1050521105
1244	.long	1046243251
1245	.long	1062195323
1246	.long	2593078846
1247	.long	1049017717
1248	.long	2763962276
1249	.long	1060970161
1250	.long	701480960
1251	.long	1069894094
1252	.long	3205862232
1253	.long	1027177267
1254	.long	0
1255	.long	0
1256	.long	2267016812
1257	.long	1071015664
1258	.long	0
1259	.long	1072693248
1260	.long	0
1261	.long	4294967288
1262	.long	1398462608
1263	.long	1059820320
1264	.long	0
1265	.long	0
1266	.long	26205983
1267	.long	1058461213
1268	.long	0
1269	.long	0
1270	.long	56226238
1271	.long	1057044964
1272	.long	2754706541
1273	.long	1067875863
1274	.long	2187799823
1275	.long	1055634437
1276	.long	790323742
1277	.long	1067402587
1278	.long	1372385848
1279	.long	1054167831
1280	.long	4097292716
1281	.long	1065372654
1282	.long	3348210357
1283	.long	1052830099
1284	.long	2442796466
1285	.long	1064337602
1286	.long	862608142
1287	.long	1051347106
1288	.long	170296152
1289	.long	1062577219
1290	.long	3755571428
1291	.long	1049933343
1292	.long	3614866008
1293	.long	1061361670
1294	.long	719978496
1295	.long	1070185448
1296	.long	1998842465
1297	.long	1027220329
1298	.long	0
1299	.long	0
1300	.long	3749156607
1301	.long	1071048258
1302	.long	0
1303	.long	1072693248
1304	.long	0
1305	.long	4294967288
1306	.long	1330165971
1307	.long	1060367097
1308	.long	0
1309	.long	0
1310	.long	217536623
1311	.long	1059109098
1312	.long	0
1313	.long	0
1314	.long	3492120849
1315	.long	1057667827
1316	.long	602185705
1317	.long	1068194444
1318	.long	760422958
1319	.long	1056312597
1320	.long	555127889
1321	.long	1067545266
1322	.long	3139784124
1323	.long	1054987189
1324	.long	3690544014
1325	.long	1065666523
1326	.long	95707915
1327	.long	1053635428
1328	.long	4003114407
1329	.long	1064581412
1330	.long	2034926231
1331	.long	1052227513
1332	.long	3759536023
1333	.long	1063076341
1334	.long	3826928214
1335	.long	1050893819
1336	.long	3837960785
1337	.long	1061790379
1338	.long	1526325248
1339	.long	1070483918
1340	.long	2356426521
1341	.long	3172907104
1342	.long	0
1343	.long	0
1344	.long	457728975
1345	.long	1071088276
1346	.long	0
1347	.long	1072693248
1348	.long	0
1349	.long	4294967288
1350	.long	1704352102
1351	.long	3223426649
1352	.long	0
1353	.long	0
1354	.long	2284589306
1355	.long	1076258036
1356	.long	0
1357	.long	0
1358	.long	2211264291
1359	.long	3224142658
1360	.long	0
1361	.long	3221225472
1362	.long	1441186365
1363	.long	1077028579
1364	.long	1431655765
1365	.long	1074091349
1366	.long	876943673
1367	.long	3224837270
1368	.long	2863311531
1369	.long	3221924522
1370	.long	236289504
1371	.long	1077767485
1372	.long	286331153
1373	.long	1074860305
1374	.long	2805473311
1375	.long	3225598926
1376	.long	95443718
1377	.long	3222646875
1378	.long	1160476131
1379	.long	1078450742
1380	.long	463583772
1381	.long	1075552698
1382	.long	0
1383	.long	3220176896
1384	.long	0
1385	.long	0
1386	.long	0
1387	.long	1073741824
1388	.long	0
1389	.long	0
1390	.long	0
1391	.long	0
1392	.long	0
1393	.long	0
1394	.long	3349892442
1395	.long	3221773860
1396	.long	0
1397	.long	0
1398	.long	3913197405
1399	.long	1074501181
1400	.long	0
1401	.long	0
1402	.long	2494034522
1403	.long	3222222818
1404	.long	1264738763
1405	.long	3220568452
1406	.long	1520293906
1407	.long	1074899632
1408	.long	1958936600
1409	.long	1073411493
1410	.long	2133649635
1411	.long	3222535819
1412	.long	4270740730
1413	.long	3221058356
1414	.long	1728930189
1415	.long	1075224844
1416	.long	1303998552
1417	.long	1073799186
1418	.long	618611933
1419	.long	3222903903
1420	.long	1769828046
1421	.long	3221422190
1422	.long	2200537986
1423	.long	1075641421
1424	.long	433361110
1425	.long	1074105369
1426	.long	719595600
1427	.long	3219800832
1428	.long	294527206
1429	.long	1014656440
1430	.long	0
1431	.long	1073741824
1432	.long	3811788216
1433	.long	3218400550
1434	.long	0
1435	.long	0
1436	.long	0
1437	.long	0
1438	.long	724322768
1439	.long	3220364956
1440	.long	0
1441	.long	0
1442	.long	643153048
1443	.long	1072905816
1444	.long	0
1445	.long	0
1446	.long	4285079458
1447	.long	3220412206
1448	.long	3912524733
1449	.long	3220106631
1450	.long	118362272
1451	.long	1072952754
1452	.long	4107767972
1453	.long	1072827408
1454	.long	2689502883
1455	.long	3220460570
1456	.long	946523347
1457	.long	3220256414
1458	.long	573204189
1459	.long	1073001761
1460	.long	581531518
1461	.long	1072826391
1462	.long	1386236526
1463	.long	3220510607
1464	.long	3718905905
1465	.long	3220316471
1466	.long	1145558140
1467	.long	1073052673
1468	.long	513572637
1469	.long	1072861969
1470	.long	716700048
1471	.long	3219481016
1472	.long	547126769
1473	.long	3163007173
1474	.long	0
1475	.long	1072693248
1476	.long	1097907398
1477	.long	1071420120
1478	.long	0
1479	.long	0
1480	.long	0
1481	.long	0
1482	.long	3422807297
1483	.long	3219124495
1484	.long	0
1485	.long	0
1486	.long	1151658053
1487	.long	1071494715
1488	.long	0
1489	.long	0
1490	.long	929607071
1491	.long	3218829988
1492	.long	1037049034
1493	.long	3219520953
1494	.long	2786928657
1495	.long	1071215282
1496	.long	1447406859
1497	.long	1072265209
1498	.long	3490952107
1499	.long	3218574499
1500	.long	3205232916
1501	.long	3219452306
1502	.long	1297344304
1503	.long	1070977120
1504	.long	1066110976
1505	.long	1071946035
1506	.long	3803721480
1507	.long	3218354730
1508	.long	1496754229
1509	.long	3219290849
1510	.long	2982550683
1511	.long	1070773243
1512	.long	4014441989
1513	.long	1071736222
1514	.long	419968236
1515	.long	3219200695
1516	.long	3451266538
1517	.long	1015961163
1518	.long	0
1519	.long	1072693248
1520	.long	2960267235
1521	.long	1070745841
1522	.long	0
1523	.long	0
1524	.long	0
1525	.long	0
1526	.long	1458794562
1527	.long	3217882198
1528	.long	0
1529	.long	0
1530	.long	2857777489
1531	.long	1070137637
1532	.long	0
1533	.long	0
1534	.long	1024359517
1535	.long	3217360179
1536	.long	2616040238
1537	.long	3219066585
1538	.long	1609024636
1539	.long	1069675088
1540	.long	2529240549
1541	.long	1071836633
1542	.long	1510128600
1543	.long	3216923761
1544	.long	2251697184
1545	.long	3218737335
1546	.long	1262761453
1547	.long	1069142850
1548	.long	1263091857
1549	.long	1071190461
1550	.long	3043383486
1551	.long	3216368839
1552	.long	2476932470
1553	.long	3218325650
1554	.long	3659995028
1555	.long	1068669200
1556	.long	855891755
1557	.long	1070696894
1558	.long	2583490354
1559	.long	3218768505
1560	.long	3062633575
1561	.long	3161492271
1562	.long	0
1563	.long	1072693248
1564	.long	2550940471
1565	.long	1069938201
1566	.long	0
1567	.long	0
1568	.long	0
1569	.long	0
1570	.long	2467582782
1571	.long	3216740037
1572	.long	0
1573	.long	0
1574	.long	162150096
1575	.long	1068946420
1576	.long	0
1577	.long	0
1578	.long	3702794237
1579	.long	3216062800
1580	.long	3631919291
1581	.long	3218420574
1582	.long	3456821413
1583	.long	1068217218
1584	.long	2031366438
1585	.long	1071495745
1586	.long	1596664020
1587	.long	3215282929
1588	.long	1509038701
1589	.long	3218085291
1590	.long	583171477
1591	.long	1067510148
1592	.long	3785344682
1593	.long	1070618476
1594	.long	2402036048
1595	.long	3214559384
1596	.long	3233018412
1597	.long	3217396834
1598	.long	411280568
1599	.long	1066710556
1600	.long	1065584192
1601	.long	1069747896
1602	.long	895247324
1603	.long	3218303496
1604	.long	500078909
1605	.long	1013805133
1606	.long	0
1607	.long	1072693248
1608	.long	729983843
1609	.long	1068994194
1610	.long	0
1611	.long	0
1612	.long	0
1613	.long	0
1614	.long	1512545955
1615	.long	3215602695
1616	.long	0
1617	.long	0
1618	.long	1127048698
1619	.long	1067909459
1620	.long	0
1621	.long	0
1622	.long	2300200450
1623	.long	3214738415
1624	.long	3593250296
1625	.long	3217717209
1626	.long	3009365544
1627	.long	1066902117
1628	.long	1127373050
1629	.long	1071173457
1630	.long	3046103305
1631	.long	3213854947
1632	.long	24583402
1633	.long	3217207636
1634	.long	4082511758
1635	.long	1065914199
1636	.long	3223889699
1637	.long	1070020367
1638	.long	548927984
1639	.long	3212899404
1640	.long	558065897
1641	.long	3216433066
1642	.long	680073315
1643	.long	1064940726
1644	.long	388873200
1645	.long	1068944270
1646	.long	3763679576
1647	.long	3217651189
1648	.long	1497360404
1649	.long	3157194195
1650	.long	0
1651	.long	1072693248
1652	.long	64931152
1653	.long	1067729411
1654	.long	0
1655	.long	0
1656	.long	0
1657	.long	0
1658	.long	1313038235
1659	.long	3214229379
1660	.long	0
1661	.long	0
1662	.long	1013878342
1663	.long	1067152618
1664	.long	0
1665	.long	0
1666	.long	3663426833
1667	.long	3213208931
1668	.long	3693284251
1669	.long	3216602456
1670	.long	650852232
1671	.long	1065882376
1672	.long	1996245381
1673	.long	1071000265
1674	.long	2008746170
1675	.long	3212147845
1676	.long	3055842593
1677	.long	3216062494
1678	.long	1495406348
1679	.long	1064652437
1680	.long	2269530157
1681	.long	1069711235
1682	.long	285563696
1683	.long	3211060113
1684	.long	1046897440
1685	.long	3215189513
1686	.long	233429731
1687	.long	1063453151
1688	.long	522045958
1689	.long	1068476590
1690	.long	2354785698
1691	.long	3216586427
1692	.long	1317599141
1693	.long	3159915781
1694	.long	0
1695	.long	1072693248
1696	.long	2828230105
1697	.long	1065606626
1698	.long	0
1699	.long	0
1700	.long	0
1701	.long	0
1702	.long	1841940611
1703	.long	1071931184
1704	.long	1841940611
1705	.long	1076125488
1706	.long	0
1707	.long	1131937792
1708	.long	0
1709	.long	1127743488
1710	.long	1413758976
1711	.long	1069097467
1712	.long	1413742592
1713	.long	1069097467
1714	.long	1734819840
1715	.long	3174229945
1716	.long	1280049152
1717	.long	1028033571
1718	.long	923219018
1719	.long	984130272
1720	.long	57701189
1721	.long	988383790
1722	.long	0
1723	.long	2147483648
1724	.long	0
1725	.long	2147483648
1726	.long	1734816687
1727	.long	1026746297
1728	.long	0
1729	.long	0
1730	.long	0
1731	.long	1072693248
1732	.long	0
1733	.long	0
1734	.long	0
1735	.long	2146435072
1736	.long	0
1737	.long	0
1738	.long	4294705152
1739	.long	4294967295
1740	.long	0
1741	.long	0
1742	.long	0
1743	.long	1130364928
1744	.long	0
1745	.long	0
1746	.long	0
1747	.long	1015021568
1748	.long	0
1749	.long	0
1750	.long	0
1751	.long	1017118720
1752	.long	0
1753	.long	0
1754	.long	0
1755	.long	1071644672
1756	.long	0
1757	.long	1071644672
1758	.long	0
1759	.long	1076887552
1760	.long	0
1761	.long	1072693248
1762	.type	static_const_table,@object
1763	.size	static_const_table,5872
1764	.data
1765	.hidden __libm_tancot_huge
1766	.section .note.GNU-stack, ""
1767# End
1768