|
|
1.1 root 1: /* Kexpf.s 1.3 86/01/05 */
2:
3: #include "../tahoe/SYS.h"
4:
5: .text
6: ENTRY(Kexpf, R4|R3)
7: subl3 $88,fp,sp
8: tstl 4(fp)
9: jneq 1f
10: movl one,r0
11: ret
12: 1:
13: lnd _maxf
14: cmpd 4(fp)
15: jleq 1f
16: clrl r0
17: ret
18: 1:
19: cmpd2 4(fp),_maxf
20: jleq 1f
21: ldd _HUGE
22: cvdf
23: stf r0
24: ret
25: 1:
26: pushl 20(fp) # hfs
27: ldd _log2e; pushd
28: ldd 4(fp); pushd
29: callf $24,_Kmuld
30: ldd r0
31: std 4(fp)
32:
33: pushl 20(fp) # hfs
34: pushl 8(fp)
35: pushl 4(fp)
36: callf $16,_Kfloorf
37: movl r0,-88(fp) # (int)ent from Kfloorf
38:
39: cvlf -88(fp)
40: clrl r1
41: stf r0
42: pushl 20(fp) # hfs
43: pushl r1
44: pushl r0
45: ldd 4(fp); pushd
46: callf $24,_Ksubd # (arg - ent)
47:
48: pushl 20(fp) # hfs
49: ldd half; pushd
50: ldd r0; pushd
51: callf $24,_Ksubd
52: ldd r0; std -60(fp) # fract
53:
54: pushl 20(fp) # hfs
55: pushd
56: pushd
57: callf $24,_Kmuld
58: ldd r0; std -84(fp) # xsq
59:
60: pushl 20(fp) # hfs
61: pushd # xsq
62: ldd _p2; pushd
63: callf $24,_Kmuld
64:
65: pushl 20(fp) # hfs
66: ldd _p1; pushd
67: ldd r0; pushd
68: callf $24,_Kaddd
69:
70: pushl 20(fp) # hfs
71: ldd -84(fp); pushd
72: ldd r0; pushd
73: callf $24,_Kmuld
74:
75: pushl 20(fp) # hfs
76: ldd _p0; pushd
77: ldd r0; pushd
78: callf $24,_Kaddd
79:
80: pushl 20(fp) # hfs
81: ldd -60(fp); pushd # fract
82: ldd r0; pushd
83: callf $24,_Kmuld
84: ldd r0; std -68(fp) # temp1
85:
86: pushl 20(fp) # hfs
87: ldd -84(fp); pushd # xsq
88: ldd _q2; pushd
89: callf $24,_Kmuld
90:
91: pushl 20(fp) # hfs
92: ldd _q1; pushd
93: ldd r0; pushd
94: callf $24,_Kaddd
95:
96: pushl 20(fp) # hfs
97: ldd -84(fp); pushd
98: ldd r0; pushd
99: callf $24,_Kmuld
100:
101: pushl 20(fp) # hfs
102: ldd _q0; pushd
103: ldd r0; pushd
104: callf $24,_Kaddd
105: ldd r0; std -76(fp) # temp2
106:
107: pushl 20(fp) # hfs for Kldexpf
108: pushl -88(fp) # ent
109:
110: pushl 20(fp) # hfs tor temp2+temp1
111: ldd -68(fp); pushd # temp1
112: ldd -76(fp); pushd # temp2
113: callf $24,_Kaddd
114:
115: pushl 20(fp) # hfs
116: ldd _sqrt2; pushd
117: ldd r0; pushd # temp2+temp1
118: callf $24,_Kmuld
119: ldd r0; std r2 # sqrt2*(temp2+temp1)
120:
121: pushl 20(fp) # hfs
122: ldd -68(fp)
123: pushd
124: ldd -76(fp)
125: pushd
126: callf $24,_Ksubd # temp2-temp1
127:
128: pushl 20(fp) # hfs
129: ldd r0
130: pushd # temp2-temp1
131: ldd r2
132: pushd
133: callf $24,_Kdivd
134:
135: ldd r0
136: pushd
137: callf $20,_Kldexpf
138:
139: #pushl 20(fp) # hfs
140: #pushl $0
141: #pushl r0 # cvlf r0
142: #pushl $0
143: #pushl $0
144: #callf $24,_Kcvtld
145:
146: #ldd r0
147: #cvdf
148: #stf r0
149: ret
150:
151: /* file : Kfloorf.x
152: */
153: .text
154: .globl _Kfloorf
155: .data
156: .align 2
157: L19: .long 0x40800000, 0x00000000 # .double 1
158: .text
159: .set L13,0x0
160: .data
161: .text
162: _Kfloorf:
163: .word L13
164: subl3 $60,fp,sp
165: tstl 4(fp) # if (d<0.0) {
166: jgeq L17
167: lnd 4(fp)
168: std 4(fp) # d = -d;
169: pushl 12(fp) # hfs
170: addl3 $4,fp,-(sp) # &d
171: pushl 8(fp)
172: pushl 4(fp)
173: callf $20,_Kmodf
174: clrl -60+4(fp)
175: movl r0,-60(fp) # fract = modf(d,&d);
176: tstl r0 # if (fract != 0.0)
177: jeql L18
178: pushl 12(fp) # hfs
179: ldd L19
180: pushd
181: ldd 4(fp)
182: pushd
183: callf $24,_Kaddd
184: ldd r0
185: std 4(fp) # d +=1;
186: L18: lnd 4(fp)
187: std 4(fp) # d = -d;
188: jbr L20
189: L17:
190: pushl 12(fp) # hfs
191: addl3 $4,fp,-(sp)
192: pushl 8(fp)
193: pushl 4(fp)
194: callf $20,_Kmodf
195: L20: ldd 4(fp)
196: cvdl r0 # for Kexpf call only!
197: ret
198:
199: .data
200: _p0: .long 0x45BD3D04, 0x7F734DBD # .double 1513.9067990543389
201: _p1: .long 0x42A19DD4, 0x989F60DA # .double 20.202065651286927
202: _p2: .long 0x3DBD2E42, 0xAB70BDA9 # .double .023093347753750233
203: _q0: .long 0x468881B1, 0x7C3A6529 # .double 4368.2116627275583
204: _q1: .long 0x44692F28, 0x7AE89541 # .double 233.18421142748162
205: _q2: .long 0x40800000, 0x00000000 # .double 1
206: _log2e: .long 0x40B8AA3B, 0x295C17F0 # .double 1.4426950408889634
207: _sqrt2: .long 0x40B504F3, 0x33F9DE64 # .double 1.414213562373095
208: _maxf: .long 0x471C4000, 0x00000000 # .double 10000
209: _HUGE: .long 0x7FFFFFFE, 0xFFFFFFFC # .double 1.701411733192644e+38
210: one: .long 0x40800000 # .float 1
211: half: .long 0x40000000, 0x00000000 # .double .5
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.