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

1.1       root        1: /*     @(#)atan.c      4.1/4.2         10/31/84  CCI-CPG       */
                      2: 
                      3: 
                      4: /*
                      5:        Double-precision arctangent function recoded with
                      6:        new algorithm polynomial at CCI-CPG.
                      7:        Coefficients are #4969 from Hart & etc. (17.92D)
                      8: 
                      9:        atan returns the value of the arctangent of its
                     10:        argument in the range [-pi/2,pi/2].
                     11: 
                     12:        atan2 returns the arctangent of arg1/arg2
                     13:        in the range [-pi,pi].
                     14: 
                     15:        there are no error returns.
                     16: 
                     17: */
                     18:        .data
                     19:        .align  2
                     20: _sq2p1: .long  0x411a8279, 0x99fcef32 # .double 2.414213562373095
                     21:        .align  2
                     22: _sq2m1: .long  0x3fd413cc, 0xcfe77992 # .double 0.41421356237309505
                     23:        .align  2
                     24: _pio2: .long   0x40c90fda, 0xa22168c2 # .double 1.5707963267948966
                     25:        .align  2
                     26: _pio4: .long   0x40490fda, 0xa22168c2 # .double 0.78539816339744831
                     27:        .align  2
                     28: _p0:   .long   0x40800000, 0x00000000 # .double 1
                     29:        .align  2
                     30: _p1:   .long   0xbfaaaaaa, 0xaaaaa984 # .double -0.33333333333333129
                     31:        .align  2
                     32: _p2:   .long   0x3f4ccccc, 0xccca47cb # .double 0.19999999999942712
                     33:        .align  2
                     34: _p3:   .long   0xbf124924, 0x91341847 # .double -0.14285714279414943
                     35:        .align  2
                     36: _p4:   .long   0x3ee38e38, 0x685c2f79 # .double 0.11111110752565144
                     37:        .align  2
                     38: _p5:   .long   0xbeba2e7b, 0x6e11c9ad # .double -0.090908970161966385
                     39:        .align  2
                     40: _p6:   .long   0x3e9d887d, 0x2d47ecb2 # .double 0.076920488304486365
                     41:        .align  2
                     42: _p7:   .long   0xbe887541, 0x84d86747 # .double -0.066629897944085704
                     43:        .align  2
                     44: _p8:   .long   0x3e6f7fbd, 0x60c7567d # .double 0.05847143150136491
                     45:        .align  2
                     46: _p9:   .long   0xbe4e48e7, 0x446d54d6 # .double -0.0503624948385852
                     47:        .align  2
                     48: _p10:  .long   0x3e1b9ee6, 0x004c28d5 # .double 0.03799333423809
                     49:        .align  2
                     50: _p11:  .long   0xbd921adf, 0x2d9e4583 # .double -0.017835079092898
                     51:        .text
                     52: LL0:   .align  1
                     53:        .globl  _atan
                     54:        .set    L28,0x0
                     55:        .data
                     56:        .text
                     57: _atan: .word   L28
                     58:        tstl    4(fp)
                     59:        jleq    L33
                     60:        pushl   8(fp)
                     61:        pushl   4(fp)
                     62:        callf   $12,_satan
                     63:        ret
                     64: L33:   lnd     4(fp)
                     65:        pushd
                     66:        callf   $12,_satan
                     67:        lnd     r0
                     68:        std     r0
                     69:        ret
                     70:        .align  1
                     71:        .globl  _atan2
                     72:        .set    L35,0xc
                     73:        .data
                     74:        .text
                     75:        .data
                     76:        .align  2
                     77: L51:   .long   0x40800000, 0x00000000 # .double 1
                     78:        .text
                     79:        .set    L44,0xc
                     80:        .data
                     81:        .text
                     82:        .set    L54,0x0
                     83:        .data
                     84:        .text
                     85: _atan2: .word  L35
                     86:        subl3   $60,fp,sp
                     87:        ldd     4(fp)
                     88:        addd    12(fp)
                     89:        cmpd    4(fp)
                     90:        jneq    L39
                     91:        tstl    4(fp)
                     92:        jlss    L40
                     93:        movl    _pio2+4,r1
                     94:        movl    _pio2,r0
                     95:        ret
                     96: L40:   lnd     _pio2
                     97:        jbr     L2000000
                     98: L2000003:
                     99:        lnd     4(fp)
                    100:        divd    12(fp)
                    101:        pushd
                    102:        callf   $12,_satan
                    103:        movl    r1,-56(fp)
                    104:        movl    r0,-60(fp)
                    105:        ldd     _pio2
                    106:        addd    _pio2
                    107: L2000001:
                    108:        subd    -60(fp)
                    109:        jbr     L2000000
                    110: L2000005:
                    111:        tstl    4(fp)
                    112:        jgeq    L2000003
                    113:        ldd     4(fp)
                    114:        divd    12(fp)
                    115:        pushd
                    116:        callf   $12,_satan
                    117:        lnd     _pio2
                    118:        subd    _pio2
                    119:        addd    r0
                    120: L2000000:
                    121:        std     r0
                    122:        ret
                    123: L39:   tstl    12(fp)
                    124:        jlss    L2000005
                    125:        tstl    4(fp)
                    126:        jleq    L43
                    127:        ldd     4(fp)
                    128:        divd    12(fp)
                    129:        pushd
                    130:        callf   $12,_satan
                    131:        ret
                    132: L43:   lnd     4(fp)
                    133:        divd    12(fp)
                    134:        pushd
                    135:        callf   $12,_satan
                    136:        lnd     r0
                    137:        jbr     L2000000
                    138:        .align  1
                    139: _satan: .word  L44
                    140:        subl3   $60,fp,sp
                    141:        cmpd2   4(fp),_sq2m1
                    142:        jgeq    L49
                    143:        pushl   8(fp)
                    144:        pushl   4(fp)
                    145:        callf   $12,_xatan
                    146:        ret
                    147: L49:   cmpd2   4(fp),_sq2p1
                    148:        jleq    L50
                    149:        ldd     L51
                    150:        divd    4(fp)
                    151:        pushd
                    152:        callf   $12,_xatan
                    153:        movl    r1,-56(fp)
                    154:        movl    r0,-60(fp)
                    155:        ldd     _pio2
                    156:        jbr     L2000001
                    157: L50:   ldd     4(fp)
                    158:        subd    L51
                    159:        std     r0
                    160:        ldd     4(fp)
                    161:        addd    L51
                    162:        std     r2
                    163:        ldd     r0
                    164:        divd    r2
                    165:        pushd
                    166:        callf   $12,_xatan
                    167:        ldd     r0
                    168:        addd    _pio4
                    169:        jbr     L2000000
                    170:        .align  1
                    171: _xatan: .word  L54
                    172:        subl3   $68,fp,sp
                    173:        ldd     4(fp)
                    174:        muld    4(fp)
                    175:        std     -60(fp)
                    176:        ldd     _p11
                    177:        muld    -60(fp)
                    178:        addd    _p10
                    179:        muld    -60(fp)
                    180:        addd    _p9
                    181:        muld    -60(fp)
                    182:        addd    _p8
                    183:        muld    -60(fp)
                    184:        addd    _p7
                    185:        muld    -60(fp)
                    186:        addd    _p6
                    187:        muld    -60(fp)
                    188:        addd    _p5
                    189:        muld    -60(fp)
                    190:        addd    _p4
                    191:        muld    -60(fp)
                    192:        addd    _p3
                    193:        muld    -60(fp)
                    194:        addd    _p2
                    195:        muld    -60(fp)
                    196:        addd    _p1
                    197:        muld    -60(fp)
                    198:        addd    _p0
                    199:        muld    4(fp)
                    200:        std     -68(fp)
                    201:        movl    -64(fp),r1
                    202:        movl    -68(fp),r0
                    203:        ret

unix.superglobalmegacorp.com

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