|
|
1.1 root 1: # double float sin(),cos()
2: #coefficients are from Hart & Cheney SIN3370 (18.80D)
3: .text
4: .align 1
5: .globl _sin
6: .globl _cos
7: _sin:
8: .word 0x03c0
9: clrl r9
10: movd 4(ap),r0
11: jgeq range
12: movl $2,r9
13: jbr negarg
14:
15: .align 1
16: _cos:
17: .word 0x0fc0
18: movl $1,r9
19: movd 4(ap),r0
20: jgeq range
21: negarg:
22: mnegd r0,r0
23:
24: range:
25: emodd twoopi,twoopix,r0,r8,r6
26: addl2 r9,r8
27: bicb2 $~03,r8
28: caseb r8,$0,$3
29: bse: .word qda-bse,qdb-bse,qdc-bse,qdd-bse
30: qdb: subd3 r6,$0d1.0e+0,r6
31: jbr qda
32: qdc: mnegd r6,r6
33: jbr qda
34: qdd: subd2 $0d1.0e+0,r6
35: qda:
36: muld3 r6,r6,r8
37: polyd r8,$4,pcoef
38: muld2 r0,r6
39: polyd r8,$4,qcoef
40: divd3 r0,r6,r0
41: ret
42: .data
43: .align 2
44: twoopi:.double 0d6.36619772367581340000e-01
45: qcoef:.double 0d1.00000000000000000000e+00
46: .double 0d1.32653490878613630000e+02
47: .double 0d9.46309610153820810000e+03
48: .double 0d4.08179225234329970000e+05
49: .double 0d8.64455865292253430000e+06
50: pcoef:.double 0d1.45968840666576870000e+02
51: .double 0d-1.38472724998245280000e+04
52: .double 0d4.40103053537526640000e+05
53: .double 0d-4.94290810090284410000e+06
54: .double 0d1.35788409787737560000e+07
55: twoopix: .byte 0x29
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.