File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / usr / src / usr.lib / libm / exp.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

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


/*
	Double-precision exponential function recoded with
	new algorithm polynomial at CCI-CPG.

	The coefficients are #1067 from Hart and etc. (18.08D)
*/
	.data
	.comm	_errno,4
	.align	2
_p0:    .long	0x45bd3d04, 0x7f734dbd # .double 1513.9067990543389
	.align	2
_p1:	.long	0x42a19dd4, 0x989f60db # .double 20.202065651286927
	.align	2
_p2:	.long	0x3dbd2e42, 0xab70bdab # .double 0.023093347753750234
	.align	2
_q0:	.long	0x468881b1, 0x7c3a652b # .double 4368.2116627275585
	.align	2
_q1:	.long	0x44692f28, 0x7ae89543 # .double 233.18421142748162
	.align	2
_q2: 	.long	0x40800000, 0x00000000 # .double 1
	.align	2
_log2e:	.long	0x40b8aa3b, 0x295c17f1 # .double 1.4426950408889634
	.align	2
_sqrt2:	.long	0x40b504f3, 0x33f9de65 # .double 1.4142135623730951
	.align	2
_maxf:	.long	0x471c4000, 0x00000000 # .double 10000
	.text
LL0:	.align	1
	.globl	_exp
	.data
	.align	2
L56:	.long	0x40800000, 0x00000000 # .double 1
	.text
	.data
	.align	2
L59:	.long	0x7ffffffe, 0xfffffffe # .double 1.7014117331926443e+38
	.text
	.data
	.align	2
L60:	.long	0x40000000, 0x00000000 # .double 0.5
	.text
	.set	L51,0xc
	.data
	.text
_exp:	.word	L51
	subl3	$88,fp,sp
	tstl	4(fp)
	jneq	L55
	movl	L56+4,r1
	movl	L56,r0
	ret
L55:	lnd	_maxf
	cmpd	4(fp)
	jleq	L57
	clrl	r1
	clrl	r0
	ret
L57:	cmpd2	4(fp),_maxf
	jleq	L58
	movl	$34,_errno
	movl	L59+4,r1
	movl	L59,r0
	ret
L58:	ldd	4(fp)
	muld	_log2e
	std	4(fp)
	pushl	8(fp)
	pushl	4(fp)
	callf	$12,_floor
	ldd	r0
	cvdl	-88(fp)
	cvld	-88(fp)
	std	r0
	ldd	4(fp)
	subd	r0
	subd	L60
	std	-60(fp)
	muld	-60(fp)
	std	-84(fp)
	ldd	_p2
	muld	-84(fp)
	addd	_p1
	muld	-84(fp)
	addd	_p0
	muld	-60(fp)
	std	-68(fp)
	ldd	_q2
	muld	-84(fp)
	addd	_q1
	muld	-84(fp)
	addd	_q0
	std	-76(fp)
	pushl	-88(fp)
	addd	-68(fp)
	muld	_sqrt2
	std	r0
	ldd	-76(fp)
	subd	-68(fp)
	std	r2
	ldd	r0
	divd	r2
	pushd
	callf	$16,_ldexp
	ret


unix.superglobalmegacorp.com

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