home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
471
/
rccl100
< prev
next >
Wrap
Text File
|
1987-03-02
|
1KB
|
62 lines
# double float sin(),cos()
#coefficients are from Hart & Cheney SIN3370 (18.80D)
.text
.align 1
.globl _sin
.globl _cos
_sin:
.word 0x03c0
clrl r9
movd 4(ap),r0
jgeq range
movl $2,r9
jbr negarg
.align 1
_cos:
.word 0x0fc0
movl $1,r9
movd 4(ap),r0
jgeq range
negarg:
mnegd r0,r0
range:
emodd twoopi,twoopix,r0,r8,r6
addl2 r9,r8
bicb2 $~03,r8
caseb r8,$0,$3
bse: .word qda-bse,qdb-bse,qdc-bse,qdd-bse
qdb: subd3 r6,$0d1.0e+0,r6
jbr qda
qdc: mnegd r6,r6
jbr qda
qdd: subd2 $0d1.0e+0,r6
qda:
cvtdf r0,r0
cvtdf r6,r6
cvtdf r8,r8
mulf3 r6,r6,r8
polyf r8,$4,pcoef
mulf2 r0,r6
polyf r8,$4,qcoef
divf3 r0,r6,r0
cvtfd r0,r0
ret
.data
.align 2
twoopi:.double 0d6.36619772367581340000e-01
qcoef:.float 0d1.00000000000000000000e+00
.float 0d1.32653490878613630000e+02
.float 0d9.46309610153820810000e+03
.float 0d4.08179225234329970000e+05
.float 0d8.64455865292253430000e+06
pcoef:.float 0d1.45968840666576870000e+02
.float 0d-1.38472724998245280000e+04
.float 0d4.40103053537526640000e+05
.float 0d-4.94290810090284410000e+06
.float 0d1.35788409787737560000e+07
twoopix: .byte 0x29