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