Home | History | Annotate | Download | only in x86_64
      1 /*
      2 Copyright (c) 2014, Intel Corporation
      3 All rights reserved.
      4 
      5 Redistribution and use in source and binary forms, with or without
      6 modification, 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 
     19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
     23 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     24 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     26 ANY 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
     28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 */
     30 
     31 /******************************************************************************/
     32 //                     ALGORITHM DESCRIPTION
     33 //                     ---------------------
     34 //
     35 //
     36 //1. The method is based on the relationship of atan2(Y,X) to atan(|Y/X|)
     37 //   as follows.
     38 //                   /  sign(Y) atan(|Y/X|)                if X > 0
     39 //       atan2(Y,X) =
     40 //                   \  sign(Y)*pi  - sign(Y)*atan(|Y/X|)  if X < 0
     41 //
     42 //   Thus, atan2(Y,X) is of the form  atan2(Y,X) = PI + sgn*atan(|Y/X|)
     43 //   where PI and sgn can be determined by the four possible combinations of
     44 //   of the pair (sign(X),sign(Y)). We concentrate on the numerical method
     45 //   for atan(|Y/X|).
     46 //
     47 //2. For |Y/X| < 2^(-64), atan(|Y/X|) ~=~ |Y/X|. Hence, atan2(Y,X) is  Y/X
     48 //   if X > 0, and sign(Y)*pi otherwise.
     49 //3. For |Y/X| >= 2^(65), atan(|Y/X|) ~=~ pi/2. Hence atan2(Y,X) is sign(Y)pi/2.
     50 //4. For 2^(-64) <= |Y/X| < 2^(-5), atan(|Y/X|) is approximated by a polynomial
     51 //   of the form  Z + Z*E*polynomial(E), where Z = |Y/X| and E = Z*Z.
     52 //5. For |Y/X| > 2^(5), atan(|Y/X|) = pi/2 + atan(-|X/Y|), and atan(-|X/Y|) is
     53 //   calculated using the polynomial in 4 above.
     54 //6. For 2^(-5) <= |Y/X| <= 2^(5), we employ a table lookup method. First,
     55 //   we obtain B = 2^k * 1.b1 b2 b3 b4 = 2^k * (1+k/16) that approximate
     56 //   |Y/X| to approximately 5 significant bits. Hence, atan(|Y/X|) is
     57 //
     58 //      atan(|Y/X|)  =  atan(B) + atan(Z), where  Z = (|Y|-B|X|)/(|X|+B|Y|).
     59 //                  ~=~   tau   + Z + Z*E*polynomial(E), where E = Z*Z.
     60 //
     61 //   B has the range from 2^(-6)*(1+14/16) to 2^5 = 2^(5)*(1+0/16), totally
     62 //   163 possible values. These values are calculated beforehand and stored
     63 //   in a table. The polynomial is the one used in 4.
     64 //
     65 // Special cases:
     66 //  atan2(+-0, +0) = +-0
     67 //  atan2(+-0, -0) = +-pi
     68 //  atan2(+-0, x) = +-0, for x > 0, and +-pi, for x < 0
     69 //  atan2(y, +-0) = +pi/2 for y > 0, and -pi/2 for y < 0
     70 //  atan2(+-y, +INF) = +-0, for finite y > 0
     71 //  atan2(+-y, -INF) = +-pi, for finite y > 0
     72 //  atan2(+-INF, x) = +-pi/2, for finite x
     73 //  atan2(+-INF, +INF) = +-pi/4
     74 //  atan2(+-INF, -INF) = +-3*pi/4
     75 //
     76 /******************************************************************************/
     77 
     78 #include <private/bionic_asm.h>
     79 # -- Begin  atan2
     80 ENTRY(atan2)
     81 # parameter 1: %xmm0
     82 # parameter 2: %xmm1
     83 ..B1.1:
     84 ..___tag_value_atan2.1:
     85         subq      $24, %rsp
     86 ..___tag_value_atan2.3:
     87         movsd     %xmm0, (%rsp)
     88         movsd     %xmm1, 8(%rsp)
     89 ..B1.2:
     90         pextrw    $3, %xmm0, %eax
     91         andl      $32752, %eax
     92         subl      $14448, %eax
     93         cmpl      $3840, %eax
     94         ja        .L_2TAG_PACKET_0.0.2
     95         pextrw    $3, %xmm1, %eax
     96         andl      $32752, %eax
     97         subl      $14448, %eax
     98         cmpl      $3840, %eax
     99         ja        .L_2TAG_PACKET_1.0.2
    100 .L_2TAG_PACKET_2.0.2:
    101         unpcklpd  %xmm1, %xmm0
    102         xorpd     %xmm5, %xmm5
    103         xorpd     %xmm3, %xmm3
    104         movl      $2048, %eax
    105         pinsrw    $3, %eax, %xmm5
    106         paddw     %xmm1, %xmm5
    107         psrlq     $29, %xmm5
    108         rcpss     %xmm5, %xmm3
    109         xorpd     %xmm4, %xmm4
    110         movl      $14336, %ecx
    111         pinsrw    $3, %ecx, %xmm4
    112         psllq     $29, %xmm3
    113         paddw     %xmm4, %xmm3
    114         mulsd     %xmm0, %xmm3
    115         xorpd     %xmm2, %xmm2
    116         xorpd     %xmm6, %xmm6
    117         xorpd     %xmm7, %xmm7
    118         movl      $32768, %eax
    119         pinsrw    $2, %eax, %xmm6
    120         movl      $32767, %ecx
    121         pinsrw    $3, %ecx, %xmm7
    122         paddd     %xmm6, %xmm3
    123         andpd     %xmm7, %xmm3
    124         movq      %xmm3, %xmm5
    125         pextrw    $3, %xmm3, %eax
    126         movl      $16448, %ecx
    127         pinsrw    $3, %ecx, %xmm2
    128         minsd     %xmm2, %xmm3
    129         movmskpd  %xmm0, %edx
    130         psllq     $1, %xmm0
    131         psrlq     $1, %xmm0
    132         cmpsd     $2, %xmm2, %xmm5
    133         psllq     $1, %xmm1
    134         psrlq     $1, %xmm1
    135         movq      %xmm1, %xmm6
    136         movq      %xmm1, %xmm7
    137         movq      %xmm0, %xmm2
    138         movl      $0, %ecx
    139         pinsrw    $0, %ecx, %xmm6
    140         subsd     %xmm6, %xmm7
    141         movq      %xmm0, %xmm4
    142         mulsd     %xmm3, %xmm6
    143         mulsd     %xmm3, %xmm4
    144         mulsd     %xmm3, %xmm7
    145         andpd     %xmm5, %xmm0
    146         subsd     %xmm6, %xmm0
    147         andpd     %xmm5, %xmm1
    148         addsd     %xmm1, %xmm4
    149         subsd     %xmm7, %xmm0
    150         andl      $32752, %eax
    151         subl      $16286, %eax
    152         cmpl      $1121, %eax
    153         ja        .L_2TAG_PACKET_3.0.2
    154         divsd     %xmm4, %xmm0
    155         pextrw    $3, %xmm3, %ecx
    156         movsd     a2(%rip), %xmm2
    157         movsd     b2(%rip), %xmm3
    158         pextrw    $0, %xmm5, %eax
    159         addl      %edx, %edx
    160         lea       P_TBL(%rip), %r8
    161         movapd    (%r8,%rdx,8), %xmm6
    162         lea       SGN_TBL(%rip), %r8
    163         movapd    (%r8,%rdx,8), %xmm1
    164         subl      $16286, %ecx
    165         notl      %eax
    166         andl      $1, %eax
    167         addl      %eax, %ecx
    168         addl      %ecx, %ecx
    169         lea       ATAN_TBL(%rip), %r8
    170         movapd    (%r8,%rcx,8), %xmm5
    171         xorpd     %xmm1, %xmm5
    172         addpd     %xmm6, %xmm5
    173         movq      %xmm5, %xmm6
    174         unpckhpd  %xmm5, %xmm5
    175         xorpd     %xmm0, %xmm1
    176         movq      %xmm1, %xmm4
    177         mulsd     %xmm0, %xmm0
    178         mulsd     %xmm0, %xmm2
    179         addsd     %xmm0, %xmm3
    180         addsd     %xmm6, %xmm1
    181         subsd     %xmm1, %xmm6
    182         addsd     %xmm4, %xmm6
    183         addsd     8+a2(%rip), %xmm2
    184         mulsd     %xmm0, %xmm3
    185         mulsd     %xmm4, %xmm0
    186         addsd     %xmm5, %xmm6
    187         mulsd     %xmm2, %xmm0
    188         addsd     8+b2(%rip), %xmm3
    189         mulsd     %xmm3, %xmm0
    190         addsd     %xmm6, %xmm0
    191         addsd     %xmm1, %xmm0
    192         jmp       ..B1.5
    193 .L_2TAG_PACKET_3.0.2:
    194         addl      $942, %eax
    195         cmpl      $942, %eax
    196         ja        .L_2TAG_PACKET_4.0.2
    197         xorpd     %xmm4, %xmm4
    198         movl      $16368, %ecx
    199         pinsrw    $3, %ecx, %xmm4
    200         divsd     %xmm1, %xmm4
    201         addl      %edx, %edx
    202         lea       SGN_TBL(%rip), %r8
    203         movapd    (%r8,%rdx,8), %xmm6
    204         unpcklpd  %xmm3, %xmm3
    205         xorpd     %xmm6, %xmm0
    206         xorpd     %xmm6, %xmm2
    207         xorpd     %xmm6, %xmm3
    208         lea       P_TBL2(%rip), %r8
    209         movapd    (%r8,%rdx,8), %xmm7
    210         movsd     a2(%rip), %xmm1
    211         movsd     b2(%rip), %xmm5
    212         lea       SELECT_B(%rip), %r8
    213         andpd     (%r8,%rdx,8), %xmm3
    214         mulsd     %xmm4, %xmm2
    215         mulsd     %xmm4, %xmm0
    216         movq      %xmm2, %xmm6
    217         mulsd     %xmm2, %xmm2
    218         mulsd     %xmm2, %xmm1
    219         addsd     %xmm2, %xmm5
    220         mulsd     %xmm2, %xmm6
    221         addsd     8+a2(%rip), %xmm1
    222         mulsd     %xmm2, %xmm5
    223         addsd     %xmm0, %xmm7
    224         addpd     %xmm3, %xmm7
    225         mulsd     %xmm6, %xmm1
    226         addsd     8+b2(%rip), %xmm5
    227         mulsd     %xmm1, %xmm5
    228         addsd     %xmm7, %xmm5
    229         pshufd    $238, %xmm7, %xmm0
    230         addsd     %xmm5, %xmm0
    231         jmp       ..B1.5
    232 .L_2TAG_PACKET_4.0.2:
    233         movsd     8(%rsp), %xmm1
    234         movsd     (%rsp), %xmm0
    235         pextrw    $3, %xmm1, %eax
    236         andl      $32752, %eax
    237         pextrw    $3, %xmm0, %ecx
    238         andl      $32752, %ecx
    239         cmpl      %eax, %ecx
    240         jg        .L_2TAG_PACKET_5.0.2
    241         pextrw    $3, %xmm1, %ecx
    242         cmpl      $32767, %ecx
    243         jg        .L_2TAG_PACKET_6.0.2
    244         divsd     %xmm1, %xmm0
    245         jmp       ..B1.5
    246 .L_2TAG_PACKET_6.0.2:
    247         andpd     SGNMASK(%rip), %xmm0
    248         movsd     pi_table(%rip), %xmm2
    249         xorpd     %xmm2, %xmm0
    250         jmp       ..B1.5
    251 .L_2TAG_PACKET_5.0.2:
    252         andpd     SGNMASK(%rip), %xmm0
    253         movsd     pi2_table(%rip), %xmm2
    254         xorpd     %xmm2, %xmm0
    255         jmp       ..B1.5
    256 .L_2TAG_PACKET_0.0.2:
    257 .L_2TAG_PACKET_1.0.2:
    258         pextrw    $3, %xmm0, %ecx
    259         andl      $32752, %ecx
    260         pextrw    $3, %xmm1, %eax
    261         andl      $32752, %eax
    262         cmpl      $32752, %ecx
    263         je        .L_2TAG_PACKET_7.0.2
    264         cmpl      $32752, %eax
    265         je        .L_2TAG_PACKET_8.0.2
    266         movsd     POW55(%rip), %xmm3
    267         movl      $1024, %edx
    268         movsd     INVEXPMASK(%rip), %xmm4
    269         xorpd     %xmm6, %xmm6
    270         movsd     EXPMASK(%rip), %xmm7
    271         cmpl      $0, %ecx
    272         je        .L_2TAG_PACKET_9.0.2
    273 .L_2TAG_PACKET_10.0.2:
    274         cmpl      $0, %eax
    275         je        .L_2TAG_PACKET_11.0.2
    276 .L_2TAG_PACKET_12.0.2:
    277         addl      %ecx, %edx
    278         subl      %eax, %edx
    279         cmpl      $2048, %edx
    280         ja        .L_2TAG_PACKET_4.0.2
    281         addl      $15344, %edx
    282         pinsrw    $3, %edx, %xmm6
    283         andpd     %xmm4, %xmm0
    284         andpd     %xmm4, %xmm1
    285         orpd      %xmm6, %xmm0
    286         orpd      %xmm7, %xmm1
    287         jmp       .L_2TAG_PACKET_2.0.2
    288 .L_2TAG_PACKET_9.0.2:
    289         subl      $880, %edx
    290         mulsd     %xmm3, %xmm0
    291         pextrw    $3, %xmm0, %ecx
    292         andl      $32752, %ecx
    293         cmpl      $0, %ecx
    294         je        .L_2TAG_PACKET_13.0.2
    295         jmp       .L_2TAG_PACKET_10.0.2
    296 .L_2TAG_PACKET_11.0.2:
    297         addl      $880, %edx
    298         mulsd     %xmm3, %xmm1
    299         pextrw    $3, %xmm1, %eax
    300         andl      $32752, %eax
    301         cmpl      $0, %eax
    302         je        .L_2TAG_PACKET_14.0.2
    303         jmp       .L_2TAG_PACKET_12.0.2
    304 .L_2TAG_PACKET_7.0.2:
    305         movd      %xmm0, %edx
    306         movq      %xmm0, %xmm2
    307         psrlq     $32, %xmm2
    308         movd      %xmm2, %ecx
    309         andl      $1048575, %ecx
    310         orl       %edx, %ecx
    311         cmpl      $0, %ecx
    312         jne       .L_2TAG_PACKET_15.0.2
    313         psrlq     $63, %xmm0
    314         psllq     $63, %xmm0
    315         cmpl      $32752, %eax
    316         jae       .L_2TAG_PACKET_16.0.2
    317         movapd    pi2_table(%rip), %xmm5
    318         pshufd    $238, %xmm5, %xmm4
    319         addsd     %xmm4, %xmm5
    320         orpd      %xmm5, %xmm0
    321         jmp       ..B1.5
    322 .L_2TAG_PACKET_15.0.2:
    323         addsd     %xmm0, %xmm0
    324         jmp       ..B1.5
    325 .L_2TAG_PACKET_16.0.2:
    326         movd      %xmm1, %eax
    327         movq      %xmm1, %xmm2
    328         psrlq     $32, %xmm2
    329         movd      %xmm2, %ecx
    330         movl      $-2147483648, %edx
    331         andl      %ecx, %edx
    332         andl      $1048575, %ecx
    333         orl       %eax, %ecx
    334         cmpl      $0, %ecx
    335         jne       .L_2TAG_PACKET_17.0.2
    336         cmpl      $0, %edx
    337         jne       .L_2TAG_PACKET_18.0.2
    338         movapd    pi4_table(%rip), %xmm5
    339         pshufd    $238, %xmm5, %xmm4
    340         addsd     %xmm4, %xmm5
    341         orpd      %xmm5, %xmm0
    342         jmp       ..B1.5
    343 .L_2TAG_PACKET_17.0.2:
    344         movq      %xmm1, %xmm0
    345         addsd     %xmm0, %xmm0
    346         jmp       ..B1.5
    347 .L_2TAG_PACKET_18.0.2:
    348         movapd    pi4_table(%rip), %xmm5
    349         movapd    pi2_table(%rip), %xmm6
    350         addpd     %xmm6, %xmm5
    351         pshufd    $238, %xmm5, %xmm6
    352         addpd     %xmm6, %xmm5
    353         orpd      %xmm5, %xmm0
    354         jmp       ..B1.5
    355 .L_2TAG_PACKET_8.0.2:
    356         movd      %xmm1, %eax
    357         movq      %xmm1, %xmm2
    358         psrlq     $32, %xmm2
    359         movd      %xmm2, %ecx
    360         movl      $-2147483648, %edx
    361         andl      %ecx, %edx
    362         andl      $1048575, %ecx
    363         orl       %eax, %ecx
    364         cmpl      $0, %ecx
    365         jne       .L_2TAG_PACKET_17.0.2
    366         psrlq     $63, %xmm0
    367         psllq     $63, %xmm0
    368         cmpl      $0, %edx
    369         jne       .L_2TAG_PACKET_19.0.2
    370         jmp       ..B1.5
    371 .L_2TAG_PACKET_19.0.2:
    372         movapd    pi_table(%rip), %xmm5
    373         pshufd    $238, %xmm5, %xmm4
    374         addsd     %xmm4, %xmm5
    375         orpd      %xmm5, %xmm0
    376         jmp       ..B1.5
    377 .L_2TAG_PACKET_13.0.2:
    378         pextrw    $3, %xmm1, %edx
    379         andl      $32768, %edx
    380         cmpl      $0, %edx
    381         je        .L_2TAG_PACKET_20.0.2
    382         movapd    pi_table(%rip), %xmm5
    383         pshufd    $238, %xmm5, %xmm4
    384         addsd     %xmm4, %xmm5
    385         comisd    %xmm0, %xmm1
    386         orpd      %xmm5, %xmm0
    387         je        .L_2TAG_PACKET_21.0.2
    388         jmp       ..B1.5
    389 .L_2TAG_PACKET_20.0.2:
    390         comisd    %xmm0, %xmm1
    391         je        .L_2TAG_PACKET_21.0.2
    392         jmp       ..B1.5
    393 .L_2TAG_PACKET_14.0.2:
    394         movapd    pi2_table(%rip), %xmm5
    395         psrlq     $63, %xmm0
    396         psllq     $63, %xmm0
    397         pshufd    $238, %xmm5, %xmm4
    398         addsd     %xmm4, %xmm5
    399         orpd      %xmm5, %xmm0
    400         jmp       ..B1.5
    401 .L_2TAG_PACKET_21.0.2:
    402         movq      %xmm0, 16(%rsp)
    403 ..B1.3:
    404         movq      16(%rsp), %xmm0
    405 .L_2TAG_PACKET_22.0.2:
    406 ..B1.5:
    407         addq      $24, %rsp
    408 ..___tag_value_atan2.4:
    409         ret
    410 ..___tag_value_atan2.5:
    411 END(atan2)
    412 # -- End  atan2
    413 	.section .rodata, "a"
    414 	.align 16
    415 	.align 16
    416 a2:
    417 	.long	2006262985
    418 	.long	1069310863
    419 	.long	2358449471
    420 	.long	3217342131
    421 	.type	a2,@object
    422 	.size	a2,16
    423 	.align 16
    424 b2:
    425 	.long	3845454352
    426 	.long	1069952297
    427 	.long	2829679149
    428 	.long	1073771565
    429 	.type	b2,@object
    430 	.size	b2,16
    431 	.align 16
    432 P_TBL:
    433 	.long	0
    434 	.long	0
    435 	.long	0
    436 	.long	0
    437 	.long	0
    438 	.long	0
    439 	.long	0
    440 	.long	0
    441 	.long	1413754136
    442 	.long	1074340347
    443 	.long	856972295
    444 	.long	1017226790
    445 	.long	1413754136
    446 	.long	3221823995
    447 	.long	856972295
    448 	.long	3164710438
    449 	.type	P_TBL,@object
    450 	.size	P_TBL,64
    451 	.align 16
    452 SGN_TBL:
    453 	.long	0
    454 	.long	0
    455 	.long	0
    456 	.long	0
    457 	.long	0
    458 	.long	2147483648
    459 	.long	0
    460 	.long	2147483648
    461 	.long	0
    462 	.long	2147483648
    463 	.long	0
    464 	.long	2147483648
    465 	.long	0
    466 	.long	0
    467 	.long	0
    468 	.long	0
    469 	.type	SGN_TBL,@object
    470 	.size	SGN_TBL,64
    471 	.align 16
    472 ATAN_TBL:
    473 	.long	3390881280
    474 	.long	1067318733
    475 	.long	1411116779
    476 	.long	1018950063
    477 	.long	2985987840
    478 	.long	1067384211
    479 	.long	2088903695
    480 	.long	1018086027
    481 	.long	3148445184
    482 	.long	1067449685
    483 	.long	2044163806
    484 	.long	1017271335
    485 	.long	3667629184
    486 	.long	1067515494
    487 	.long	2353092775
    488 	.long	1019967309
    489 	.long	1546568832
    490 	.long	1067580954
    491 	.long	611991315
    492 	.long	1017602584
    493 	.long	3815996800
    494 	.long	1067646404
    495 	.long	466038598
    496 	.long	1019686426
    497 	.long	4050241920
    498 	.long	1067711845
    499 	.long	3265026328
    500 	.long	1019626952
    501 	.long	120454912
    502 	.long	1067777277
    503 	.long	1542207696
    504 	.long	1020155608
    505 	.long	2784639744
    506 	.long	1067842697
    507 	.long	3883834623
    508 	.long	1018602870
    509 	.long	1328010624
    510 	.long	1067908107
    511 	.long	1791097456
    512 	.long	1019053126
    513 	.long	2217794048
    514 	.long	1067973505
    515 	.long	551619938
    516 	.long	1018494194
    517 	.long	3333520000
    518 	.long	1068038891
    519 	.long	2390331823
    520 	.long	1019033022
    521 	.long	2557052032
    522 	.long	1068104265
    523 	.long	2423976108
    524 	.long	1019728674
    525 	.long	2067649536
    526 	.long	1068169626
    527 	.long	3757397745
    528 	.long	1018672362
    529 	.long	4047094784
    530 	.long	1068234973
    531 	.long	481613184
    532 	.long	1019275104
    533 	.long	2089853184
    534 	.long	1068300307
    535 	.long	1733914374
    536 	.long	1020124677
    537 	.long	2678003840
    538 	.long	1068365626
    539 	.long	1373600282
    540 	.long	1013935474
    541 	.long	3706496128
    542 	.long	1068430930
    543 	.long	1000610902
    544 	.long	1019673285
    545 	.long	3073179008
    546 	.long	1068496219
    547 	.long	1497143008
    548 	.long	1019900342
    549 	.long	2803716736
    550 	.long	1068562846
    551 	.long	1476677416
    552 	.long	1019444094
    553 	.long	3204984128
    554 	.long	1068628077
    555 	.long	1192335905
    556 	.long	1018748628
    557 	.long	831146624
    558 	.long	1068693273
    559 	.long	2733586224
    560 	.long	1018823295
    561 	.long	243029376
    562 	.long	1068758431
    563 	.long	950106081
    564 	.long	1019046675
    565 	.long	1735561920
    566 	.long	1068823549
    567 	.long	3546440856
    568 	.long	1020104712
    569 	.long	1339217792
    570 	.long	1068888626
    571 	.long	3028812387
    572 	.long	1019818321
    573 	.long	3706342144
    574 	.long	1068953659
    575 	.long	3814564029
    576 	.long	1017763871
    577 	.long	637726976
    578 	.long	1069018648
    579 	.long	3584007699
    580 	.long	1017976868
    581 	.long	1148779264
    582 	.long	1069083589
    583 	.long	2282532133
    584 	.long	1019483954
    585 	.long	1406131392
    586 	.long	1069148481
    587 	.long	1547359113
    588 	.long	1019786342
    589 	.long	1908875904
    590 	.long	1069213322
    591 	.long	1315508410
    592 	.long	1020009473
    593 	.long	3194947520
    594 	.long	1069278110
    595 	.long	3845393201
    596 	.long	1015803761
    597 	.long	1547487744
    598 	.long	1069342844
    599 	.long	3863107865
    600 	.long	1019810104
    601 	.long	1881061952
    602 	.long	1069407521
    603 	.long	4288343548
    604 	.long	1019687581
    605 	.long	563086336
    606 	.long	1069472140
    607 	.long	2582230241
    608 	.long	1020099350
    609 	.long	2594975552
    610 	.long	1069536698
    611 	.long	2306443764
    612 	.long	1019667244
    613 	.long	3438545024
    614 	.long	1069606573
    615 	.long	957455549
    616 	.long	1015587735
    617 	.long	4211357472
    618 	.long	1069670906
    619 	.long	2611778754
    620 	.long	1017877214
    621 	.long	3002835424
    622 	.long	1069735101
    623 	.long	235580458
    624 	.long	1020211685
    625 	.long	3905315424
    626 	.long	1069799150
    627 	.long	3630647617
    628 	.long	1018736849
    629 	.long	2849656576
    630 	.long	1069863047
    631 	.long	2412165062
    632 	.long	1019693004
    633 	.long	507429472
    634 	.long	1069926785
    635 	.long	1397750723
    636 	.long	1018412717
    637 	.long	2307470272
    638 	.long	1069990356
    639 	.long	1796470904
    640 	.long	1019796181
    641 	.long	1271814912
    642 	.long	1070053755
    643 	.long	189761565
    644 	.long	1016149115
    645 	.long	3800538144
    646 	.long	1070116974
    647 	.long	2524871582
    648 	.long	1018263353
    649 	.long	3916203552
    650 	.long	1070180008
    651 	.long	127848658
    652 	.long	1017672664
    653 	.long	457192032
    654 	.long	1070242851
    655 	.long	4020400938
    656 	.long	1019823010
    657 	.long	1385324704
    658 	.long	1070305495
    659 	.long	564511179
    660 	.long	1016079094
    661 	.long	2322869856
    662 	.long	1070367935
    663 	.long	2347103319
    664 	.long	1018927760
    665 	.long	3743438624
    666 	.long	1070430165
    667 	.long	877973862
    668 	.long	1019638162
    669 	.long	2392255552
    670 	.long	1070492180
    671 	.long	2432782267
    672 	.long	1018872629
    673 	.long	4180443328
    674 	.long	1070553973
    675 	.long	3102990015
    676 	.long	1020093101
    677 	.long	2547540832
    678 	.long	1070636485
    679 	.long	3877738253
    680 	.long	1017300424
    681 	.long	2735468912
    682 	.long	1070697461
    683 	.long	2446470256
    684 	.long	1019235378
    685 	.long	542633792
    686 	.long	1070757943
    687 	.long	583606328
    688 	.long	1018624131
    689 	.long	923265984
    690 	.long	1070817911
    691 	.long	1793926708
    692 	.long	1019714161
    693 	.long	918728448
    694 	.long	1070877348
    695 	.long	3726463586
    696 	.long	1019433296
    697 	.long	2572275008
    698 	.long	1070936237
    699 	.long	1845354238
    700 	.long	1019459238
    701 	.long	50974688
    702 	.long	1070994564
    703 	.long	983808064
    704 	.long	1016685418
    705 	.long	1105518320
    706 	.long	1071052313
    707 	.long	2357496692
    708 	.long	1015139882
    709 	.long	1264825328
    710 	.long	1071109472
    711 	.long	2244129354
    712 	.long	1019046344
    713 	.long	961157920
    714 	.long	1071166029
    715 	.long	3124185339
    716 	.long	1018541776
    717 	.long	1162701584
    718 	.long	1071221973
    719 	.long	1279780948
    720 	.long	1019268918
    721 	.long	3284935664
    722 	.long	1071277294
    723 	.long	2670033472
    724 	.long	1019833744
    725 	.long	497441888
    726 	.long	1071331985
    727 	.long	1032737410
    728 	.long	1019795212
    729 	.long	3377383904
    730 	.long	1071386036
    731 	.long	2356897182
    732 	.long	1020205553
    733 	.long	1126962000
    734 	.long	1071439443
    735 	.long	3723724586
    736 	.long	1015212418
    737 	.long	90291008
    738 	.long	1071492199
    739 	.long	4178672431
    740 	.long	1020186971
    741 	.long	190059536
    742 	.long	1071595741
    743 	.long	1763589807
    744 	.long	1019162163
    745 	.long	2497392840
    746 	.long	1071670654
    747 	.long	3036997041
    748 	.long	1020204325
    749 	.long	2616971944
    750 	.long	1071719773
    751 	.long	300151069
    752 	.long	1017041957
    753 	.long	2883518128
    754 	.long	1071767563
    755 	.long	2203981414
    756 	.long	1019190108
    757 	.long	1496354352
    758 	.long	1071814030
    759 	.long	332287966
    760 	.long	1016846435
    761 	.long	483276728
    762 	.long	1071859184
    763 	.long	653845024
    764 	.long	1018830914
    765 	.long	3097401072
    766 	.long	1071903039
    767 	.long	1514746408
    768 	.long	1019278972
    769 	.long	2737217248
    770 	.long	1071945615
    771 	.long	1358845067
    772 	.long	1017268275
    773 	.long	2072577560
    774 	.long	1071986933
    775 	.long	3041024735
    776 	.long	1019929672
    777 	.long	2266405656
    778 	.long	1072027017
    779 	.long	1271261130
    780 	.long	1012925070
    781 	.long	958652544
    782 	.long	1072065894
    783 	.long	2158017058
    784 	.long	1019955372
    785 	.long	3312993840
    786 	.long	1072103591
    787 	.long	765809169
    788 	.long	1019114443
    789 	.long	3177001304
    790 	.long	1072140139
    791 	.long	144180084
    792 	.long	1019822186
    793 	.long	3071642184
    794 	.long	1072175568
    795 	.long	4004602424
    796 	.long	1019420740
    797 	.long	4283953648
    798 	.long	1072209909
    799 	.long	1511950430
    800 	.long	1020176966
    801 	.long	1413754136
    802 	.long	1072243195
    803 	.long	856972295
    804 	.long	1015129638
    805 	.long	4073202944
    806 	.long	1072306725
    807 	.long	4068194804
    808 	.long	1019714860
    809 	.long	946117760
    810 	.long	1072366415
    811 	.long	694980733
    812 	.long	1020150135
    813 	.long	3980632032
    814 	.long	1072422512
    815 	.long	1313251280
    816 	.long	1019948709
    817 	.long	1468297112
    818 	.long	1072475260
    819 	.long	330111143
    820 	.long	1019809198
    821 	.long	3478063816
    822 	.long	1072524887
    823 	.long	2930067044
    824 	.long	1017784081
    825 	.long	1153979856
    826 	.long	1072571613
    827 	.long	2225786102
    828 	.long	1017634481
    829 	.long	2089828808
    830 	.long	1072615641
    831 	.long	474621367
    832 	.long	1017043414
    833 	.long	3531732632
    834 	.long	1072657163
    835 	.long	2276396220
    836 	.long	1018757240
    837 	.long	775214612
    838 	.long	1072694803
    839 	.long	3209744818
    840 	.long	1019963015
    841 	.long	662307284
    842 	.long	1072713319
    843 	.long	1381696763
    844 	.long	1019763781
    845 	.long	1192776652
    846 	.long	1072730830
    847 	.long	3017932994
    848 	.long	1015179769
    849 	.long	744202396
    850 	.long	1072747407
    851 	.long	2073854034
    852 	.long	1019512292
    853 	.long	8337908
    854 	.long	1072763115
    855 	.long	16004448
    856 	.long	1019599514
    857 	.long	3589868768
    858 	.long	1072778013
    859 	.long	1374369804
    860 	.long	1018019237
    861 	.long	121647320
    862 	.long	1072792159
    863 	.long	128481634
    864 	.long	1018115438
    865 	.long	2464923204
    866 	.long	1072805601
    867 	.long	1787331214
    868 	.long	1016798022
    869 	.long	4093304372
    870 	.long	1072830562
    871 	.long	3306868969
    872 	.long	1019384078
    873 	.long	1436891684
    874 	.long	1072853231
    875 	.long	676347266
    876 	.long	1017302183
    877 	.long	1104571840
    878 	.long	1072873890
    879 	.long	2870400285
    880 	.long	1019938149
    881 	.long	2037009832
    882 	.long	1072892781
    883 	.long	2956702105
    884 	.long	1016472908
    885 	.long	3139037960
    886 	.long	1072910111
    887 	.long	916057147
    888 	.long	1018364335
    889 	.long	1826698064
    890 	.long	1072926058
    891 	.long	2171961098
    892 	.long	1019669816
    893 	.long	1353941060
    894 	.long	1072940774
    895 	.long	1722928782
    896 	.long	1019926215
    897 	.long	1803191644
    898 	.long	1072954391
    899 	.long	1547878639
    900 	.long	1020259262
    901 	.long	1092591296
    902 	.long	1072967024
    903 	.long	3070107923
    904 	.long	1018320401
    905 	.long	2205372832
    906 	.long	1072978772
    907 	.long	787328196
    908 	.long	1014621351
    909 	.long	1291577100
    910 	.long	1072989723
    911 	.long	2964757301
    912 	.long	1020242528
    913 	.long	4234512804
    914 	.long	1072999952
    915 	.long	3136030038
    916 	.long	1017522144
    917 	.long	3248069132
    918 	.long	1073009528
    919 	.long	1506192355
    920 	.long	1018050472
    921 	.long	3932628500
    922 	.long	1073018509
    923 	.long	1045823554
    924 	.long	1019946655
    925 	.long	4195697848
    926 	.long	1073026948
    927 	.long	233443322
    928 	.long	1018917447
    929 	.long	2501811452
    930 	.long	1073034892
    931 	.long	901427976
    932 	.long	1017333852
    933 	.long	866379428
    934 	.long	1073049455
    935 	.long	2437443742
    936 	.long	1019678792
    937 	.long	1376865888
    938 	.long	1073062480
    939 	.long	3365790232
    940 	.long	1014547152
    941 	.long	3290094268
    942 	.long	1073074195
    943 	.long	3898947415
    944 	.long	1018683566
    945 	.long	354764884
    946 	.long	1073084787
    947 	.long	3854322404
    948 	.long	1019662058
    949 	.long	3332975496
    950 	.long	1073094406
    951 	.long	3171701655
    952 	.long	1017830922
    953 	.long	1141460088
    954 	.long	1073103181
    955 	.long	3946082701
    956 	.long	1020032019
    957 	.long	745761284
    958 	.long	1073111216
    959 	.long	1347210591
    960 	.long	1019106121
    961 	.long	1673304508
    962 	.long	1073118600
    963 	.long	1760606642
    964 	.long	1017324577
    965 	.long	983388240
    966 	.long	1073125409
    967 	.long	3740651204
    968 	.long	1019514104
    969 	.long	3895509100
    970 	.long	1073131706
    971 	.long	2409629983
    972 	.long	1020069322
    973 	.long	2128523668
    974 	.long	1073137548
    975 	.long	3045605368
    976 	.long	1018579174
    977 	.long	2075485692
    978 	.long	1073142981
    979 	.long	3720571789
    980 	.long	1017557436
    981 	.long	121855976
    982 	.long	1073148047
    983 	.long	2391744767
    984 	.long	1020160645
    985 	.long	4181733780
    986 	.long	1073152780
    987 	.long	995028816
    988 	.long	1019681295
    989 	.long	2887813280
    990 	.long	1073157214
    991 	.long	218733247
    992 	.long	1020003509
    993 	.long	2862180896
    994 	.long	1073161375
    995 	.long	2043806490
    996 	.long	1018602288
    997 	.long	3909375184
    998 	.long	1073168973
    999 	.long	1559903412
   1000 	.long	1020103444
   1001 	.long	3533966292
   1002 	.long	1073175738
   1003 	.long	734884149
   1004 	.long	1018462962
   1005 	.long	3815044608
   1006 	.long	1073181799
   1007 	.long	3630523428
   1008 	.long	1017250093
   1009 	.long	739639376
   1010 	.long	1073187261
   1011 	.long	4167476661
   1012 	.long	1020008277
   1013 	.long	1068309648
   1014 	.long	1073192207
   1015 	.long	2110061437
   1016 	.long	1019295858
   1017 	.long	2350566352
   1018 	.long	1073196707
   1019 	.long	582596516
   1020 	.long	1018568821
   1021 	.long	2529520024
   1022 	.long	1073200819
   1023 	.long	745552787
   1024 	.long	1019053165
   1025 	.long	1841667508
   1026 	.long	1073204591
   1027 	.long	3982568700
   1028 	.long	1016503327
   1029 	.long	2242261080
   1030 	.long	1073208063
   1031 	.long	3433582258
   1032 	.long	1016196763
   1033 	.long	715134328
   1034 	.long	1073211270
   1035 	.long	355901358
   1036 	.long	1020087916
   1037 	.long	2700735876
   1038 	.long	1073214240
   1039 	.long	3640957736
   1040 	.long	1019780205
   1041 	.long	141607580
   1042 	.long	1073217000
   1043 	.long	2488245051
   1044 	.long	1020262395
   1045 	.long	287934404
   1046 	.long	1073219570
   1047 	.long	2392691085
   1048 	.long	1019883292
   1049 	.long	2363373988
   1050 	.long	1073221969
   1051 	.long	4194561737
   1052 	.long	1019237447
   1053 	.long	3829340424
   1054 	.long	1073224214
   1055 	.long	429455526
   1056 	.long	1019490975
   1057 	.long	1988805928
   1058 	.long	1073226320
   1059 	.long	3029848706
   1060 	.long	1018104889
   1061 	.long	1647572320
   1062 	.long	1073230161
   1063 	.long	10289938
   1064 	.long	1017394880
   1065 	.long	3988000624
   1066 	.long	1073233576
   1067 	.long	1957559169
   1068 	.long	1019434816
   1069 	.long	4263843944
   1070 	.long	1073236633
   1071 	.long	204710264
   1072 	.long	1019908761
   1073 	.long	663197724
   1074 	.long	1073239386
   1075 	.long	1921757578
   1076 	.long	1019778948
   1077 	.long	3560800700
   1078 	.long	1073241876
   1079 	.long	3994348896
   1080 	.long	1019230192
   1081 	.long	2441785656
   1082 	.long	1073244141
   1083 	.long	871468611
   1084 	.long	1014800505
   1085 	.long	3277400272
   1086 	.long	1073246209
   1087 	.long	4092218139
   1088 	.long	1020040842
   1089 	.long	3951990120
   1090 	.long	1073248105
   1091 	.long	4276546478
   1092 	.long	1019763677
   1093 	.long	2737338540
   1094 	.long	1073249850
   1095 	.long	252776012
   1096 	.long	1018794951
   1097 	.long	1511361316
   1098 	.long	1073251461
   1099 	.long	3119653999
   1100 	.long	1018514803
   1101 	.long	3969162516
   1102 	.long	1073252952
   1103 	.long	1037069016
   1104 	.long	1016792900
   1105 	.long	413985240
   1106 	.long	1073254338
   1107 	.long	4110171432
   1108 	.long	1020001345
   1109 	.long	3681283576
   1110 	.long	1073255627
   1111 	.long	1463092818
   1112 	.long	1020260354
   1113 	.long	3146455488
   1114 	.long	1073256831
   1115 	.long	1031209123
   1116 	.long	1016554799
   1117 	.long	95214512
   1118 	.long	1073257958
   1119 	.long	1373808632
   1120 	.long	1019493031
   1121 	.long	4250240828
   1122 	.long	1073259013
   1123 	.long	3891047882
   1124 	.long	1020108730
   1125 	.long	1413754136
   1126 	.long	1073291771
   1127 	.long	856972295
   1128 	.long	1016178214
   1129 	.type	ATAN_TBL,@object
   1130 	.size	ATAN_TBL,2624
   1131 	.align 16
   1132 P_TBL2:
   1133 	.long	0
   1134 	.long	0
   1135 	.long	0
   1136 	.long	0
   1137 	.long	0
   1138 	.long	0
   1139 	.long	0
   1140 	.long	0
   1141 	.long	856972295
   1142 	.long	1017226790
   1143 	.long	1413754136
   1144 	.long	1074340347
   1145 	.long	856972295
   1146 	.long	3164710438
   1147 	.long	1413754136
   1148 	.long	3221823995
   1149 	.type	P_TBL2,@object
   1150 	.size	P_TBL2,64
   1151 	.align 16
   1152 SELECT_B:
   1153 	.long	0
   1154 	.long	0
   1155 	.long	4294967295
   1156 	.long	4294967295
   1157 	.long	0
   1158 	.long	0
   1159 	.long	4294967295
   1160 	.long	4294967295
   1161 	.long	4294967295
   1162 	.long	4294967295
   1163 	.long	0
   1164 	.long	0
   1165 	.long	4294967295
   1166 	.long	4294967295
   1167 	.long	0
   1168 	.long	0
   1169 	.type	SELECT_B,@object
   1170 	.size	SELECT_B,64
   1171 	.align 16
   1172 SGNMASK:
   1173 	.long	0
   1174 	.long	2147483648
   1175 	.long	0
   1176 	.long	2147483648
   1177 	.type	SGNMASK,@object
   1178 	.size	SGNMASK,16
   1179 	.align 16
   1180 pi_table:
   1181 	.long	1413754136
   1182 	.long	1074340347
   1183 	.long	856972295
   1184 	.long	1017226790
   1185 	.type	pi_table,@object
   1186 	.size	pi_table,16
   1187 	.align 16
   1188 pi2_table:
   1189 	.long	1413754136
   1190 	.long	1073291771
   1191 	.long	856972295
   1192 	.long	1016178214
   1193 	.type	pi2_table,@object
   1194 	.size	pi2_table,16
   1195 	.align 16
   1196 pi4_table:
   1197 	.long	1413754136
   1198 	.long	1072243195
   1199 	.long	856972295
   1200 	.long	1015129638
   1201 	.type	pi4_table,@object
   1202 	.size	pi4_table,16
   1203 	.align 4
   1204 POW55:
   1205 	.long	0
   1206 	.long	1130364928
   1207 	.type	POW55,@object
   1208 	.size	POW55,8
   1209 	.align 4
   1210 INVEXPMASK:
   1211 	.long	4294967295
   1212 	.long	2148532223
   1213 	.type	INVEXPMASK,@object
   1214 	.size	INVEXPMASK,8
   1215 	.align 4
   1216 EXPMASK:
   1217 	.long	0
   1218 	.long	1072693248
   1219 	.type	EXPMASK,@object
   1220 	.size	EXPMASK,8
   1221 	.data
   1222 	.section .note.GNU-stack, ""
   1223 // -- Begin DWARF2 SEGMENT .eh_frame
   1224 	.section .eh_frame,"a",@progbits
   1225 .eh_frame_seg:
   1226 	.align 1
   1227 	.4byte 0x00000014
   1228 	.8byte 0x00527a0100000000
   1229 	.8byte 0x08070c1b01107801
   1230 	.4byte 0x00000190
   1231 	.4byte 0x0000001c
   1232 	.4byte 0x0000001c
   1233 	.4byte ..___tag_value_atan2.1-.
   1234 	.4byte ..___tag_value_atan2.5-..___tag_value_atan2.1
   1235 	.2byte 0x0400
   1236 	.4byte ..___tag_value_atan2.3-..___tag_value_atan2.1
   1237 	.2byte 0x200e
   1238 	.byte 0x04
   1239 	.4byte ..___tag_value_atan2.4-..___tag_value_atan2.3
   1240 	.2byte 0x080e
   1241 	.byte 0x00
   1242 # End
   1243