summaryrefslogtreecommitdiffstats
path: root/libm/x86_64/e_atan2.S
diff options
context:
space:
mode:
Diffstat (limited to 'libm/x86_64/e_atan2.S')
-rw-r--r--libm/x86_64/e_atan2.S1242
1 files changed, 1242 insertions, 0 deletions
diff --git a/libm/x86_64/e_atan2.S b/libm/x86_64/e_atan2.S
new file mode 100644
index 0000000..f9baea9
--- /dev/null
+++ b/libm/x86_64/e_atan2.S
@@ -0,0 +1,1242 @@
+/*
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+
+ * Neither the name of Intel Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************************************************/
+// ALGORITHM DESCRIPTION
+// ---------------------
+//
+//
+//1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
+// as follows.
+// / sign(Y) atan(|Y/X|) if X > 0
+// atan2(Y,X) =
+// \ sign(Y)*pi - sign(Y)*atan(|Y/X|) if X < 0
+//
+// Thus, atan2(Y,X) is of the form atan2(Y,X) = PI + sgn*atan(|Y/X|)
+// where PI and sgn can be determined by the four possible combinations of
+// of the pair (sign(X),sign(Y)). We concentrate on the numerical method
+// for atan(|Y/X|).
+//
+//2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is Y/X
+// if X > 0, and sign(Y)*pi otherwise.
+//3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
+//4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
+// of the form Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
+//5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
+// calculated using the polynomial in 4 above.
+//6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
+// we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
+// |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
+//
+// atan(|Y/X|) = atan(B) + atan(Z), where Z = (|Y|-B|X|)/(|X|+B|Y|).
+// ~=~ tau + Z + Z*E*polynomial(E), where E = Z*Z.
+//
+// B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
+// 163 possible values. These values are calculated beforehand and stored
+// in a table. The polynomial is the one used in 4.
+//
+// Special cases:
+// atan2(+-0, +0) = +-0
+// atan2(+-0, -0) = +-pi
+// atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
+// atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
+// atan2(+-y, +INF) = +-0, for finite y > 0
+// atan2(+-y, -INF) = +-pi, for finite y > 0
+// atan2(+-INF, x) = +-pi/2, for finite x
+// atan2(+-INF, +INF) = +-pi/4
+// atan2(+-INF, -INF) = +-3*pi/4
+//
+/******************************************************************************/
+
+#include <private/bionic_asm.h>
+# -- Begin atan2
+ENTRY(atan2)
+# parameter 1: %xmm0
+# parameter 2: %xmm1
+..B1.1:
+..___tag_value_atan2.1:
+ subq $24, %rsp
+..___tag_value_atan2.3:
+ movsd %xmm0, (%rsp)
+ movsd %xmm1, 8(%rsp)
+..B1.2:
+ pextrw $3, %xmm0, %eax
+ andl $32752, %eax
+ subl $14448, %eax
+ cmpl $3840, %eax
+ ja .L_2TAG_PACKET_0.0.2
+ pextrw $3, %xmm1, %eax
+ andl $32752, %eax
+ subl $14448, %eax
+ cmpl $3840, %eax
+ ja .L_2TAG_PACKET_1.0.2
+.L_2TAG_PACKET_2.0.2:
+ unpcklpd %xmm1, %xmm0
+ xorpd %xmm5, %xmm5
+ xorpd %xmm3, %xmm3
+ movl $2048, %eax
+ pinsrw $3, %eax, %xmm5
+ paddw %xmm1, %xmm5
+ psrlq $29, %xmm5
+ rcpss %xmm5, %xmm3
+ xorpd %xmm4, %xmm4
+ movl $14336, %ecx
+ pinsrw $3, %ecx, %xmm4
+ psllq $29, %xmm3
+ paddw %xmm4, %xmm3
+ mulsd %xmm0, %xmm3
+ xorpd %xmm2, %xmm2
+ xorpd %xmm6, %xmm6
+ xorpd %xmm7, %xmm7
+ movl $32768, %eax
+ pinsrw $2, %eax, %xmm6
+ movl $32767, %ecx
+ pinsrw $3, %ecx, %xmm7
+ paddd %xmm6, %xmm3
+ andpd %xmm7, %xmm3
+ movq %xmm3, %xmm5
+ pextrw $3, %xmm3, %eax
+ movl $16448, %ecx
+ pinsrw $3, %ecx, %xmm2
+ minsd %xmm2, %xmm3
+ movmskpd %xmm0, %edx
+ psllq $1, %xmm0
+ psrlq $1, %xmm0
+ cmpsd $2, %xmm2, %xmm5
+ psllq $1, %xmm1
+ psrlq $1, %xmm1
+ movq %xmm1, %xmm6
+ movq %xmm1, %xmm7
+ movq %xmm0, %xmm2
+ movl $0, %ecx
+ pinsrw $0, %ecx, %xmm6
+ subsd %xmm6, %xmm7
+ movq %xmm0, %xmm4
+ mulsd %xmm3, %xmm6
+ mulsd %xmm3, %xmm4
+ mulsd %xmm3, %xmm7
+ andpd %xmm5, %xmm0
+ subsd %xmm6, %xmm0
+ andpd %xmm5, %xmm1
+ addsd %xmm1, %xmm4
+ subsd %xmm7, %xmm0
+ andl $32752, %eax
+ subl $16286, %eax
+ cmpl $1121, %eax
+ ja .L_2TAG_PACKET_3.0.2
+ divsd %xmm4, %xmm0
+ pextrw $3, %xmm3, %ecx
+ movsd a2(%rip), %xmm2
+ movsd b2(%rip), %xmm3
+ pextrw $0, %xmm5, %eax
+ addl %edx, %edx
+ lea P_TBL(%rip), %r8
+ movapd (%r8,%rdx,8), %xmm6
+ lea SGN_TBL(%rip), %r8
+ movapd (%r8,%rdx,8), %xmm1
+ subl $16286, %ecx
+ notl %eax
+ andl $1, %eax
+ addl %eax, %ecx
+ addl %ecx, %ecx
+ lea ATAN_TBL(%rip), %r8
+ movapd (%r8,%rcx,8), %xmm5
+ xorpd %xmm1, %xmm5
+ addpd %xmm6, %xmm5
+ movq %xmm5, %xmm6
+ unpckhpd %xmm5, %xmm5
+ xorpd %xmm0, %xmm1
+ movq %xmm1, %xmm4
+ mulsd %xmm0, %xmm0
+ mulsd %xmm0, %xmm2
+ addsd %xmm0, %xmm3
+ addsd %xmm6, %xmm1
+ subsd %xmm1, %xmm6
+ addsd %xmm4, %xmm6
+ addsd 8+a2(%rip), %xmm2
+ mulsd %xmm0, %xmm3
+ mulsd %xmm4, %xmm0
+ addsd %xmm5, %xmm6
+ mulsd %xmm2, %xmm0
+ addsd 8+b2(%rip), %xmm3
+ mulsd %xmm3, %xmm0
+ addsd %xmm6, %xmm0
+ addsd %xmm1, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_3.0.2:
+ addl $942, %eax
+ cmpl $942, %eax
+ ja .L_2TAG_PACKET_4.0.2
+ xorpd %xmm4, %xmm4
+ movl $16368, %ecx
+ pinsrw $3, %ecx, %xmm4
+ divsd %xmm1, %xmm4
+ addl %edx, %edx
+ lea SGN_TBL(%rip), %r8
+ movapd (%r8,%rdx,8), %xmm6
+ unpcklpd %xmm3, %xmm3
+ xorpd %xmm6, %xmm0
+ xorpd %xmm6, %xmm2
+ xorpd %xmm6, %xmm3
+ lea P_TBL2(%rip), %r8
+ movapd (%r8,%rdx,8), %xmm7
+ movsd a2(%rip), %xmm1
+ movsd b2(%rip), %xmm5
+ lea SELECT_B(%rip), %r8
+ andpd (%r8,%rdx,8), %xmm3
+ mulsd %xmm4, %xmm2
+ mulsd %xmm4, %xmm0
+ movq %xmm2, %xmm6
+ mulsd %xmm2, %xmm2
+ mulsd %xmm2, %xmm1
+ addsd %xmm2, %xmm5
+ mulsd %xmm2, %xmm6
+ addsd 8+a2(%rip), %xmm1
+ mulsd %xmm2, %xmm5
+ addsd %xmm0, %xmm7
+ addpd %xmm3, %xmm7
+ mulsd %xmm6, %xmm1
+ addsd 8+b2(%rip), %xmm5
+ mulsd %xmm1, %xmm5
+ addsd %xmm7, %xmm5
+ pshufd $238, %xmm7, %xmm0
+ addsd %xmm5, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_4.0.2:
+ movsd 8(%rsp), %xmm1
+ movsd (%rsp), %xmm0
+ pextrw $3, %xmm1, %eax
+ andl $32752, %eax
+ pextrw $3, %xmm0, %ecx
+ andl $32752, %ecx
+ cmpl %eax, %ecx
+ jg .L_2TAG_PACKET_5.0.2
+ pextrw $3, %xmm1, %ecx
+ cmpl $32767, %ecx
+ jg .L_2TAG_PACKET_6.0.2
+ divsd %xmm1, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_6.0.2:
+ andpd SGNMASK(%rip), %xmm0
+ movsd pi_table(%rip), %xmm2
+ xorpd %xmm2, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_5.0.2:
+ andpd SGNMASK(%rip), %xmm0
+ movsd pi2_table(%rip), %xmm2
+ xorpd %xmm2, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_0.0.2:
+.L_2TAG_PACKET_1.0.2:
+ pextrw $3, %xmm0, %ecx
+ andl $32752, %ecx
+ pextrw $3, %xmm1, %eax
+ andl $32752, %eax
+ cmpl $32752, %ecx
+ je .L_2TAG_PACKET_7.0.2
+ cmpl $32752, %eax
+ je .L_2TAG_PACKET_8.0.2
+ movsd POW55(%rip), %xmm3
+ movl $1024, %edx
+ movsd INVEXPMASK(%rip), %xmm4
+ xorpd %xmm6, %xmm6
+ movsd EXPMASK(%rip), %xmm7
+ cmpl $0, %ecx
+ je .L_2TAG_PACKET_9.0.2
+.L_2TAG_PACKET_10.0.2:
+ cmpl $0, %eax
+ je .L_2TAG_PACKET_11.0.2
+.L_2TAG_PACKET_12.0.2:
+ addl %ecx, %edx
+ subl %eax, %edx
+ cmpl $2048, %edx
+ ja .L_2TAG_PACKET_4.0.2
+ addl $15344, %edx
+ pinsrw $3, %edx, %xmm6
+ andpd %xmm4, %xmm0
+ andpd %xmm4, %xmm1
+ orpd %xmm6, %xmm0
+ orpd %xmm7, %xmm1
+ jmp .L_2TAG_PACKET_2.0.2
+.L_2TAG_PACKET_9.0.2:
+ subl $880, %edx
+ mulsd %xmm3, %xmm0
+ pextrw $3, %xmm0, %ecx
+ andl $32752, %ecx
+ cmpl $0, %ecx
+ je .L_2TAG_PACKET_13.0.2
+ jmp .L_2TAG_PACKET_10.0.2
+.L_2TAG_PACKET_11.0.2:
+ addl $880, %edx
+ mulsd %xmm3, %xmm1
+ pextrw $3, %xmm1, %eax
+ andl $32752, %eax
+ cmpl $0, %eax
+ je .L_2TAG_PACKET_14.0.2
+ jmp .L_2TAG_PACKET_12.0.2
+.L_2TAG_PACKET_7.0.2:
+ movd %xmm0, %edx
+ movq %xmm0, %xmm2
+ psrlq $32, %xmm2
+ movd %xmm2, %ecx
+ andl $1048575, %ecx
+ orl %edx, %ecx
+ cmpl $0, %ecx
+ jne .L_2TAG_PACKET_15.0.2
+ psrlq $63, %xmm0
+ psllq $63, %xmm0
+ cmpl $32752, %eax
+ jae .L_2TAG_PACKET_16.0.2
+ movapd pi2_table(%rip), %xmm5
+ pshufd $238, %xmm5, %xmm4
+ addsd %xmm4, %xmm5
+ orpd %xmm5, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_15.0.2:
+ addsd %xmm0, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_16.0.2:
+ movd %xmm1, %eax
+ movq %xmm1, %xmm2
+ psrlq $32, %xmm2
+ movd %xmm2, %ecx
+ movl $-2147483648, %edx
+ andl %ecx, %edx
+ andl $1048575, %ecx
+ orl %eax, %ecx
+ cmpl $0, %ecx
+ jne .L_2TAG_PACKET_17.0.2
+ cmpl $0, %edx
+ jne .L_2TAG_PACKET_18.0.2
+ movapd pi4_table(%rip), %xmm5
+ pshufd $238, %xmm5, %xmm4
+ addsd %xmm4, %xmm5
+ orpd %xmm5, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_17.0.2:
+ movq %xmm1, %xmm0
+ addsd %xmm0, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_18.0.2:
+ movapd pi4_table(%rip), %xmm5
+ movapd pi2_table(%rip), %xmm6
+ addpd %xmm6, %xmm5
+ pshufd $238, %xmm5, %xmm6
+ addpd %xmm6, %xmm5
+ orpd %xmm5, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_8.0.2:
+ movd %xmm1, %eax
+ movq %xmm1, %xmm2
+ psrlq $32, %xmm2
+ movd %xmm2, %ecx
+ movl $-2147483648, %edx
+ andl %ecx, %edx
+ andl $1048575, %ecx
+ orl %eax, %ecx
+ cmpl $0, %ecx
+ jne .L_2TAG_PACKET_17.0.2
+ psrlq $63, %xmm0
+ psllq $63, %xmm0
+ cmpl $0, %edx
+ jne .L_2TAG_PACKET_19.0.2
+ jmp ..B1.5
+.L_2TAG_PACKET_19.0.2:
+ movapd pi_table(%rip), %xmm5
+ pshufd $238, %xmm5, %xmm4
+ addsd %xmm4, %xmm5
+ orpd %xmm5, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_13.0.2:
+ pextrw $3, %xmm1, %edx
+ andl $32768, %edx
+ cmpl $0, %edx
+ je .L_2TAG_PACKET_20.0.2
+ movapd pi_table(%rip), %xmm5
+ pshufd $238, %xmm5, %xmm4
+ addsd %xmm4, %xmm5
+ comisd %xmm0, %xmm1
+ orpd %xmm5, %xmm0
+ je .L_2TAG_PACKET_21.0.2
+ jmp ..B1.5
+.L_2TAG_PACKET_20.0.2:
+ comisd %xmm0, %xmm1
+ je .L_2TAG_PACKET_21.0.2
+ jmp ..B1.5
+.L_2TAG_PACKET_14.0.2:
+ movapd pi2_table(%rip), %xmm5
+ psrlq $63, %xmm0
+ psllq $63, %xmm0
+ pshufd $238, %xmm5, %xmm4
+ addsd %xmm4, %xmm5
+ orpd %xmm5, %xmm0
+ jmp ..B1.5
+.L_2TAG_PACKET_21.0.2:
+ movq %xmm0, 16(%rsp)
+..B1.3:
+ movq 16(%rsp), %xmm0
+.L_2TAG_PACKET_22.0.2:
+..B1.5:
+ addq $24, %rsp
+..___tag_value_atan2.4:
+ ret
+..___tag_value_atan2.5:
+END(atan2)
+# -- End atan2
+ .section .rodata, "a"
+ .align 16
+ .align 16
+a2:
+ .long 2006262985
+ .long 1069310863
+ .long 2358449471
+ .long 3217342131
+ .type a2,@object
+ .size a2,16
+ .align 16
+b2:
+ .long 3845454352
+ .long 1069952297
+ .long 2829679149
+ .long 1073771565
+ .type b2,@object
+ .size b2,16
+ .align 16
+P_TBL:
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 1413754136
+ .long 1074340347
+ .long 856972295
+ .long 1017226790
+ .long 1413754136
+ .long 3221823995
+ .long 856972295
+ .long 3164710438
+ .type P_TBL,@object
+ .size P_TBL,64
+ .align 16
+SGN_TBL:
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .type SGN_TBL,@object
+ .size SGN_TBL,64
+ .align 16
+ATAN_TBL:
+ .long 3390881280
+ .long 1067318733
+ .long 1411116779
+ .long 1018950063
+ .long 2985987840
+ .long 1067384211
+ .long 2088903695
+ .long 1018086027
+ .long 3148445184
+ .long 1067449685
+ .long 2044163806
+ .long 1017271335
+ .long 3667629184
+ .long 1067515494
+ .long 2353092775
+ .long 1019967309
+ .long 1546568832
+ .long 1067580954
+ .long 611991315
+ .long 1017602584
+ .long 3815996800
+ .long 1067646404
+ .long 466038598
+ .long 1019686426
+ .long 4050241920
+ .long 1067711845
+ .long 3265026328
+ .long 1019626952
+ .long 120454912
+ .long 1067777277
+ .long 1542207696
+ .long 1020155608
+ .long 2784639744
+ .long 1067842697
+ .long 3883834623
+ .long 1018602870
+ .long 1328010624
+ .long 1067908107
+ .long 1791097456
+ .long 1019053126
+ .long 2217794048
+ .long 1067973505
+ .long 551619938
+ .long 1018494194
+ .long 3333520000
+ .long 1068038891
+ .long 2390331823
+ .long 1019033022
+ .long 2557052032
+ .long 1068104265
+ .long 2423976108
+ .long 1019728674
+ .long 2067649536
+ .long 1068169626
+ .long 3757397745
+ .long 1018672362
+ .long 4047094784
+ .long 1068234973
+ .long 481613184
+ .long 1019275104
+ .long 2089853184
+ .long 1068300307
+ .long 1733914374
+ .long 1020124677
+ .long 2678003840
+ .long 1068365626
+ .long 1373600282
+ .long 1013935474
+ .long 3706496128
+ .long 1068430930
+ .long 1000610902
+ .long 1019673285
+ .long 3073179008
+ .long 1068496219
+ .long 1497143008
+ .long 1019900342
+ .long 2803716736
+ .long 1068562846
+ .long 1476677416
+ .long 1019444094
+ .long 3204984128
+ .long 1068628077
+ .long 1192335905
+ .long 1018748628
+ .long 831146624
+ .long 1068693273
+ .long 2733586224
+ .long 1018823295
+ .long 243029376
+ .long 1068758431
+ .long 950106081
+ .long 1019046675
+ .long 1735561920
+ .long 1068823549
+ .long 3546440856
+ .long 1020104712
+ .long 1339217792
+ .long 1068888626
+ .long 3028812387
+ .long 1019818321
+ .long 3706342144
+ .long 1068953659
+ .long 3814564029
+ .long 1017763871
+ .long 637726976
+ .long 1069018648
+ .long 3584007699
+ .long 1017976868
+ .long 1148779264
+ .long 1069083589
+ .long 2282532133
+ .long 1019483954
+ .long 1406131392
+ .long 1069148481
+ .long 1547359113
+ .long 1019786342
+ .long 1908875904
+ .long 1069213322
+ .long 1315508410
+ .long 1020009473
+ .long 3194947520
+ .long 1069278110
+ .long 3845393201
+ .long 1015803761
+ .long 1547487744
+ .long 1069342844
+ .long 3863107865
+ .long 1019810104
+ .long 1881061952
+ .long 1069407521
+ .long 4288343548
+ .long 1019687581
+ .long 563086336
+ .long 1069472140
+ .long 2582230241
+ .long 1020099350
+ .long 2594975552
+ .long 1069536698
+ .long 2306443764
+ .long 1019667244
+ .long 3438545024
+ .long 1069606573
+ .long 957455549
+ .long 1015587735
+ .long 4211357472
+ .long 1069670906
+ .long 2611778754
+ .long 1017877214
+ .long 3002835424
+ .long 1069735101
+ .long 235580458
+ .long 1020211685
+ .long 3905315424
+ .long 1069799150
+ .long 3630647617
+ .long 1018736849
+ .long 2849656576
+ .long 1069863047
+ .long 2412165062
+ .long 1019693004
+ .long 507429472
+ .long 1069926785
+ .long 1397750723
+ .long 1018412717
+ .long 2307470272
+ .long 1069990356
+ .long 1796470904
+ .long 1019796181
+ .long 1271814912
+ .long 1070053755
+ .long 189761565
+ .long 1016149115
+ .long 3800538144
+ .long 1070116974
+ .long 2524871582
+ .long 1018263353
+ .long 3916203552
+ .long 1070180008
+ .long 127848658
+ .long 1017672664
+ .long 457192032
+ .long 1070242851
+ .long 4020400938
+ .long 1019823010
+ .long 1385324704
+ .long 1070305495
+ .long 564511179
+ .long 1016079094
+ .long 2322869856
+ .long 1070367935
+ .long 2347103319
+ .long 1018927760
+ .long 3743438624
+ .long 1070430165
+ .long 877973862
+ .long 1019638162
+ .long 2392255552
+ .long 1070492180
+ .long 2432782267
+ .long 1018872629
+ .long 4180443328
+ .long 1070553973
+ .long 3102990015
+ .long 1020093101
+ .long 2547540832
+ .long 1070636485
+ .long 3877738253
+ .long 1017300424
+ .long 2735468912
+ .long 1070697461
+ .long 2446470256
+ .long 1019235378
+ .long 542633792
+ .long 1070757943
+ .long 583606328
+ .long 1018624131
+ .long 923265984
+ .long 1070817911
+ .long 1793926708
+ .long 1019714161
+ .long 918728448
+ .long 1070877348
+ .long 3726463586
+ .long 1019433296
+ .long 2572275008
+ .long 1070936237
+ .long 1845354238
+ .long 1019459238
+ .long 50974688
+ .long 1070994564
+ .long 983808064
+ .long 1016685418
+ .long 1105518320
+ .long 1071052313
+ .long 2357496692
+ .long 1015139882
+ .long 1264825328
+ .long 1071109472
+ .long 2244129354
+ .long 1019046344
+ .long 961157920
+ .long 1071166029
+ .long 3124185339
+ .long 1018541776
+ .long 1162701584
+ .long 1071221973
+ .long 1279780948
+ .long 1019268918
+ .long 3284935664
+ .long 1071277294
+ .long 2670033472
+ .long 1019833744
+ .long 497441888
+ .long 1071331985
+ .long 1032737410
+ .long 1019795212
+ .long 3377383904
+ .long 1071386036
+ .long 2356897182
+ .long 1020205553
+ .long 1126962000
+ .long 1071439443
+ .long 3723724586
+ .long 1015212418
+ .long 90291008
+ .long 1071492199
+ .long 4178672431
+ .long 1020186971
+ .long 190059536
+ .long 1071595741
+ .long 1763589807
+ .long 1019162163
+ .long 2497392840
+ .long 1071670654
+ .long 3036997041
+ .long 1020204325
+ .long 2616971944
+ .long 1071719773
+ .long 300151069
+ .long 1017041957
+ .long 2883518128
+ .long 1071767563
+ .long 2203981414
+ .long 1019190108
+ .long 1496354352
+ .long 1071814030
+ .long 332287966
+ .long 1016846435
+ .long 483276728
+ .long 1071859184
+ .long 653845024
+ .long 1018830914
+ .long 3097401072
+ .long 1071903039
+ .long 1514746408
+ .long 1019278972
+ .long 2737217248
+ .long 1071945615
+ .long 1358845067
+ .long 1017268275
+ .long 2072577560
+ .long 1071986933
+ .long 3041024735
+ .long 1019929672
+ .long 2266405656
+ .long 1072027017
+ .long 1271261130
+ .long 1012925070
+ .long 958652544
+ .long 1072065894
+ .long 2158017058
+ .long 1019955372
+ .long 3312993840
+ .long 1072103591
+ .long 765809169
+ .long 1019114443
+ .long 3177001304
+ .long 1072140139
+ .long 144180084
+ .long 1019822186
+ .long 3071642184
+ .long 1072175568
+ .long 4004602424
+ .long 1019420740
+ .long 4283953648
+ .long 1072209909
+ .long 1511950430
+ .long 1020176966
+ .long 1413754136
+ .long 1072243195
+ .long 856972295
+ .long 1015129638
+ .long 4073202944
+ .long 1072306725
+ .long 4068194804
+ .long 1019714860
+ .long 946117760
+ .long 1072366415
+ .long 694980733
+ .long 1020150135
+ .long 3980632032
+ .long 1072422512
+ .long 1313251280
+ .long 1019948709
+ .long 1468297112
+ .long 1072475260
+ .long 330111143
+ .long 1019809198
+ .long 3478063816
+ .long 1072524887
+ .long 2930067044
+ .long 1017784081
+ .long 1153979856
+ .long 1072571613
+ .long 2225786102
+ .long 1017634481
+ .long 2089828808
+ .long 1072615641
+ .long 474621367
+ .long 1017043414
+ .long 3531732632
+ .long 1072657163
+ .long 2276396220
+ .long 1018757240
+ .long 775214612
+ .long 1072694803
+ .long 3209744818
+ .long 1019963015
+ .long 662307284
+ .long 1072713319
+ .long 1381696763
+ .long 1019763781
+ .long 1192776652
+ .long 1072730830
+ .long 3017932994
+ .long 1015179769
+ .long 744202396
+ .long 1072747407
+ .long 2073854034
+ .long 1019512292
+ .long 8337908
+ .long 1072763115
+ .long 16004448
+ .long 1019599514
+ .long 3589868768
+ .long 1072778013
+ .long 1374369804
+ .long 1018019237
+ .long 121647320
+ .long 1072792159
+ .long 128481634
+ .long 1018115438
+ .long 2464923204
+ .long 1072805601
+ .long 1787331214
+ .long 1016798022
+ .long 4093304372
+ .long 1072830562
+ .long 3306868969
+ .long 1019384078
+ .long 1436891684
+ .long 1072853231
+ .long 676347266
+ .long 1017302183
+ .long 1104571840
+ .long 1072873890
+ .long 2870400285
+ .long 1019938149
+ .long 2037009832
+ .long 1072892781
+ .long 2956702105
+ .long 1016472908
+ .long 3139037960
+ .long 1072910111
+ .long 916057147
+ .long 1018364335
+ .long 1826698064
+ .long 1072926058
+ .long 2171961098
+ .long 1019669816
+ .long 1353941060
+ .long 1072940774
+ .long 1722928782
+ .long 1019926215
+ .long 1803191644
+ .long 1072954391
+ .long 1547878639
+ .long 1020259262
+ .long 1092591296
+ .long 1072967024
+ .long 3070107923
+ .long 1018320401
+ .long 2205372832
+ .long 1072978772
+ .long 787328196
+ .long 1014621351
+ .long 1291577100
+ .long 1072989723
+ .long 2964757301
+ .long 1020242528
+ .long 4234512804
+ .long 1072999952
+ .long 3136030038
+ .long 1017522144
+ .long 3248069132
+ .long 1073009528
+ .long 1506192355
+ .long 1018050472
+ .long 3932628500
+ .long 1073018509
+ .long 1045823554
+ .long 1019946655
+ .long 4195697848
+ .long 1073026948
+ .long 233443322
+ .long 1018917447
+ .long 2501811452
+ .long 1073034892
+ .long 901427976
+ .long 1017333852
+ .long 866379428
+ .long 1073049455
+ .long 2437443742
+ .long 1019678792
+ .long 1376865888
+ .long 1073062480
+ .long 3365790232
+ .long 1014547152
+ .long 3290094268
+ .long 1073074195
+ .long 3898947415
+ .long 1018683566
+ .long 354764884
+ .long 1073084787
+ .long 3854322404
+ .long 1019662058
+ .long 3332975496
+ .long 1073094406
+ .long 3171701655
+ .long 1017830922
+ .long 1141460088
+ .long 1073103181
+ .long 3946082701
+ .long 1020032019
+ .long 745761284
+ .long 1073111216
+ .long 1347210591
+ .long 1019106121
+ .long 1673304508
+ .long 1073118600
+ .long 1760606642
+ .long 1017324577
+ .long 983388240
+ .long 1073125409
+ .long 3740651204
+ .long 1019514104
+ .long 3895509100
+ .long 1073131706
+ .long 2409629983
+ .long 1020069322
+ .long 2128523668
+ .long 1073137548
+ .long 3045605368
+ .long 1018579174
+ .long 2075485692
+ .long 1073142981
+ .long 3720571789
+ .long 1017557436
+ .long 121855976
+ .long 1073148047
+ .long 2391744767
+ .long 1020160645
+ .long 4181733780
+ .long 1073152780
+ .long 995028816
+ .long 1019681295
+ .long 2887813280
+ .long 1073157214
+ .long 218733247
+ .long 1020003509
+ .long 2862180896
+ .long 1073161375
+ .long 2043806490
+ .long 1018602288
+ .long 3909375184
+ .long 1073168973
+ .long 1559903412
+ .long 1020103444
+ .long 3533966292
+ .long 1073175738
+ .long 734884149
+ .long 1018462962
+ .long 3815044608
+ .long 1073181799
+ .long 3630523428
+ .long 1017250093
+ .long 739639376
+ .long 1073187261
+ .long 4167476661
+ .long 1020008277
+ .long 1068309648
+ .long 1073192207
+ .long 2110061437
+ .long 1019295858
+ .long 2350566352
+ .long 1073196707
+ .long 582596516
+ .long 1018568821
+ .long 2529520024
+ .long 1073200819
+ .long 745552787
+ .long 1019053165
+ .long 1841667508
+ .long 1073204591
+ .long 3982568700
+ .long 1016503327
+ .long 2242261080
+ .long 1073208063
+ .long 3433582258
+ .long 1016196763
+ .long 715134328
+ .long 1073211270
+ .long 355901358
+ .long 1020087916
+ .long 2700735876
+ .long 1073214240
+ .long 3640957736
+ .long 1019780205
+ .long 141607580
+ .long 1073217000
+ .long 2488245051
+ .long 1020262395
+ .long 287934404
+ .long 1073219570
+ .long 2392691085
+ .long 1019883292
+ .long 2363373988
+ .long 1073221969
+ .long 4194561737
+ .long 1019237447
+ .long 3829340424
+ .long 1073224214
+ .long 429455526
+ .long 1019490975
+ .long 1988805928
+ .long 1073226320
+ .long 3029848706
+ .long 1018104889
+ .long 1647572320
+ .long 1073230161
+ .long 10289938
+ .long 1017394880
+ .long 3988000624
+ .long 1073233576
+ .long 1957559169
+ .long 1019434816
+ .long 4263843944
+ .long 1073236633
+ .long 204710264
+ .long 1019908761
+ .long 663197724
+ .long 1073239386
+ .long 1921757578
+ .long 1019778948
+ .long 3560800700
+ .long 1073241876
+ .long 3994348896
+ .long 1019230192
+ .long 2441785656
+ .long 1073244141
+ .long 871468611
+ .long 1014800505
+ .long 3277400272
+ .long 1073246209
+ .long 4092218139
+ .long 1020040842
+ .long 3951990120
+ .long 1073248105
+ .long 4276546478
+ .long 1019763677
+ .long 2737338540
+ .long 1073249850
+ .long 252776012
+ .long 1018794951
+ .long 1511361316
+ .long 1073251461
+ .long 3119653999
+ .long 1018514803
+ .long 3969162516
+ .long 1073252952
+ .long 1037069016
+ .long 1016792900
+ .long 413985240
+ .long 1073254338
+ .long 4110171432
+ .long 1020001345
+ .long 3681283576
+ .long 1073255627
+ .long 1463092818
+ .long 1020260354
+ .long 3146455488
+ .long 1073256831
+ .long 1031209123
+ .long 1016554799
+ .long 95214512
+ .long 1073257958
+ .long 1373808632
+ .long 1019493031
+ .long 4250240828
+ .long 1073259013
+ .long 3891047882
+ .long 1020108730
+ .long 1413754136
+ .long 1073291771
+ .long 856972295
+ .long 1016178214
+ .type ATAN_TBL,@object
+ .size ATAN_TBL,2624
+ .align 16
+P_TBL2:
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 856972295
+ .long 1017226790
+ .long 1413754136
+ .long 1074340347
+ .long 856972295
+ .long 3164710438
+ .long 1413754136
+ .long 3221823995
+ .type P_TBL2,@object
+ .size P_TBL2,64
+ .align 16
+SELECT_B:
+ .long 0
+ .long 0
+ .long 4294967295
+ .long 4294967295
+ .long 0
+ .long 0
+ .long 4294967295
+ .long 4294967295
+ .long 4294967295
+ .long 4294967295
+ .long 0
+ .long 0
+ .long 4294967295
+ .long 4294967295
+ .long 0
+ .long 0
+ .type SELECT_B,@object
+ .size SELECT_B,64
+ .align 16
+SGNMASK:
+ .long 0
+ .long 2147483648
+ .long 0
+ .long 2147483648
+ .type SGNMASK,@object
+ .size SGNMASK,16
+ .align 16
+pi_table:
+ .long 1413754136
+ .long 1074340347
+ .long 856972295
+ .long 1017226790
+ .type pi_table,@object
+ .size pi_table,16
+ .align 16
+pi2_table:
+ .long 1413754136
+ .long 1073291771
+ .long 856972295
+ .long 1016178214
+ .type pi2_table,@object
+ .size pi2_table,16
+ .align 16
+pi4_table:
+ .long 1413754136
+ .long 1072243195
+ .long 856972295
+ .long 1015129638
+ .type pi4_table,@object
+ .size pi4_table,16
+ .align 4
+POW55:
+ .long 0
+ .long 1130364928
+ .type POW55,@object
+ .size POW55,8
+ .align 4
+INVEXPMASK:
+ .long 4294967295
+ .long 2148532223
+ .type INVEXPMASK,@object
+ .size INVEXPMASK,8
+ .align 4
+EXPMASK:
+ .long 0
+ .long 1072693248
+ .type EXPMASK,@object
+ .size EXPMASK,8
+ .data
+ .section .note.GNU-stack, ""
+// -- Begin DWARF2 SEGMENT .eh_frame
+ .section .eh_frame,"a",@progbits
+.eh_frame_seg:
+ .align 1
+ .4byte 0x00000014
+ .8byte 0x00527a0100000000
+ .8byte 0x08070c1b01107801
+ .4byte 0x00000190
+ .4byte 0x0000001c
+ .4byte 0x0000001c
+ .4byte ..___tag_value_atan2.1-.
+ .4byte ..___tag_value_atan2.5-..___tag_value_atan2.1
+ .2byte 0x0400
+ .4byte ..___tag_value_atan2.3-..___tag_value_atan2.1
+ .2byte 0x200e
+ .byte 0x04
+ .4byte ..___tag_value_atan2.4-..___tag_value_atan2.3
+ .2byte 0x080e
+ .byte 0x00
+# End