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


RALF V50A    8-APR-92    PAGE 1

            /D=DATAN(D) DOUBLE PREC. ARC-TANGENT
            /
            /
            / VERSION 50A 28-MAY-80 WVDM
            /
            /
            /X,THE ARGUMENT, IS REDUCED TO 
            /0<X<1/2
            /BY THE IDENTITIES:
            /ATAN(-X)=-ATAN(X)
            /IF X>1.0 THEN ATAN(X)=PI/2 - ATAN(1/X)
            /IF .5<X<1.0 THEN ATAN(X)=ATAN(1/2)+ATAN(2*X-(1/(X+2)))
            /ATAN(X)=X FOR X<2^(-15)
            /
                    SECT    DATAN
00000 1030          JA      #DATAN
00001 0207  
                    DPCHK
00002 0401          TEXT    +DATAN +
00003 2401  
00004 1640  
00005 1100  DATNXR, SETX    XRDATN
00006 0014  
00007 1110          SETB    BPDATN
00010 0011  
00011 0000  BPDATN, F 0.0
00012 0000  
00013 0000  
00014 0000  XRDATN, F 0.0
00015 0000  
00016 0000  
00017 0001  DATFP1, F 1.0
00020 2000  
00021 0000  
00022 0000          F 0.0
00023 0000  
00024 0000  
00025 7763  DATLOW, -15
00026 2000          2000
00027 0000          0000
00030 0000          0000
00031 0000          0000
00032 0000          0000
                    ORG     10*3+BPDATN
00041 0040          FNOP
00042 1030          JA      DATNXR
00043 0005  
00044 0000          0
00045 1030  DATRTN, JA      .
00046 0045  
            /
00047 0004  LAMBDA, 0004
00050 3057          3057
00051 7537          7537
00052 4017          4017
00053 0276          0276
RALF V50A    8-APR-92    PAGE 1-1

00054 4536          4536
            /
00055 0005  DATB0,  0005
00056 3221          3221
00057 3522          3522
00060 3121          3121
00061 3352          3352
00062 5066          5066
            /
00063 0007  DATA1,  0007
00064 5372          5372
00065 4104          4104
00066 3437          3437
00067 1766          1766
00070 6167          6167
            /
00071 0003  DATB1,  0003
00072 3135          3135
00073 1757          1757
00074 0565          0565
00075 4141          4141
00076 4270          4270
            /
00077 0001  DATA2,  0001
00100 5473          5473
00101 7524          7524
00102 1112          1112
00103 4701          4701
00104 2723          2723
            /
00105 0002  DATB2,  0002
00106 2065          2065
00107 4070          4070
00110 1015          1015
00111 2710          2710
00112 3176          3176
            /
00113 7775  DATA3,  7775
00114 5374          5374
00115 4326          4326
00116 3317          3317
00117 1675          1675
00120 3124          3124
            /
00121 0001  DATB3,  0001
00122 2410          2410
00123 5255          5255
00124 0370          0370
00125 2076          2076
00126 6374          6374
            /
00127 0001  PIS2,   0001
00130 3110          3110
00131 3755          3755
00132 2421          2421
00133 0264          0264
RALF V50A    8-APR-92    PAGE 1-2

00134 3013          3013
            /
00135 7777  ATN1S2, 7777
00136 3553          3553
00137 0634          0634
00140 0530          0530
00141 3443          3443
00142 6406          6406
            /
00143 7777  DATP5,  7777
00144 3777          3777
00145 7777          7777
00146 7777          7777
00147 7777          7777
00150 7776          7776
            /
00151 0000  X,      F 0.0
00152 0000  
00153 0000  
00154 0000          F 0.0
00155 0000  
00156 0000  
            /
00157 0000  C0,     F 0.0
00160 0000  
00161 0000  
00162 0000          F 0.0
00163 0000  
00164 0000  
            /
00165 0000  DT1,    F 0.0
00166 0000  
00167 0000  
00170 0000          F 0.0
00171 0000  
00172 0000  
            /
00173 0002  DATFP2, F 2.0
00174 2000  
00175 0000  
00176 0000          F 0.0
00177 0000  
00200 0000  
            /
00201 0000  Z,      F 0.0
00202 0000  
00203 0000  
00204 0000          F 0.0
00205 0000  
00206 0000  
            /
                    BASE    0
00207 0006  #DATAN, STARTD                  /PICK UP RETURN AND ARGUMENT
00210 0210          FLDA    10*3
00211 6400          FSTA    DATRTN
00212 0045  
RALF V50A    8-APR-92    PAGE 1-3

00213 0200          FLDA    0
00214 1100          SETX    XRDATN
00215 0014  
00216 1110          SETB    BPDATN
00217 0011  
                    BASE    BPDATN
00220 0101          LDX     1,1
00221 0001  
00222 6200          FSTA    BPDATN
00223 0610          FLDA%   BPDATN,1
00224 6200          FSTA    BPDATN
00225 0050          STARTE
00226 0600          FLDA%   BPDATN          /GET X
00227 0100          LDX     -1,0            /SIGN
00230 7777  
00231 1010          JGE     .+5
00232 0236  
00233 0100          LDX     0,0             /SAVE SIGN
00234 0000  
00235 0003          FNEG
00236 6240          FSTA    X               /SAVE ARG
00237 0240          FLDA    X               /CHECK AGAINST LOWER LIMIT
00240 2204          FSUB    DATLOW          /TOO SMALL?
00241 1020          JLE     DATGO           /YES ATAN(X)=X
00242 0341  
00243 0101          LDX     -1,1
00244 7777  
00245 0002          FCLA
00246 6242          FSTA    C0
00247 0240  DATA,   FLDA    X               /REDUCE X TO RANGE 0<X<.5
00250 2202          FSUB    DATFP1  
00251 1020          JLE     DATB            />1?
00252 0260  
00253 0202          FLDA    DATFP1          /YES
00254 3240          FDIV    X               /X=1/X
00255 0101          LDX     0,1             /SET FLAG
00256 0000  
00257 6240          FSTA    X
00260 0240  DATB,   FLDA    X
00261 2236          FSUB    DATP5           />= .5
00262 1050          JLT     DATC
00263 0276  
00264 0240          FLDA    X               /X=(2X-1)/(X+2)
00265 1246          FADD    DATFP2
00266 6244          FSTA    DT1             /TEMP
00267 0240          FLDA    X
00270 4246          FMUL    DATFP2
00271 2202          FSUB    DATFP1
00272 3244          FDIV    DT1
00273 6240          FSTA    X
00274 0234          FLDA    ATN1S2          /C0=ATAN(1/2)
00275 6242          FSTA    C0
00276 0240  DATC,   FLDA    X               /COMPUTE ATAN USING ALGORITHM
00277 4240          FMUL    X
00300 6250          FSTA    Z               /Z=X*X
00301 0250          FLDA    Z
RALF V50A    8-APR-92    PAGE 1-4

00302 1230          FADD    DATB3           /Z+B3
00303 6244          FSTA    DT1
00304 0226          FLDA    DATA3
00305 3244          FDIV    DT1             /A3/(Z+B3)
00306 1224          FADD    DATB2
00307 1250          FADD    Z               /ADD Z+B2
00310 6244          FSTA    DT1             /TEMP
00311 0222          FLDA    DATA2           /A2/TEMP
00312 3244          FDIV    DT1
00313 1220          FADD    DATB1
00314 1250          FADD    Z               /ADD Z +B1
00315 6244          FSTA    DT1             /TEMP
00316 0216          FLDA    DATA1           /A1/TEMP
00317 3244          FDIV    DT1
00320 1214          FADD    DATB0           /ADD Z+B0
00321 1250          FADD    Z
00322 6244          FSTA    DT1
00323 0212          FLDA    LAMBDA          /LAMBDA*X
00324 4240          FMUL    X
00325 3244          FDIV    DT1             /DIV BY THE REST
00326 1242          FADD    C0
00327 6240          FSTA    X
00330 2010          JXN     DATD,1          /WAS X>1 ORIGINALLY?
00331 0334  
00332 0232          FLDA    PIS2            /Y ATAN(X)=PI/2-ATAN(X)
00333 2240          FSUB    X
00334 2000  DATD,   JXN     DATRTN,0        /WAS X<0?
00335 0045  
00336 0003          FNEG                    /YES
00337 1030          JA      DATRTN
00340 0045  
            /
00341 0240  DATGO,  FLDA    X
00342 1030          JA      DATD
00343 0334  
RALF V50A    8-APR-92    PAGE 2

            
RALF V50A    8-APR-92    PAGE 2-1

NO ERRORS 
29 SYMBOLS, NO ABS REFS 

 #      C 00000   #DATAN   00207   #MAIN  S 00000   ATN1S2   00135  
 BPDATN   00011   C0       00157   DATA     00247   DATAN  S 00344  
 DATA1    00063   DATA2    00077   DATA3    00113   DATB     00260  
 DATB0    00055   DATB1    00071   DATB2    00105   DATB3    00121  
 DATC     00276   DATD     00334   DATFP1   00017   DATFP2   00173  
 DATGO    00341   DATLOW   00025   DATNXR   00005   DATP5    00143  
 DATRTN   00045   DT1      00165   LAMBDA   00047   PIS2     00127  
 X        00151   XRDATN   00014   Z        00201