|
|
Power 6/32 Unix version 1.2b
/* @(#)sin.s 4.1/4.2 10/31/84 CCI-CPG */ /* Double-precision floating point sin/cos function. Calls modf. Error criterion: absolute but fast! Coefficients are #3305 from Hart & etc.(18.79D). */ .data .align 2 _twoopi:.long 0x4022f983, 0x6e4e4415 # .double 0.63661977236758134 .align 2 _p0: .long 0x40c90fda, 0xa22168c2 # .double 1.5707963267948966 .align 2 _p1: .long 0xc0255de7, 0x312df289 # .double -0.64596409750624607 .align 2 _p2: .long 0x3ea335e3, 0x3bad4fbb # .double 0.079692626246163792 .align 2 _p3: .long 0xbc996966, 0x731241b3 # .double -0.00468175413529264 .align 2 _p4: .long 0x3a283c1a, 0x41fa6b71 # .double 0.00016044118467438022 .align 2 _p5: .long 0xb77183a6, 0xab14afa2 # .double -3.5988429472773519e-06 .align 2 _p6: .long 0x3474799d, 0x8085b4eb # .double 5.692128547011138e-08 .align 2 _p7: .long 0xb137ba3b, 0xaacb5c1c # .double -6.6839665286786e-10 .align 2 _p8: .long 0x2dce43a2, 0xed891f06 # .double 5.86238129563e-12 .text LL0: .align 1 .globl _cos .set L22,0x0 .data .text _cos: .word L22 tstl 4(fp) jgeq L27 lnd 4(fp) std 4(fp) L27: pushl $1 pushl 8(fp) pushl 4(fp) callf $16,_sinus ret .align 1 .globl _sin .set L29,0x0 .data .text .data .align 2 L40: .long 0x47fff800, 0x00000000 # .double 32764 .text .data .align 2 L41: .long 0x3f800000, 0x00000000 # .double 0.25 .text .data .align 2 L42: .long 0x41800000, 0x00000000 # .double 4 .text .data .align 2 L45: .long 0x40800000, 0x00000000 # .double 1 .text .set L33,0x0 .data .text _sin: .word L29 pushl $0 pushl 8(fp) pushl 4(fp) callf $16,_sinus ret .align 1 _sinus: .word L33 subl3 $112,fp,sp movl 8(fp),-80(fp) movl 4(fp),-84(fp) jgeq L38 lnd -84(fp) std -84(fp) addl2 $2,12(fp) L38: ldd -84(fp) muld _twoopi std -84(fp) cmpd2 -84(fp),L40 jleq L39 subl3 $60,fp,-(sp) pushl -80(fp) pushl -84(fp) callf $16,_modf movl r1,-88(fp) movl r0,-92(fp) cvld 12(fp) addd -60(fp) std -60(fp) subl3 $68,fp,-(sp) ldd L41 muld -60(fp) pushd callf $16,_modf ldd L42 muld -68(fp) std r0 ldd -60(fp) subd r0 cvdl 12(fp) jbr L43 L39: ldd -84(fp) cvdl -96(fp) cvld -96(fp) std r0 ldd -84(fp) subd r0 std -92(fp) addl3 -96(fp),12(fp),r0 andl3 $3,r0,12(fp) L43: bitl $1,12(fp) jeql L44 ldd L45 subd -92(fp) std -92(fp) L44: cmpl 12(fp),$1 jleq L46 lnd -92(fp) std -92(fp) L46: ldd -92(fp) muld -92(fp) std -76(fp) ldd _p8 muld -76(fp) addd _p7 muld -76(fp) addd _p6 muld -76(fp) addd _p5 muld -76(fp) addd _p4 muld -76(fp) addd _p3 muld -76(fp) addd _p2 muld -76(fp) addd _p1 muld -76(fp) addd _p0 std -104(fp) muld -92(fp) std r0 ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.