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

/*	@(#)atan.c	4.1/4.2		10/31/84  CCI-CPG	*/


/*
	Double-precision arctangent function recoded with
	new algorithm polynomial at CCI-CPG.
	Coefficients are #4969 from Hart & etc. (17.92D)

	atan returns the value of the arctangent of its
	argument in the range [-pi/2,pi/2].

	atan2 returns the arctangent of arg1/arg2
	in the range [-pi,pi].

	there are no error returns.

*/
	.data
	.align	2
_sq2p1: .long	0x411a8279, 0x99fcef32 # .double 2.414213562373095
	.align	2
_sq2m1: .long	0x3fd413cc, 0xcfe77992 # .double 0.41421356237309505
	.align	2
_pio2:	.long	0x40c90fda, 0xa22168c2 # .double 1.5707963267948966
	.align	2
_pio4:	.long	0x40490fda, 0xa22168c2 # .double 0.78539816339744831
	.align	2
_p0:	.long	0x40800000, 0x00000000 # .double 1
	.align	2
_p1:	.long	0xbfaaaaaa, 0xaaaaa984 # .double -0.33333333333333129
	.align	2
_p2:	.long	0x3f4ccccc, 0xccca47cb # .double 0.19999999999942712
	.align	2
_p3:	.long	0xbf124924, 0x91341847 # .double -0.14285714279414943
	.align	2
_p4:	.long	0x3ee38e38, 0x685c2f79 # .double 0.11111110752565144
	.align	2
_p5:	.long	0xbeba2e7b, 0x6e11c9ad # .double -0.090908970161966385
	.align	2
_p6:	.long	0x3e9d887d, 0x2d47ecb2 # .double 0.076920488304486365
	.align	2
_p7:	.long	0xbe887541, 0x84d86747 # .double -0.066629897944085704
	.align	2
_p8:	.long	0x3e6f7fbd, 0x60c7567d # .double 0.05847143150136491
	.align	2
_p9:	.long	0xbe4e48e7, 0x446d54d6 # .double -0.0503624948385852
	.align	2
_p10:	.long	0x3e1b9ee6, 0x004c28d5 # .double 0.03799333423809
	.align	2
_p11:	.long	0xbd921adf, 0x2d9e4583 # .double -0.017835079092898
	.text
LL0:	.align	1
	.globl	_atan
	.set	L28,0x0
	.data
	.text
_atan:	.word	L28
	tstl	4(fp)
	jleq	L33
	pushl	8(fp)
	pushl	4(fp)
	callf	$12,_satan
	ret
L33:	lnd	4(fp)
	pushd
	callf	$12,_satan
	lnd	r0
	std	r0
	ret
	.align	1
	.globl	_atan2
	.set	L35,0xc
	.data
	.text
	.data
	.align	2
L51:	.long	0x40800000, 0x00000000 # .double 1
	.text
	.set	L44,0xc
	.data
	.text
	.set	L54,0x0
	.data
	.text
_atan2: .word	L35
	subl3	$60,fp,sp
	ldd	4(fp)
	addd	12(fp)
	cmpd	4(fp)
	jneq	L39
	tstl	4(fp)
	jlss	L40
	movl	_pio2+4,r1
	movl	_pio2,r0
	ret
L40:	lnd	_pio2
	jbr	L2000000
L2000003:
	lnd	4(fp)
	divd	12(fp)
	pushd
	callf	$12,_satan
	movl	r1,-56(fp)
	movl	r0,-60(fp)
	ldd	_pio2
	addd	_pio2
L2000001:
	subd	-60(fp)
	jbr	L2000000
L2000005:
	tstl	4(fp)
	jgeq	L2000003
	ldd	4(fp)
	divd	12(fp)
	pushd
	callf	$12,_satan
	lnd	_pio2
	subd	_pio2
	addd	r0
L2000000:
	std	r0
	ret
L39:	tstl	12(fp)
	jlss	L2000005
	tstl	4(fp)
	jleq	L43
	ldd	4(fp)
	divd	12(fp)
	pushd
	callf	$12,_satan
	ret
L43:	lnd	4(fp)
	divd	12(fp)
	pushd
	callf	$12,_satan
	lnd	r0
	jbr	L2000000
	.align	1
_satan: .word	L44
	subl3	$60,fp,sp
	cmpd2	4(fp),_sq2m1
	jgeq	L49
	pushl	8(fp)
	pushl	4(fp)
	callf	$12,_xatan
	ret
L49:	cmpd2	4(fp),_sq2p1
	jleq	L50
	ldd	L51
	divd	4(fp)
	pushd
	callf	$12,_xatan
	movl	r1,-56(fp)
	movl	r0,-60(fp)
	ldd	_pio2
	jbr	L2000001
L50:	ldd	4(fp)
	subd	L51
	std	r0
	ldd	4(fp)
	addd	L51
	std	r2
	ldd	r0
	divd	r2
	pushd
	callf	$12,_xatan
	ldd	r0
	addd	_pio4
	jbr	L2000000
	.align	1
_xatan: .word	L54
	subl3	$68,fp,sp
	ldd	4(fp)
	muld	4(fp)
	std	-60(fp)
	ldd	_p11
	muld	-60(fp)
	addd	_p10
	muld	-60(fp)
	addd	_p9
	muld	-60(fp)
	addd	_p8
	muld	-60(fp)
	addd	_p7
	muld	-60(fp)
	addd	_p6
	muld	-60(fp)
	addd	_p5
	muld	-60(fp)
	addd	_p4
	muld	-60(fp)
	addd	_p3
	muld	-60(fp)
	addd	_p2
	muld	-60(fp)
	addd	_p1
	muld	-60(fp)
	addd	_p0
	muld	4(fp)
	std	-68(fp)
	movl	-64(fp),r1
	movl	-68(fp),r0
	ret

unix.superglobalmegacorp.com

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