--- /dev/null
+/
+/
+/ 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
+\f