Annotation of cci/usr/src/usr.lib/libm/sin.s, revision 1.1.1.1

1.1       root        1: /*     @(#)sin.s       4.1/4.2         10/31/84 CCI-CPG  */
                      2: 
                      3: /*
                      4:        Double-precision floating point sin/cos function.
                      5:        Calls modf.
                      6:        Error criterion: absolute but fast!
                      7:        Coefficients are #3305 from Hart & etc.(18.79D).
                      8: */
                      9:        .data
                     10:        .align  2
                     11: _twoopi:.long  0x4022f983, 0x6e4e4415 # .double 0.63661977236758134
                     12:        .align  2
                     13: _p0:   .long   0x40c90fda, 0xa22168c2 # .double 1.5707963267948966
                     14:        .align  2
                     15: _p1:   .long   0xc0255de7, 0x312df289 # .double -0.64596409750624607
                     16:        .align  2
                     17: _p2:   .long   0x3ea335e3, 0x3bad4fbb # .double 0.079692626246163792
                     18:        .align  2
                     19: _p3:   .long   0xbc996966, 0x731241b3 # .double -0.00468175413529264
                     20:        .align  2
                     21: _p4:   .long   0x3a283c1a, 0x41fa6b71 # .double 0.00016044118467438022
                     22:        .align  2
                     23: _p5:   .long   0xb77183a6, 0xab14afa2 # .double -3.5988429472773519e-06
                     24:        .align  2
                     25: _p6:   .long   0x3474799d, 0x8085b4eb # .double 5.692128547011138e-08
                     26:        .align  2
                     27: _p7:   .long   0xb137ba3b, 0xaacb5c1c # .double -6.6839665286786e-10
                     28:        .align  2
                     29: _p8:   .long   0x2dce43a2, 0xed891f06 # .double 5.86238129563e-12
                     30:        .text
                     31: LL0:   .align  1
                     32:        .globl  _cos
                     33:        .set    L22,0x0
                     34:        .data
                     35:        .text
                     36: _cos:  .word   L22
                     37:        tstl    4(fp)
                     38:        jgeq    L27
                     39:        lnd     4(fp)
                     40:        std     4(fp)
                     41: L27:   pushl   $1
                     42:        pushl   8(fp)
                     43:        pushl   4(fp)
                     44:        callf   $16,_sinus
                     45:        ret
                     46:        .align  1
                     47:        .globl  _sin
                     48:        .set    L29,0x0
                     49:        .data
                     50:        .text
                     51:        .data
                     52:        .align  2
                     53: L40:   .long   0x47fff800, 0x00000000 # .double 32764
                     54:        .text
                     55:        .data
                     56:        .align  2
                     57: L41:   .long   0x3f800000, 0x00000000 # .double 0.25
                     58:        .text
                     59:        .data
                     60:        .align  2
                     61: L42:   .long   0x41800000, 0x00000000 # .double 4
                     62:        .text
                     63:        .data
                     64:        .align  2
                     65: L45:   .long   0x40800000, 0x00000000 # .double 1
                     66:        .text
                     67:        .set    L33,0x0
                     68:        .data
                     69:        .text
                     70: _sin:  .word   L29
                     71:        pushl   $0
                     72:        pushl   8(fp)
                     73:        pushl   4(fp)
                     74:        callf   $16,_sinus
                     75:        ret
                     76:        .align  1
                     77: _sinus:        .word   L33
                     78:        subl3   $112,fp,sp
                     79:        movl    8(fp),-80(fp)
                     80:        movl    4(fp),-84(fp)
                     81:        jgeq    L38
                     82:        lnd     -84(fp)
                     83:        std     -84(fp)
                     84:        addl2   $2,12(fp)
                     85: L38:   ldd     -84(fp)
                     86:        muld    _twoopi
                     87:        std     -84(fp)
                     88:        cmpd2   -84(fp),L40
                     89:        jleq    L39
                     90:        subl3   $60,fp,-(sp)
                     91:        pushl   -80(fp)
                     92:        pushl   -84(fp)
                     93:        callf   $16,_modf
                     94:        movl    r1,-88(fp)
                     95:        movl    r0,-92(fp)
                     96:        cvld    12(fp)
                     97:        addd    -60(fp)
                     98:        std     -60(fp)
                     99:        subl3   $68,fp,-(sp)
                    100:        ldd     L41
                    101:        muld    -60(fp)
                    102:        pushd
                    103:        callf   $16,_modf
                    104:        ldd     L42
                    105:        muld    -68(fp)
                    106:        std     r0
                    107:        ldd     -60(fp)
                    108:        subd    r0
                    109:        cvdl    12(fp)
                    110:        jbr     L43
                    111: L39:   ldd     -84(fp)
                    112:        cvdl    -96(fp)
                    113:        cvld    -96(fp)
                    114:        std     r0
                    115:        ldd     -84(fp)
                    116:        subd    r0
                    117:        std     -92(fp)
                    118:        addl3   -96(fp),12(fp),r0
                    119:        andl3   $3,r0,12(fp)
                    120: L43:   bitl    $1,12(fp)
                    121:        jeql    L44
                    122:        ldd     L45
                    123:        subd    -92(fp)
                    124:        std     -92(fp)
                    125: L44:   cmpl    12(fp),$1
                    126:        jleq    L46
                    127:        lnd     -92(fp)
                    128:        std     -92(fp)
                    129: L46:   ldd     -92(fp)
                    130:        muld    -92(fp)
                    131:        std     -76(fp)
                    132:        ldd     _p8
                    133:        muld    -76(fp)
                    134:        addd    _p7
                    135:        muld    -76(fp)
                    136:        addd    _p6
                    137:        muld    -76(fp)
                    138:        addd    _p5
                    139:        muld    -76(fp)
                    140:        addd    _p4
                    141:        muld    -76(fp)
                    142:        addd    _p3
                    143:        muld    -76(fp)
                    144:        addd    _p2
                    145:        muld    -76(fp)
                    146:        addd    _p1
                    147:        muld    -76(fp)
                    148:        addd    _p0
                    149:        std     -104(fp)
                    150:        muld    -92(fp)
                    151:        std     r0
                    152:        ret
                    153: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.