A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / dlog.ra
CommitLineData
81e70d48
PH
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
22DALERR, TRAP4 #ARGER
23/
24 TEXT +DLOG +
25DALXR, SETX XRDAL
26 SETB BPDAL
27BPDAL, F 0.0
28XRDAL, F 0.0
29 F 0.0
30 ORG 10*3+BPDAL
31 FNOP
32 JA DALXR
33 0
34DALRTN, JA .
35N, F 0.0
36 F 0.0
37F, F 0.0
38 F 0.0
39DAL1, F 1.0
40 F 0.0
41/
42DT7, 7776 /1/7
43 2222
44 2222
45 2222
46 2222
47 2221
48DT6, 7776 /-1/6
49 5252
50 5252
51 5252
52 5252
53 5252
54DT5, 7776 /1/5
55 3146
56 3146
57 3146
58 3146
59 3146
60DT4, 7776 /-1/4
61 4000
62 0
63 0
64 0
65 0
66DT3, 7777 /1/3
67 2525
68 2525
69 2525
70 2525
71 2524
72DT2, 7777 /-1/2
73 4000
74 0
75 0
76 0
77 0
78/
79A0, F 1.84375
80 F 0.0
81A1, F 1.65625
82 F 0.0
83A2, F 1.500
84 F 0.0
85A3, F 1.375
86 F 0.0
87A4, F 1.250
88 F 0.0
89A5, F 1.1875
90 F 0.0
91A6, F 1.09375
92 F 0.0
93A7, F 1.03125
94 F 0.0
95LA0, 0 /.6118015411059928976
96 2344
97 7603
98 2325
99 4250
100 3144
101LA1, 0 /.5045560107523952859
102 2011
103 2512
104 4551
105 3503
106 7657
107LA2, 7777 /.4054651081081643810
108 3174
109 6217
110 5457
111 7141
112 1370
113LA3, 7777 /.3184537311185346147
114 2430
115 3057
116 0207
117 0573
118 0232
119LA4, 7776 /.2231435513142097553
120 3443
121 7737
122 0746
123 5150
124 4146
125LA5, 7776 /.1718502569266592214
126 2577
127 6301
128 6051
129 7117
130 2356
131LA6, 7775 /.08961215868968712374
132 2674
133 1512
134 1271
135 2655
136 1272
137LA7, 7773 /.030771658666753687
138 3740
139 5154
140 1636
141 0313
142 7764
143D16, F 16.0
144 F 0.0
145D8, F 8.0
146 F 0.0
147CUM, F 0.0
148 F 0.0
149DLOGE2, 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/
177DALA, 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
202DALB, 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