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// 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 80ENTRY(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: 411END(atan2) 412# -- End atan2 413 .section .rodata, "a" 414 .align 16 415 .align 16 416a2: 417 .long 2006262985 418 .long 1069310863 419 .long 2358449471 420 .long 3217342131 421 .type a2,@object 422 .size a2,16 423 .align 16 424b2: 425 .long 3845454352 426 .long 1069952297 427 .long 2829679149 428 .long 1073771565 429 .type b2,@object 430 .size b2,16 431 .align 16 432P_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 452SGN_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 472ATAN_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 1132P_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 1152SELECT_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 1172SGNMASK: 1173 .long 0 1174 .long 2147483648 1175 .long 0 1176 .long 2147483648 1177 .type SGNMASK,@object 1178 .size SGNMASK,16 1179 .align 16 1180pi_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 1188pi2_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 1196pi4_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 1204POW55: 1205 .long 0 1206 .long 1130364928 1207 .type POW55,@object 1208 .size POW55,8 1209 .align 4 1210INVEXPMASK: 1211 .long 4294967295 1212 .long 2148532223 1213 .type INVEXPMASK,@object 1214 .size INVEXPMASK,8 1215 .align 4 1216EXPMASK: 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