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