Bell 32V development
[unix-history] / usr / src / libnm / sin.s
CommitLineData
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
21negarg:
22 mnegd r0,r0
23
24range:
25 emodd twoopi,twoopix,r0,r8,r6
26 addl2 r9,r8
27 bicb2 $~03,r8
28 caseb r8,$0,$3
29bse: .word qda-bse,qdb-bse,qdc-bse,qdd-bse
30qdb: subd3 r6,$0d1.0e+0,r6
31 jbr qda
32qdc: mnegd r6,r6
33 jbr qda
34qdd: subd2 $0d1.0e+0,r6
35qda:
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
44twoopi:.double 0d6.36619772367581340000e-01
45qcoef:.double 0d1.00000000000000000000e+00
46 .double 0d1.32653490878613630000e+02
47 .double 0d9.46309610153820810000e+03
48 .double 0d4.08179225234329970000e+05
49 .double 0d8.64455865292253430000e+06
50pcoef:.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
55twoopix: .byte 0x29