xref: /original-bsd/sys/tahoe/math/Klogf.s (revision 9a765c18)
1/*-
2 * Copyright (c) 1985 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Computer Consoles Inc.
7 *
8 * %sccs.include.redist.c%
9 *
10 *	@(#)Klogf.s	7.1 (Berkeley) 12/06/90
11 */
12
13#include "../tahoe/SYS.h"
14
15	.text
16ENTRY(Klogf, R5|R4|R3|R2)
17	subl3	$88,fp,sp
18	clrl	8(fp)
19	tstl	4(fp)
20	jgtr	L53
21	movl	small+4,r1
22	movl	small,r0
23	ret
24L53:	pushl	20(fp)			# hfs
25	subl3	$88,fp,-(sp)		# &exp
26	pushl	8(fp)			# arg
27	pushl	4(fp)
28	callf	$20,_Kfrexpf
29	ldd	r0
30					# movl	r1,-56(fp)
31	std	-60(fp)			# movl	r0,-60(fp)
32	jbr	L55
33L2000001:
34	pushl	20(fp)			# hfs
35	ldd	two			# 2.0
36	pushd
37	ldd	-60(fp)			# x
38	pushd
39	callf	$24,_Kmuld
40	ldd	r0
41	std	-60(fp)
42	subl2	$1,-88(fp)
43L55:	cmpd2	-60(fp),half
44	jlss	L2000001
45	cmpd2	-60(fp),_sqrto2
46	jgeq	L59
47	pushl	20(fp)			# hfs
48	ldd	-60(fp)			# x
49	pushd
50	ldd	two			# 2.0
51	pushd
52	callf	$24,_Kmuld
53	ldd	r0
54	std	-60(fp)
55	subl2	$1,-88(fp)
56L59:	pushl	20(fp)			# hfs
57	ldd	one			# 1.0
58	pushd
59	ldd	-60(fp)			# x
60	pushd
61	callf	$24,_Ksubd
62	ldd	r0
63	std	r2
64	pushl	20(fp)			# hfs
65	ldd	one			# 1.0
66	pushd
67	ldd	-60(fp)			# x
68	pushd
69	callf	$24,_Kaddd
70	ldd	r0
71	std	r4
72	pushl	20(fp)			# hfs
73	ldd	r4			# temp result of x-1
74	pushd
75	ldd	r2			# temp result of x+1
76	pushd
77	callf	$24,_Kdivd
78	ldd	r0
79	std	-68(fp)			# z
80	pushl	20(fp)			# hfs
81	pushd				# z
82	pushd				# z
83	callf	$24,_Kmuld
84	ldd	r0
85	std	-76(fp)			# zsq
86	pushl	20(fp)			# hfs
87	ldd	-76(fp)			# zsq
88	pushd
89	ldd	_p1			# p1
90	pushd
91	callf	$24,_Kmuld
92	ldd	r0
93	std	r2
94	pushl	20(fp)			# hfs
95	ldd 	_p0			# p0
96	pushd
97	ldd	r2
98	pushd
99	callf	$24,_Kaddd
100	ldd	r0
101	std	-84(fp)			# temp
102	pushl	20(fp)			# hfs
103	ldd	-76(fp)			# zsq
104	pushd
105	ldd	_q1
106	pushd
107	callf	$24,_Kmuld
108	ldd	r0
109	std	r2
110	pushl	20(fp)			# hfs
111	ldd	_q0			# q0
112	pushd
113	ldd	r2
114	pushd
115	callf	$24,_Kaddd
116	ldd	r0
117	std	r2			# temp result of (q1*zsq+q0)
118	pushl	20(fp)			# hfs
119	ldd	r2
120	pushd
121	ldd	-84(fp)			# temp
122	pushd
123	callf	$24,_Kdivd
124	ldd	r0
125	std	-84(fp)			# put in temp
126	pushl	20(fp)			# hfs
127	ldd	-68(fp)			# z
128	pushd
129	ldd	-84(fp)
130	pushd
131	callf	$24,_Kmuld
132	ldd	r0
133	std	r2
134	pushl	20(fp)			#hfs
135	pushl	$0			# 0 pad
136	pushl	-88(fp)			# exp
137	pushl	$0			# dummy
138	pushl	$0			# dummy
139	callf	$24,_Kcvtld
140	pushl	20(fp)			# hfs
141	ldd	_log2			# log2
142	pushd
143	pushl	r1			# exp converted
144	pushl	r0
145	callf	$24,_Kmuld
146	ldd	r0
147	std	r4
148	pushl	20(fp)			# hfs
149	ldd	r2			# result of temp*z
150	pushd
151	ldd	r4
152	pushd
153	callf	$24,_Kaddd
154	ldd	r0
155	cvdf
156	stf	r0
157	clrl	r1
158	ret
159
160	.data
161	.align	2
162_log2:	.long	0x40317217, 0xf7d1cf7a # .double 0.69314718055994531
163_ln10:	.long	0x41135d8d, 0xddaaa8ac # .double 2.3025850929940457
164_sqrto2:.long	0x403504f3, 0x33f9de65 # .double 0.70710678118654753
165_p0:	.long	0xc154114d, 0xeb0ba468 # .double -3.31355617479
166_p1:	.long	0x40654226, 0x56bd0c4c # .double 0.89554061525
167_q0:	.long	0xc0d4114c, 0xfdc7df02 # .double -1.65677797691
168_q1:	.long	0x40800000, 0x00000000 # .double 1
169small:	.long	0xfffffffe, 0xfffffffe # .double -1.7014117331926443e+38
170half:	.long	0x40000000, 0x00000000 # .double 0.5
171two:	.long	0x41000000, 0x00000000 # .double 2
172one:	.long	0x40800000, 0x00000000 # .double 1
173