xref: /csrg-svn/old/libm/liboldnm/sin.s (revision 19998)
1*19998Sdist# double float sin(),cos()
2*19998Sdist#coefficients are from Hart & Cheney  SIN3370 (18.80D)
3*19998Sdist.text
4*19998Sdist.align 1
5*19998Sdist.globl _sin
6*19998Sdist.globl _cos
7*19998Sdist_sin:
8*19998Sdist	.word 0x03c0
9*19998Sdist	bispsw	$0xe0
10*19998Sdist	clrl	r9
11*19998Sdist	movd	4(ap),r0
12*19998Sdist	jgeq	range
13*19998Sdist	movl	$2,r9
14*19998Sdist	jbr	negarg
15*19998Sdist
16*19998Sdist.align 1
17*19998Sdist_cos:
18*19998Sdist	.word	0x0fc0
19*19998Sdist	bispsw	$0xe0
20*19998Sdist	movl	$1,r9
21*19998Sdist	movd	4(ap),r0
22*19998Sdist	jgeq	range
23*19998Sdistnegarg:
24*19998Sdist	mnegd	r0,r0
25*19998Sdist
26*19998Sdistrange:
27*19998Sdist	emodd	twoopi,twoopix,r0,r8,r6
28*19998Sdist	addl2	r9,r8
29*19998Sdist	bicb2	$~03,r8
30*19998Sdist	caseb	r8,$0,$3
31*19998Sdistbse:	.word	qda-bse,qdb-bse,qdc-bse,qdd-bse
32*19998Sdistqdb:	subd3	r6,$0d1.0e+0,r6
33*19998Sdist	jbr	qda
34*19998Sdistqdc:	mnegd	r6,r6
35*19998Sdist	jbr	qda
36*19998Sdistqdd:	subd2	$0d1.0e+0,r6
37*19998Sdistqda:
38*19998Sdist	muld3	r6,r6,r8
39*19998Sdist	polyd	r8,$4,pcoef
40*19998Sdist	muld2	r0,r6
41*19998Sdist	polyd	r8,$4,qcoef
42*19998Sdist	divd3	r0,r6,r0
43*19998Sdist	ret
44*19998Sdist.data
45*19998Sdist.align 2
46*19998Sdisttwoopi:.double	0d6.36619772367581340000e-01
47*19998Sdistqcoef:.double	0d1.00000000000000000000e+00
48*19998Sdist .double	0d1.32653490878613630000e+02
49*19998Sdist .double	0d9.46309610153820810000e+03
50*19998Sdist .double	0d4.08179225234329970000e+05
51*19998Sdist .double	0d8.64455865292253430000e+06
52*19998Sdistpcoef:.double	0d1.45968840666576870000e+02
53*19998Sdist .double	0d-1.38472724998245280000e+04
54*19998Sdist .double	0d4.40103053537526640000e+05
55*19998Sdist .double	0d-4.94290810090284410000e+06
56*19998Sdist .double	0d1.35788409787737560000e+07
57*19998Sdisttwoopix: .byte 0x29
58