A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / dlog.ra
1 /
2 /
3 / D L O G
4 / - - - -
5 /
6 / VERSION 5A 4-27-77 PT
7 /
8 /LOGE(X)
9 /
10 /X=2^N*F
11 /
12 /LOGE(X)
13 /= N*LOGE(2)+LOGE(F)
14 /
15 /
16 SECT DLOG
17 JA #DALOG
18 DPCHK
19 /
20 /IF X<=0 - IT IS AN ERROR
21 EXTERN #ARGER
22 DALERR, TRAP4 #ARGER
23 /
24 TEXT +DLOG +
25 DALXR, SETX XRDAL
26 SETB BPDAL
27 BPDAL, F 0.0
28 XRDAL, F 0.0
29 F 0.0
30 ORG 10*3+BPDAL
31 FNOP
32 JA DALXR
33 0
34 DALRTN, JA .
35 N, F 0.0
36 F 0.0
37 F, F 0.0
38 F 0.0
39 DAL1, F 1.0
40 F 0.0
41 /
42 DT7, 7776 /1/7
43 2222
44 2222
45 2222
46 2222
47 2221
48 DT6, 7776 /-1/6
49 5252
50 5252
51 5252
52 5252
53 5252
54 DT5, 7776 /1/5
55 3146
56 3146
57 3146
58 3146
59 3146
60 DT4, 7776 /-1/4
61 4000
62 0
63 0
64 0
65 0
66 DT3, 7777 /1/3
67 2525
68 2525
69 2525
70 2525
71 2524
72 DT2, 7777 /-1/2
73 4000
74 0
75 0
76 0
77 0
78 /
79 A0, F 1.84375
80 F 0.0
81 A1, F 1.65625
82 F 0.0
83 A2, F 1.500
84 F 0.0
85 A3, F 1.375
86 F 0.0
87 A4, F 1.250
88 F 0.0
89 A5, F 1.1875
90 F 0.0
91 A6, F 1.09375
92 F 0.0
93 A7, F 1.03125
94 F 0.0
95 LA0, 0 /.6118015411059928976
96 2344
97 7603
98 2325
99 4250
100 3144
101 LA1, 0 /.5045560107523952859
102 2011
103 2512
104 4551
105 3503
106 7657
107 LA2, 7777 /.4054651081081643810
108 3174
109 6217
110 5457
111 7141
112 1370
113 LA3, 7777 /.3184537311185346147
114 2430
115 3057
116 0207
117 0573
118 0232
119 LA4, 7776 /.2231435513142097553
120 3443
121 7737
122 0746
123 5150
124 4146
125 LA5, 7776 /.1718502569266592214
126 2577
127 6301
128 6051
129 7117
130 2356
131 LA6, 7775 /.08961215868968712374
132 2674
133 1512
134 1271
135 2655
136 1272
137 LA7, 7773 /.030771658666753687
138 3740
139 5154
140 1636
141 0313
142 7764
143 D16, F 16.0
144 F 0.0
145 D8, F 8.0
146 F 0.0
147 CUM, F 0.0
148 F 0.0
149 DLOGE2, 0
150 2613
151 4413
152 7676
153 4347
154 5715
155 /
156 /PICK UP X
157 BASE 0
158 #DALOG, STARTD
159 FLDA 10*3
160 FSTA DALRTN
161 FLDA 0
162 SETX XRDAL
163 SETB BPDAL
164 BASE BPDAL
165 LDX 1,1
166 FSTA BPDAL
167 FLDA% BPDAL,1 /ADDRESS
168 FSTA BPDAL
169 STARTE
170 FLDA% BPDAL /AND X
171 JLE DALERR /X <= 0 IS ERROR
172 FSUB DAL1 /SUB 1.0
173 JNE DALA
174 FCLA /LOG(1)=0
175 JA DALRTN
176 /
177 DALA, FADD DAL1 /ADD BACK
178 FSTA XRDAL /STORE AT X
179 /EXPONENT STORED IN XR0
180 /MANTISSA STORED IN XR1-5
181 /PICK UP EXP + MULTIPLY BY LOGE(2)
182 /
183 XTA 0
184 FMUL DLOGE2
185 FSTA N /N*LOGE(2)
186 /XRDAL IS NOW FRACTION IN RANGE .5<=F<1.0
187 /COMPUTE LOG(F) BY
188 /LOG(F)=LOG(A(K1)*A(K2)...(F))-(LOG(A(K1))+
189 / LOG(A(K2))...)
190 /FIT F IN A 1/16 RANGE
191 /I.E. 1/2-9/16,9/16-10/16,ETC.
192 /MULTIPLY F BY APPROPRIATE A(K) MULTIPLIER
193 /KEEP RUNNING SUM OF LOG(A(K))
194 /CONTINUE UNTIL F>1
195
196 /
197 LDX 0,0
198 FLDA XRDAL
199 FSTA F
200 FCLA
201 FSTA CUM
202 DALB, FLDA F
203 FMUL D16 /16 REAL PARTS
204 FSUB D8 /NEED JUST 8
205 ATX 1
206 FLDA A0,1 /GET MULTIPLIER
207 FMULM F
208 FLDA LA0,1 /ADD LOG(A(K)) TO SUM
209 FADDM CUM
210 FLDA F
211 FSUB DAL1
212 JLT DALB
213 /NOW F>1. USE TAYLOR SERIES
214 /LOG(T)=Z-(Z^2)/2+(Z^3)/3+... WHERE Z=T-1
215 FLDA F
216 FSUB DAL1 /F-1.0
217 FSTA F
218 FMUL DT7
219 FADD DT6
220 FMUL F
221 FADD DT5
222 FMUL F
223 FADD DT4
224 FMUL F
225 FADD DT3
226 FMUL F
227 FADD DT2
228 FMUL F
229 FADD DAL1
230 FMUL F
231 FSUB CUM
232 FADD N
233 JA DALRTN
234 \f