|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.