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