/ / / D L O G / - - - - / / VERSION 5A 4-27-77 PT / /LOGE(X) / /X=2^N*F / /LOGE(X) /= N*LOGE(2)+LOGE(F) / / SECT DLOG JA #DALOG DPCHK / /IF X<=0 - IT IS AN ERROR EXTERN #ARGER DALERR, TRAP4 #ARGER / TEXT +DLOG + DALXR, SETX XRDAL SETB BPDAL BPDAL, F 0.0 XRDAL, F 0.0 F 0.0 ORG 10*3+BPDAL FNOP JA DALXR 0 DALRTN, JA . N, F 0.0 F 0.0 F, F 0.0 F 0.0 DAL1, F 1.0 F 0.0 / DT7, 7776 /1/7 2222 2222 2222 2222 2221 DT6, 7776 /-1/6 5252 5252 5252 5252 5252 DT5, 7776 /1/5 3146 3146 3146 3146 3146 DT4, 7776 /-1/4 4000 0 0 0 0 DT3, 7777 /1/3 2525 2525 2525 2525 2524 DT2, 7777 /-1/2 4000 0 0 0 0 / A0, F 1.84375 F 0.0 A1, F 1.65625 F 0.0 A2, F 1.500 F 0.0 A3, F 1.375 F 0.0 A4, F 1.250 F 0.0 A5, F 1.1875 F 0.0 A6, F 1.09375 F 0.0 A7, F 1.03125 F 0.0 LA0, 0 /.6118015411059928976 2344 7603 2325 4250 3144 LA1, 0 /.5045560107523952859 2011 2512 4551 3503 7657 LA2, 7777 /.4054651081081643810 3174 6217 5457 7141 1370 LA3, 7777 /.3184537311185346147 2430 3057 0207 0573 0232 LA4, 7776 /.2231435513142097553 3443 7737 0746 5150 4146 LA5, 7776 /.1718502569266592214 2577 6301 6051 7117 2356 LA6, 7775 /.08961215868968712374 2674 1512 1271 2655 1272 LA7, 7773 /.030771658666753687 3740 5154 1636 0313 7764 D16, F 16.0 F 0.0 D8, F 8.0 F 0.0 CUM, F 0.0 F 0.0 DLOGE2, 0 2613 4413 7676 4347 5715 / /PICK UP X BASE 0 #DALOG, STARTD FLDA 10*3 FSTA DALRTN FLDA 0 SETX XRDAL SETB BPDAL BASE BPDAL LDX 1,1 FSTA BPDAL FLDA% BPDAL,1 /ADDRESS FSTA BPDAL STARTE FLDA% BPDAL /AND X JLE DALERR /X <= 0 IS ERROR FSUB DAL1 /SUB 1.0 JNE DALA FCLA /LOG(1)=0 JA DALRTN / DALA, FADD DAL1 /ADD BACK FSTA XRDAL /STORE AT X /EXPONENT STORED IN XR0 /MANTISSA STORED IN XR1-5 /PICK UP EXP + MULTIPLY BY LOGE(2) / XTA 0 FMUL DLOGE2 FSTA N /N*LOGE(2) /XRDAL IS NOW FRACTION IN RANGE .5<=F<1.0 /COMPUTE LOG(F) BY /LOG(F)=LOG(A(K1)*A(K2)...(F))-(LOG(A(K1))+ / LOG(A(K2))...) /FIT F IN A 1/16 RANGE /I.E. 1/2-9/16,9/16-10/16,ETC. /MULTIPLY F BY APPROPRIATE A(K) MULTIPLIER /KEEP RUNNING SUM OF LOG(A(K)) /CONTINUE UNTIL F>1 / LDX 0,0 FLDA XRDAL FSTA F FCLA FSTA CUM DALB, FLDA F FMUL D16 /16 REAL PARTS FSUB D8 /NEED JUST 8 ATX 1 FLDA A0,1 /GET MULTIPLIER FMULM F FLDA LA0,1 /ADD LOG(A(K)) TO SUM FADDM CUM FLDA F FSUB DAL1 JLT DALB /NOW F>1. USE TAYLOR SERIES /LOG(T)=Z-(Z^2)/2+(Z^3)/3+... WHERE Z=T-1 FLDA F FSUB DAL1 /F-1.0 FSTA F FMUL DT7 FADD DT6 FMUL F FADD DT5 FMUL F FADD DT4 FMUL F FADD DT3 FMUL F FADD DT2 FMUL F FADD DAL1 FMUL F FSUB CUM FADD N JA DALRTN