File: ALOG.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text) 


RALF V50A    8-APR-92    PAGE 1

            /R=ALOG(R) SINGLE PREC. NATURAL LOGARITHM
            /
            /
            / VERSION 50A 26-MAY-80 WVDM
            /
            /
                    SECT    ALOG
00000 1030          JA      #ALOG
00001 0113  
00002 0000          0                       /WORKING SPACE FOR EXPONENT DIDDLE.
00003 0000          0
00004 0000          0
00005 0000  ALOGTM, 0
00006 0000          0
00007 0000          0
00010 0000          0
            /
                    EXTERN  #ARGER
00011 4000  ALOGER, TRAP4   #ARGER
00012 0000  
00013 0114          TEXT    +ALOG  +
00014 1707  
00015 4040  
00016 1100  ALOGXR, SETX    XRALOG
00017 0025  
00020 1110          SETB    BPALOG
00021 0022  
00022 0000  BPALOG, F 0.0
00023 0000  
00024 0000  
00025 0000  XRALOG, F 0.0
00026 0000  
00027 0000  
00030 0000  ALOG1,  F 0.0
00031 0000  
00032 0000  
00033 0000  ALOG2,  F 0.0
00034 0000  
00035 0000  
00036 0001  F1ALOG, F 1.
00037 2000  
00040 0000  
00041 0002  F2ALOG, F 2.
00042 2000  
00043 0000  
            /
00044 0000  ALOGMG, 0
00045 0000          0
00046 0013          13
00047 0000  ALOGP1, 0                       /CORRECT EXPONENT DIDDLERS
00050 0000          0
00051 0001          1
            /
                    ORG     10*3+BPALOG
00052 0040          FNOP
00053 1030          JA      ALOGXR
RALF V50A    8-APR-92    PAGE 1-1

00054 0016  
00055 0000          0
00056 1030  ALGRTN, JA      .
00057 0056  
            /
00060 0000  ALOGE2, 0                       /.69314718 = LN(2)
00061 2613          2613
00062 4414          4414
            /
00063 0000  ALOGL1, 0                       /.99999642
00064 3777          3777
00065 7742          7742
            /
00066 7777  ALOGL2, 7777                    /-.49987411
00067 4000          4000
00070 4100          4100
            /
00071 7777  ALOGL3, 7777                    /.33179903
00072 2517          2517
00073 0310          0310
            /
00074 7776  ALOGL4, 7776                    /-.24073383
00075 4113          4113
00076 7211          7211
            /
00077 7776  ALOGL5, 7776                    /.16765407
00100 2535          2535
00101 3301          3301
            /
00102 7775  ALOGL6, 7775                    /-.09532939
00103 4746          4746
00104 0771          0771
            /
00105 7774  ALOGL7, 7774                    /.03608850
00106 2236          2236
00107 4304          4304
            /
00110 7771  ALOGL8, 7771                    /-.00645355
00111 4544          4544
00112 1735          1735
            /
                    BASE    0
00113 0006  #ALOG,  STARTD
00114 0210          FLDA    10*3
00115 6400          FSTA    ALGRTN
00116 0056  
00117 0200          FLDA    0
00120 1100          SETX    XRALOG
00121 0025  
00122 1110          SETB    BPALOG
00123 0022  
                    BASE    BPALOG
00124 0101          LDX     1,1     
00125 0001  
00126 6200          FSTA    BPALOG
00127 0610          FLDA%   BPALOG,1        /ADDR OF X
RALF V50A    8-APR-92    PAGE 1-2

00130 6200          FSTA    BPALOG
00131 0005          STARTF
00132 0600          FLDA%   BPALOG          /GET X
00133 1020          JLE     ALOGER          /IF =<0 THEN ERROR
00134 0011  
00135 0100          LDX     -1,0            /IF >0 THEN START DOING
00136 7777  
00137 6202          FSTA    ALOG1           /SAVE IN A TEMP.
00140 2204          FSUB    F1ALOG          /KNOCK OFF ONE.
00141 1000          JEQ     ALGRTN          /IF ZERO EXIT. LOG(1)=0
00142 0056  
00143 1010          JGE     ALOGST          /IF POSITIVE LOG>0
00144 0154  
00145 0204          FLDA    F1ALOG          /NEGATIVE. INVERT IT.
00146 3202          FDIV    ALOG1           /BY DIVIDING INTO ONE.
00147 6202          FSTA    ALOG1
00150 0100          LDX     0,0             /RESET SIGN TO NEGATIVE.
00151 0000  
00152 1030          JA      .+3             /AVOID USELESS LOAD INSTRUCTION.
00153 0155  
            /
00154 0202  ALOGST, FLDA    ALOG1           /RECALL NUMBER.
00155 3205          FDIV    F2ALOG          /CUT IN HALF.
00156 6400          FSTA    ALOGTM          /PREPARE FOR EXPONENT DIDDLE.
00157 0005  
00160 0206          FLDA    ALOGMG          /SET THE EXPONENT OF THE EXPONENT TO 13.
00161 6400          FSTA    ALOGTM-3        /SO THAT NORMALIZE WILL DO JOB.
00162 0002  
00163 6400          FSTA    ALOGTM+1        /AND ALSO ZERO LOW ORDER PART OF EX. MANT.
00164 0006  
00165 0400          FLDA    ALOGTM-1        /RECALL THE NUMBER
00166 0004  
00167 0004          FNORM                   /NORMALIZE IT.
00170 4212          FMUL    ALOGE2          /NOW MULTIPLY EXPONENT BY LOG E 2
00171 6203          FSTA    ALOG2           /AND SAVE IT FOR A SECOND.
00172 0202          FLDA    ALOG1           /RECALL THE NUMBER AGAIN.
00173 6400          FSTA    ALOGTM          /STORE IN THE TEMPORARY WORKER.
00174 0005  
00175 0207          FLDA    ALOGP1          /RECALL WORD WITH LOW ORDER ONE.
00176 6400          FSTA    ALOGTM-2        /STORE AWAY.
00177 0003  
00200 0400          FLDA    ALOGTM          /RECALL NUMBER WITH AN EXPONENT OF 1
00201 0005  
00202 2204          FSUB    F1ALOG          /SUBTRACT AWAY.
00203 6202          FSTA    ALOG1           /AND STORE
00204 4222          FMUL    ALOGL8          /MULTIPLY BY THE CONSTANT.
00205 1221          FADD    ALOGL7          /ADD IN
00206 4202          FMUL    ALOG1           /MULT.
00207 1220          FADD    ALOGL6          /AND SO ON DOWN THE LINE.
00210 4202          FMUL    ALOG1
00211 1217          FADD    ALOGL5
00212 4202          FMUL    ALOG1
00213 1216          FADD    ALOGL4
00214 4202          FMUL    ALOG1
00215 1215          FADD    ALOGL3
00216 4202          FMUL    ALOG1
RALF V50A    8-APR-92    PAGE 1-3

00217 1214          FADD    ALOGL2
00220 4202          FMUL    ALOG1
00221 1213          FADD    ALOGL1
00222 4202          FMUL    ALOG1
00223 1203          FADD    ALOG2           /CORRECT NOW.ADD IN EXPONENT.
00224 2000          JXN     ALGRTN,0        /EXIT IF SIGN IS OK.
00225 0056  
00226 0003          FNEG                    /ELSE NEGATE IT.
00227 1030          JA      ALGRTN
00230 0056  
RALF V50A    8-APR-92    PAGE 2

            
RALF V50A    8-APR-92    PAGE 2-1

NO ERRORS 
25 SYMBOLS, NO ABS REFS 

 #      C 00000   #ALOG    00113   #ARGER X 00000   #MAIN  S 00000  
 ALGRTN   00056   ALOG   S 00231   ALOGER   00011   ALOGE2   00060  
 ALOGL1   00063   ALOGL2   00066   ALOGL3   00071   ALOGL4   00074  
 ALOGL5   00077   ALOGL6   00102   ALOGL7   00105   ALOGL8   00110  
 ALOGMG   00044   ALOGP1   00047   ALOGST   00154   ALOGTM   00005  
 ALOGXR   00016   ALOG1    00030   ALOG2    00033   BPALOG   00022  
 F1ALOG   00036   F2ALOG   00041   XRALOG   00025