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