File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / usr / src / usr.lib / libm / sin.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (6 years, 11 months ago) by root
Branches: bsd, MAIN
CVS tags: v12b, HEAD
Power 6/32 Unix version 1.2b

/*	@(#)sin.s	4.1/4.2		10/31/84 CCI-CPG  */

/*
	Double-precision floating point sin/cos function.
	Calls modf.
	Error criterion: absolute but fast!
	Coefficients are #3305 from Hart & etc.(18.79D).
*/
	.data
	.align	2
_twoopi:.long	0x4022f983, 0x6e4e4415 # .double 0.63661977236758134
	.align	2
_p0:	.long	0x40c90fda, 0xa22168c2 # .double 1.5707963267948966
	.align	2
_p1:	.long	0xc0255de7, 0x312df289 # .double -0.64596409750624607
	.align	2
_p2:	.long	0x3ea335e3, 0x3bad4fbb # .double 0.079692626246163792
	.align	2
_p3:	.long	0xbc996966, 0x731241b3 # .double -0.00468175413529264
	.align	2
_p4:	.long	0x3a283c1a, 0x41fa6b71 # .double 0.00016044118467438022
	.align	2
_p5:	.long	0xb77183a6, 0xab14afa2 # .double -3.5988429472773519e-06
	.align	2
_p6:	.long	0x3474799d, 0x8085b4eb # .double 5.692128547011138e-08
	.align	2
_p7:	.long	0xb137ba3b, 0xaacb5c1c # .double -6.6839665286786e-10
	.align	2
_p8:	.long	0x2dce43a2, 0xed891f06 # .double 5.86238129563e-12
	.text
LL0:	.align	1
	.globl	_cos
	.set	L22,0x0
	.data
	.text
_cos:	.word	L22
	tstl	4(fp)
	jgeq	L27
	lnd	4(fp)
	std	4(fp)
L27:	pushl	$1
	pushl	8(fp)
	pushl	4(fp)
	callf	$16,_sinus
	ret
	.align	1
	.globl	_sin
	.set	L29,0x0
	.data
	.text
	.data
	.align	2
L40:	.long	0x47fff800, 0x00000000 # .double 32764
	.text
	.data
	.align	2
L41:	.long	0x3f800000, 0x00000000 # .double 0.25
	.text
	.data
	.align	2
L42:	.long	0x41800000, 0x00000000 # .double 4
	.text
	.data
	.align	2
L45:	.long	0x40800000, 0x00000000 # .double 1
	.text
	.set	L33,0x0
	.data
	.text
_sin:	.word	L29
	pushl	$0
	pushl	8(fp)
	pushl	4(fp)
	callf	$16,_sinus
	ret
	.align	1
_sinus:	.word	L33
	subl3	$112,fp,sp
	movl	8(fp),-80(fp)
	movl	4(fp),-84(fp)
	jgeq	L38
	lnd	-84(fp)
	std	-84(fp)
	addl2	$2,12(fp)
L38:	ldd	-84(fp)
	muld	_twoopi
	std	-84(fp)
	cmpd2	-84(fp),L40
	jleq	L39
	subl3	$60,fp,-(sp)
	pushl	-80(fp)
	pushl	-84(fp)
	callf	$16,_modf
	movl	r1,-88(fp)
	movl	r0,-92(fp)
	cvld	12(fp)
	addd	-60(fp)
	std	-60(fp)
	subl3	$68,fp,-(sp)
	ldd	L41
	muld	-60(fp)
	pushd
	callf	$16,_modf
	ldd	L42
	muld	-68(fp)
	std	r0
	ldd	-60(fp)
	subd	r0
	cvdl	12(fp)
	jbr	L43
L39:	ldd	-84(fp)
	cvdl	-96(fp)
	cvld	-96(fp)
	std	r0
	ldd	-84(fp)
	subd	r0
	std	-92(fp)
	addl3	-96(fp),12(fp),r0
	andl3	$3,r0,12(fp)
L43:	bitl	$1,12(fp)
	jeql	L44
	ldd	L45
	subd	-92(fp)
	std	-92(fp)
L44:	cmpl	12(fp),$1
	jleq	L46
	lnd	-92(fp)
	std	-92(fp)
L46:	ldd	-92(fp)
	muld	-92(fp)
	std	-76(fp)
	ldd	_p8
	muld	-76(fp)
	addd	_p7
	muld	-76(fp)
	addd	_p6
	muld	-76(fp)
	addd	_p5
	muld	-76(fp)
	addd	_p4
	muld	-76(fp)
	addd	_p3
	muld	-76(fp)
	addd	_p2
	muld	-76(fp)
	addd	_p1
	muld	-76(fp)
	addd	_p0
	std	-104(fp)
	muld	-92(fp)
	std	r0
	ret


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.