Commit | Line | Data |
---|---|---|
7049871b TL |
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 3 | |
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 |