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


RALF V50A    8-APR-92    PAGE 1

            /D=DEXP(D) DOUBLE PREC. EXPONENTIAL
            /
            /
            / VERSION 50A 28-MAY-80 WVDM
            /
            /
            /E^X=2^(X*LOG2(E))
            /E^X=2^(M+F)
            /M=INTEGER; F=FRACTION
            /
            /2^(M+F)=2^(M+N+R)
            /WHERE 0<R<1/8
            /AND M+N+R=M+F=X*LOG2(E)
            /
            /(2^M)*(2^N)*(2^R)=E^X
            /
            /2^M IS CALCULATED BY SUCCESSIVE MULTIPLIES
            /2^N IS CALCULATED BY LOOK UP
            /2^R=1+<A4/((B4/R)-C4+(D4*R)+(H4/(R+(B4/R))))>
            /
            /RESTRICTIONS:
            /X=0 IMPLIES E^X=1
            /
            /
                    SECT    DEXP
00000 1030          JA      #DEXP
00001 0223  
                    DPCHK
00002 0405          TEXT    +DEXP  +
00003 3020  
00004 4040  
00005 1100  DEXPXR, SETX    XRDEXP
00006 0014  
00007 1110          SETB    BPDEXP
00010 0011  
00011 0000  BPDEXP, F 0.0
00012 0000  
00013 0000  
00014 0000  XRDEXP, F 0.0
00015 0000  
00016 0000  
00017 0000  X,      F 0.0
00020 0000  
00021 0000  
00022 0000          F 0.0
00023 0000  
00024 0000  
00025 0000  DTEMP1, F 0.0
00026 0000  
00027 0000  
00030 0000          F 0.0
00031 0000  
00032 0000  
00033 0002  DFP2,   F 2.0
00034 2000  
00035 0000  
RALF V50A    8-APR-92    PAGE 1-1

00036 0000          F 0.0
00037 0000  
00040 0000  
                    ORG     10*3+BPDEXP
00041 0040          FNOP
00042 1030          JA      DEXPXR
00043 0005  
00044 0000          0
00045 1030  DEXRTN, JA      .
00046 0045  
            /
00047 0000  M,      F 0.0
00050 0000  
00051 0000  
00052 0000          F 0.0
00053 0000  
00054 0000  
00055 0000  N,      F 0.0
00056 0000  
00057 0000  
00060 0000          F 0.0
00061 0000  
00062 0000  
00063 0000  R,      F 0.0
00064 0000  
00065 0000  
00066 0000          F 0.0
00067 0000  
00070 0000  
            /
00071 0001  LOG2E,  0001            /1.4426950408889634
00072 2705          2705
00073 2435          2435
00074 4512          4512
00075 7013          7013
00076 7603          7603
            /
00077 7775  DFP125, 7775            /.125
00100 3777          3777
00101 7777          7777
00102 7777          7777
00103 7777          7777
00104 7776          7776
            /
00105 0001  DEXFP1, F 1.0           /2^0/8
00106 2000  
00107 0000  
00110 0000          F 0.0
00111 0000  
00112 0000  
            /
00113 0001  DFR1S8, 0001            /2^1/8
00114 2134          2134
00115 5340          5340
00116 7437          7437
00117 2505          2505
RALF V50A    8-APR-92    PAGE 1-2

00120 7302          7302
            /
00121 0001  DFP2S8, 0001            /2^2/8
00122 2301          2301
00123 5770          5770
00124 1214          1214
00125 3334          3334
00126 2524          2524
            /
00127 0001  DFP3S8, 0001            /2^3/8
00130 2457          2457
00131 7553          7553
00132 2515          2515
00133 4250          4250
00134 4720          4720
            /
00135 0001  DFP4S8, 0001            /2^4/8
00136 2650          2650
00137 1171          1171
00140 4637          4637
00141 6357          6357
00142 1425          1425
            /
00143 0001  DFP5S8, 0001            /2^5/8
00144 3053          3053
00145 1625          1625
00146 0212          0212
00147 5174          5174
00150 3070          3070
            /
00151 0001  DFP6S8, 0001            /2^6/8
00152 3272          3272
00153 1176          1176
00154 3126          3126
00155 5516          5516
00156 5532          5532
            /
00157 0001  DFP7S8, 0001            /2^7/8
00160 3526          3526
00161 0143          0143
00162 3476          3476
00163 7222          7222
00164 0722          0722
            /
00165 0006  DEXA4,  0006            /60.593191717336463
00166 3622          3622
00167 7666          7666
00170 6462          6462
00171 2157          2157
00172 5534          5534
            /
00173 0007  DEXB4,  0007            /87.417497202235527
00174 2566          2566
00175 5341          5341
00176 0613          0613
00177 6705          6705
RALF V50A    8-APR-92    PAGE 1-3

00200 7214          7214
            /
00201 0005  DEXC4,  0005            /30.296595858668232
00202 3622          3622
00203 7666          7666
00204 6462          6462
00205 2157          2157
00206 5546          5546
            /
00207 0001  DEXD4,  0001            /1.0500
00210 2063          2063
00211 1463          1463
00212 1463          1463
00213 1463          1463
00214 1462          1462
            /
00215 0010  DEXH4,  0010            /214.17286814547704
00216 3261          3261
00217 3040          3040
00220 4261          4261
00221 5654          5654
00222 0240          0240
            /
                    BASE    0
00223 0006  #DEXP,  STARTD
00224 0210          FLDA    10*3
00225 6400          FSTA    DEXRTN
00226 0045  
00227 0200          FLDA    0
00230 1100          SETX    XRDEXP
00231 0014  
00232 1110          SETB    BPDEXP
00233 0011  
                    BASE    BPDEXP
00234 0101          LDX     1,1
00235 0001  
00236 0102          LDX     73,2            /FOR ALIGNING
00237 0073  
00240 6200          FSTA    BPDEXP
00241 0610          FLDA%   BPDEXP,1        /ADDRESS OF X
00242 6200          FSTA    BPDEXP
00243 0050          STARTE
00244 0600          FLDA%   BPDEXP          /GET X
00245 0100          LDX     0,0
00246 0000  
00247 1060          JGT     DEX1            /CHECK SIGN
00250 0254  
00251 0003          FNEG
00252 0100          LDX     -1,0            /SET FLAG
00253 7777  
00254 1040  DEX1,   JNE     DEX2            /X=0
00255 0261  
00256 0224          FLDA    DEXFP1          /E^0=1
00257 1030          JA      DEXRTN
00260 0045  
00261 6202  DEX2,   FSTA    X
RALF V50A    8-APR-92    PAGE 1-4

00262 1030          JA      DEX4
00263 0267  
00264 0002  DEX3,   FCLA
00265 1030          JA      DEXRTN          /RETURN 0 FOR TOO SMALL
00266 0045  
            /
            /SET UP M+N+R=X*LOG2(E)
00267 0220  DEX4,   FLDA    LOG2E
00270 4202          FMUL    X
00271 6202          FSTA    X
00272 0202          FLDA    X
00273 0012          ALN     2               /FIX
00274 0004          FNORM                   /FLOAT
00275 6212          FSTA    M               /INTEGER PART
00276 0202          FLDA    X
00277 2212          FSUB    M
00300 6214          FSTA    N               /FRACTION
00301 1040          JNE     DEX50           /0 IS SPECIAL CASE
00302 0310  
00303 0224          FLDA    DEXFP1          /1.0
00304 6214          FSTA    N               /N
00305 6216          FSTA    R               /R
00306 1030          JA      DEX20           /SKIP 
00307 0361  
            /
            /CALCULATE N+R
00310 0101  DEX50,  LDX     0,1
00311 0000  
00312 0214          FLDA    N
00313 6216          FSTA    R               /IF < .125 ALREADY
00314 2222  DEX5,   FSUB    DFP125          /-.125
00315 1050          JLT     DEX6            /DONE IF .LT.
00316 0324  
00317 6216          FSTA    R               /STORE REMAINDER
00320 0111          ADDX    1,1             /NEXT POWER OF 2
00321 0001  
00322 1030          JA      DEX5            /AND AGAIN
00323 0314  
            /
            /GET N FROM TABLE
00324 0410  DEX6,   FLDA    DEXFP1,1
00325 0105  
00326 6214          FSTA    N
            /
            /NOW CALCULATE R
00327 0216          FLDA    R               /IF R=0
00330 1040          JNE     DEX7
00331 0336  
00332 0224          FLDA    DEXFP1          /2^R=1
00333 6216          FSTA    R
00334 1030          JA      DEX20           /NO CALCULATION
00335 0361  
            /
            /
00336 0246  DEX7,   FLDA    DEXB4
00337 3216          FDIV    R               /(B4/R)
RALF V50A    8-APR-92    PAGE 1-5

00340 6202          FSTA    X
00341 0252          FLDA    DEXD4           /D4*R
00342 4216          FMUL    R
00343 1202          FADD    X               /+(B4/R)
00344 2250          FSUB    DEXC4           /-C4
00345 6204          FSTA    DTEMP1
00346 0216          FLDA    R
00347 1202          FADD    X               /R+(B4/R)
00350 6216          FSTA    R
00351 0254          FLDA    DEXH4
00352 3216          FDIV    R               /H4/(R+B4/R)
00353 1204          FADD    DTEMP1
00354 6204          FSTA    DTEMP1
00355 0244          FLDA    DEXA4
00356 3204          FDIV    DTEMP1
00357 1224          FADD    DEXFP1
00360 6216          FSTA    R
            /
            /CALCULATE 2^M
            /
00361 0212  DEX20,  FLDA    M
00362 1040          JNE     DEX21
00363 0367  
00364 0224          FLDA    DEXFP1
00365 1030          JA      DEX23
00366 0375  
00367 0003  DEX21,  FNEG
00370 0021          ATX     1
00371 0224          FLDA    DEXFP1
00372 4206  DEX22,  FMUL    DFP2
00373 2110          JXN     DEX22,1+
00374 0372  
00375 6212  DEX23,  FSTA    M               /M*2
            /
            /CALCULATE M*N*R
            /
00376 0212  DEX30,  FLDA    M
00377 4214          FMUL    N
00400 4216          FMUL    R
00401 6202          FSTA    X
00402 2000          JXN     DEX31,0         /WAS X MINUS
00403 0406  
00404 1030          JA      DEXRTN
00405 0045  
00406 0224  DEX31,  FLDA    DEXFP1          /.1/X IF -X
00407 3202          FDIV    X
00410 1030          JA      DEXRTN
00411 0045  
RALF V50A    8-APR-92    PAGE 2

            
RALF V50A    8-APR-92    PAGE 2-1

NO ERRORS 
41 SYMBOLS, NO ABS REFS 

 #      C 00000   #DEXP    00223   #MAIN  S 00000   BPDEXP   00011  
 DEXA4    00165   DEXB4    00173   DEXC4    00201   DEXD4    00207  
 DEXFP1   00105   DEXH4    00215   DEXP   S 00412   DEXPXR   00005  
 DEXRTN   00045   DEX1     00254   DEX2     00261   DEX20    00361  
 DEX21    00367   DEX22    00372   DEX23    00375   DEX3     00264  
 DEX30    00376   DEX31    00406   DEX4     00267   DEX5     00314  
 DEX50    00310   DEX6     00324   DEX7     00336   DFP125   00077  
 DFP2     00033   DFP2S8   00121   DFP3S8   00127   DFP4S8   00135  
 DFP5S8   00143   DFP6S8   00151   DFP7S8   00157   DFR1S8   00113  
 DTEMP1   00025   LOG2E    00071   M        00047   N        00055  
 R        00063   X        00017   XRDEXP   00014