Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | / |
2 | / | |
3 | / SUBROUTINE DEXP | |
4 | / | |
5 | / VERSION 5A 4-26-77 MH | |
6 | / | |
7 | /E^X=2^(X*LOG2(E)) | |
8 | /E^X=2^(M+F) | |
9 | /M=INTEGER; F=FRACTION | |
10 | / | |
11 | /2^(M+F)=2^(M+N+R) | |
12 | /WHERE 0<R<1/8 | |
13 | /AND M+N+R=M+F=X*LOG2(E) | |
14 | / | |
15 | /(2^M)*(2^N)*(2^R)=E^X | |
16 | / | |
17 | /2^M IS CALCULATED BY SUCCESSIVE MULTIPLIES | |
18 | /2^N IS CALCULATED BY LOOK UP | |
19 | /2^R=1+<A4/((B4/R)-C4+(D4*R)+(H4/(R+(B4/R))))> | |
20 | / | |
21 | /RESTRICTIONS: | |
22 | /X=0 IMPLIES E^X=1 | |
23 | / | |
24 | /X>88.028 IMPLIES E^X=3377/3377/3777/7777/777/7777 | |
25 | / | |
26 | /X<-88.028 IMPLIES E^X=0 | |
27 | / | |
28 | / | |
29 | / | |
30 | SECT DEXP | |
31 | JA #DEXP | |
32 | DPCHK | |
33 | TEXT +DEXP + | |
34 | / | |
35 | DEXPXR, SETX XRDEXP | |
36 | SETB BPDEXP | |
37 | / | |
38 | /BEGINNING OF BASE PAGE | |
39 | / | |
40 | BPDEXP, F 0.0 | |
41 | XRDEXP, F 0.0 | |
42 | X, F 0.0 | |
43 | F 0.0 | |
44 | / | |
45 | ORG 10*3+BPDEXP | |
46 | FNOP | |
47 | JA DEXPXR | |
48 | 0 | |
49 | DEXRTN, JA . | |
50 | / | |
51 | TOPLIM, 3377 | |
52 | 3377 | |
53 | 3777 | |
54 | 7777 | |
55 | 7777 | |
56 | 7777 | |
57 | M, F 0.0 | |
58 | F 0.0 | |
59 | N, F 0.0 | |
60 | F 0.0 | |
61 | R, F 0.0 | |
62 | F 0.0 | |
63 | LOG2E, 0001 /1.4426950408889634 | |
64 | 2705 | |
65 | 2435 | |
66 | 4512 | |
67 | 7013 | |
68 | 7603 | |
69 | DFP125, 7775 /.125 | |
70 | 3777 | |
71 | 7777 | |
72 | 7777 | |
73 | 7777 | |
74 | 7776 | |
75 | DEXFP1, F 1.0 | |
76 | F 0.0 | |
77 | / | |
78 | DFR1S8, 0001 /2^1/8 | |
79 | 2134 | |
80 | 5340 | |
81 | 7437 | |
82 | 2505 | |
83 | 7302 | |
84 | DFP2S8, 0001 /2^2/8 | |
85 | 2301 | |
86 | 5770 | |
87 | 1214 | |
88 | 3334 | |
89 | 2524 | |
90 | DFP3S8, 0001 /2^3/8 | |
91 | 2457 | |
92 | 7553 | |
93 | 2515 | |
94 | 4250 | |
95 | 4720 | |
96 | DFP4S8, 0001 /2^4/8 | |
97 | 2650 | |
98 | 1171 | |
99 | 4637 | |
100 | 6357 | |
101 | 1425 | |
102 | DFP5S8, 0001 /2^5/8 | |
103 | 3053 | |
104 | 1625 | |
105 | 0212 | |
106 | 5174 | |
107 | 3070 | |
108 | DFP6S8, 0001 /2^6/8 | |
109 | 3272 | |
110 | 1176 | |
111 | 3126 | |
112 | 5516 | |
113 | 5532 | |
114 | DFP7S8, 0001 /2^7/8 | |
115 | 3526 | |
116 | 0143 | |
117 | 3476 | |
118 | 7222 | |
119 | 0722 | |
120 | / | |
121 | / | |
122 | DEXA4, 0006 /60.593191717336463 | |
123 | 3622 | |
124 | 7666 | |
125 | 6462 | |
126 | 2157 | |
127 | 5534 | |
128 | DEXB4, 0007 /87.417497202235527 | |
129 | 2566 | |
130 | 5341 | |
131 | 0613 | |
132 | 6705 | |
133 | 7214 | |
134 | DEXC4, 0005 /30.296595858668232 | |
135 | 3622 | |
136 | 7666 | |
137 | 6462 | |
138 | 2157 | |
139 | 5546 | |
140 | DEXD4, 0001 /1.0500 | |
141 | 2063 | |
142 | 1463 | |
143 | 1463 | |
144 | 1463 | |
145 | 1462 | |
146 | DEXH4, 0010 /214.17286814547704 | |
147 | 3261 | |
148 | 3040 | |
149 | 4261 | |
150 | 5654 | |
151 | 0240 | |
152 | DTEMP1, F 0.0 | |
153 | F 0.0 | |
154 | DFP2, F 2.0 | |
155 | F 0.0 | |
156 | / | |
157 | BASE 0 | |
158 | #DEXP, STARTD | |
159 | FLDA 10*3 | |
160 | FSTA DEXRTN | |
161 | FLDA 0 | |
162 | SETX XRDEXP | |
163 | SETB BPDEXP | |
164 | BASE BPDEXP | |
165 | LDX 1,1 | |
166 | LDX 73,2 /FOR ALIGNING | |
167 | FSTA BPDEXP | |
168 | FLDA% BPDEXP,1 /ADDRESS OF X | |
169 | FSTA BPDEXP | |
170 | STARTE | |
171 | FLDA% BPDEXP /GET X | |
172 | LDX 0,0 | |
173 | JGT DEX1 /CHECK SIGN | |
174 | FNEG | |
175 | LDX -1,0 /SET FLAG | |
176 | DEX1, JNE DEX2 /X=0 | |
177 | FLDA DEXFP1 /E^0=1 | |
178 | JA DEXRTN | |
179 | DEX2, FSTA X | |
180 | JA DEX4 | |
181 | DEX3, FCLA | |
182 | JA DEXRTN /RETURN 0 FOR TOO SMALL | |
183 | / | |
184 | /SET UP M+N+R=X*LOG2(E) | |
185 | DEX4, FLDA LOG2E | |
186 | FMULM X | |
187 | FLDA X | |
188 | ALN 2 /FIX | |
189 | FNORM /FLOAT | |
190 | FSTA M /INTEGER PART | |
191 | FLDA X | |
192 | FSUB M | |
193 | FSTA N /FRACTION | |
194 | JNE DEX50 /0 IS SPECIAL CASE | |
195 | FLDA DEXFP1 /1.0 | |
196 | FSTA N /N | |
197 | FSTA R /R | |
198 | JA DEX20 /SKIP | |
199 | / | |
200 | /CALCULATE N+R | |
201 | DEX50, LDX 0,1 | |
202 | FLDA N | |
203 | FSTA R /IF < .125 ALREADY | |
204 | DEX5, FSUB DFP125 /-.125 | |
205 | JLT DEX6 /DONE IF .LT. | |
206 | FSTA R /STORE REMAINDER | |
207 | ADDX 1,1 /NEXT POWER OF 2 | |
208 | JA DEX5 /AND AGAIN | |
209 | / | |
210 | /GET N FROM TABLE | |
211 | DEX6, FLDA DEXFP1,1 | |
212 | FSTA N | |
213 | / | |
214 | /NOW CALCULATE R | |
215 | FLDA R /IF R=0 | |
216 | JNE DEX7 | |
217 | FLDA DEXFP1 /2^R=1 | |
218 | FSTA R | |
219 | JA DEX20 /NO CALCULATION | |
220 | / | |
221 | / | |
222 | DEX7, FLDA DEXB4 | |
223 | FDIV R /(B4/R) | |
224 | FSTA X | |
225 | FLDA DEXD4 /D4*R | |
226 | FMUL R | |
227 | FADD X /+(B4/R) | |
228 | FSUB DEXC4 /-C4 | |
229 | FSTA DTEMP1 | |
230 | FLDA R | |
231 | FADD X /R+(B4/R) | |
232 | FSTA R | |
233 | FLDA DEXH4 | |
234 | FDIV R /H4/(R+B4/R) | |
235 | FADD DTEMP1 | |
236 | FSTA DTEMP1 | |
237 | FLDA DEXA4 | |
238 | FDIV DTEMP1 | |
239 | FADD DEXFP1 | |
240 | FSTA R | |
241 | / | |
242 | /CALCULATE 2^M | |
243 | / | |
244 | DEX20, FLDA M | |
245 | JNE DEX21 | |
246 | FLDA DEXFP1 | |
247 | FSTA M | |
248 | JA DEX30 | |
249 | DEX21, FNEG | |
250 | ATX 1 | |
251 | FLDA DEXFP1 | |
252 | FSTA M | |
253 | FLDA DFP2 | |
254 | DEX22, FMULM M /M*2 | |
255 | JXN DEX22,1+ | |
256 | /CALCULATE M*N*R | |
257 | DEX30, FLDA M | |
258 | FMUL N | |
259 | FMUL R | |
260 | FSTA X | |
261 | JXN DEX31,0 /WAS X MINUS | |
262 | JA DEXRTN | |
263 | DEX31, FLDA DEXFP1 /.1/X IF -X | |
264 | FDIV X | |
265 | JA DEXRTN | |
266 | \f\1e |