File: EXPCC.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text)
RALF V50A 8-APR-92 PAGE 1 /C=C**C EXPCC COMPLEX RAISED TO COMPLEX INT. FUNC. / / / VERSION 50A 27-MAY-80 WVDM / / /(A+I*B)^(C+I*D) /A+B=0 YIELDS 0 /B+D=0 MEANS USE EXP3 TO CALCULATTE A^C /A+B=0,C+D=0 YIELDS 1.0 /ENTER + EXIT IN STARTE / SECT #EXPCC DPCHK EXTERN #CAC EXTERN EXP EXTERN COS EXTERN SIN EXTERN ALOG EXTERN EXP3 EXTERN ATAN2 EXTERN SQRT / BASE 0 00000 1030 EXPCC, JA . 00001 0000 00002 6400 FSTA C,0 00003 0350 00004 0200 FLDA 0 00005 6400 FSTA A,0 00006 0342 00007 0005 STARTF BASE .+2000 00010 0030 XTA 0 00011 6400 FSTA T1 /SAVE XR 0 00012 0406 00013 0400 FLDA A 00014 0342 00015 1040 JNE EX1 /A NOT 0 00016 0031 00017 0400 FLDA B 00020 0345 00021 1040 JNE EX1 00022 0031 00023 0050 STARTE /A=B=0 00024 0002 FCLA 00025 6400 EX, FSTA #CAC /RESULT = 0 00026 0000 00027 1030 JA EXPCC 00030 0000 / 00031 0400 EX1, FLDA C /C+D=0? 00032 0350 00033 1040 JNE EX2 00034 0046 00035 0400 FLDA D RALF V50A 8-APR-92 PAGE 1-1 00036 0353 00037 1040 JNE EX2 00040 0046 00041 0050 STARTE 00042 0400 FLDA FP1 /RESULT = 1 IF C=D=0 00043 0400 00044 1030 JA EX 00045 0025 / 00046 0400 EX2, FLDA B 00047 0345 00050 1040 JNE EX3 /USE EXP3 IF B=D=0 00051 0076 00052 0400 FLDA D 00053 0353 00054 1040 JNE EX3 00055 0076 00056 0005 STARTF 00057 1130 JSR EXP3 00060 0000 00061 1030 JA .+6 00062 0067 00063 1030 JA A 00064 0342 00065 1030 JA C 00066 0350 00067 6400 FSTA A 00070 0342 00071 0050 STARTE 00072 0400 FLDA A /RETURN AS REAL PART 00073 0342 00074 1030 JA EX 00075 0025 / 00076 0005 EX3, STARTF 00077 1130 JSR ATAN2 /TH=ATAN(B/A) 00100 0000 00101 1030 JA .+6 00102 0107 00103 1030 JA B 00104 0345 00105 1030 JA A 00106 0342 00107 6400 FSTA TH 00110 0361 00111 0400 FLDA A /LOGR=ALOG(SQRT(A*A+B*B)) 00112 0342 00113 4400 FMUL A 00114 0342 00115 6400 FSTA LOGR 00116 0356 00117 0400 FLDA B 00120 0345 00121 4400 FMUL B 00122 0345 00123 1400 FADD LOGR RALF V50A 8-APR-92 PAGE 1-2 00124 0356 00125 6400 FSTA LOGR 00126 0356 00127 1130 JSR SQRT 00130 0000 00131 1030 JA .+4 00132 0135 00133 1030 JA LOGR 00134 0356 00135 6400 FSTA LOGR 00136 0356 00137 1130 JSR ALOG 00140 0000 00141 1030 JA .+4 00142 0145 00143 1030 JA LOGR 00144 0356 00145 6400 FSTA LOGR 00146 0356 00147 0400 FLDA C /ARG=C*TH+D*LOGR 00150 0350 00151 4400 FMUL TH 00152 0361 00153 6400 FSTA ARG 00154 0364 00155 0400 FLDA D 00156 0353 00157 4400 FMUL LOGR 00160 0356 00161 1400 FADD ARG 00162 0364 00163 6400 FSTA ARG 00164 0364 00165 1130 JSR SIN /CALCULATE IN AND COS OF ARG. 00166 0000 00167 1030 JA .+4 /SAVE SIGN OF EACH 00170 0173 00171 1030 JA ARG 00172 0364 00173 6400 FSTA SINE 00174 0367 00175 1130 JSR COS 00176 0000 00177 1030 JA .+4 00200 0203 00201 1030 JA ARG 00202 0364 00203 6400 FSTA CSINE 00204 0372 00205 0400 FLDA D /CALL C*LOGR-D*TH 00206 0353 00207 4400 FMUL TH 00210 0361 00211 6400 FSTA REST 00212 0375 00213 0400 FLDA C RALF V50A 8-APR-92 PAGE 1-3 00214 0350 00215 4400 FMUL LOGR 00216 0356 00217 2400 FSUB REST 00220 0375 00221 6400 FSTA REST 00222 0375 00223 0400 FLDA CSINE /REAL = EXP(REST+ALOG(CSINE)) 00224 0372 00225 1050 JLT .+6 00226 0233 00227 0101 LDX 0,1 /=1 IF POSITIVE 00230 0000 00231 1030 JA .+3 00232 0234 00233 0003 FNEG 00234 1120 JSA DO 00235 0277 00236 2000 JXN .+3,0 /SKIP IF POS 00237 0241 00240 0003 FNEG 00241 6400 FSTA A 00242 0342 00243 0400 FLDA SINE /IMAG 00244 0367 00245 1050 JLT .+6 00246 0253 00247 0101 LDX 0,1 00250 0000 00251 1030 JA .+5 00252 0256 00253 0100 LDX 0,0 00254 0000 00255 0003 FNEG 00256 1120 JSA DO 00257 0277 00260 2000 JXN .+3,0 00261 0263 00262 0003 FNEG /RESTORE SIGN 00263 6400 FSTA B 00264 0345 00265 0400 FLDA T1 /RESTORE XR0 00266 0406 00267 0020 ATX 0 00270 0050 STARTE 00271 0400 FLDA A 00272 0342 00273 6400 FSTA #CAC 00274 0000 00275 1030 JA EXPCC 00276 0000 / 00277 1030 DO, JA . 00300 0277 00301 6400 FSTA TH 00302 0361 RALF V50A 8-APR-92 PAGE 1-4 00303 1130 JSR ALOG 00304 0000 00305 1030 JA .+4 00306 0311 00307 1030 JA TH 00310 0361 00311 1400 FADD REST 00312 0375 00313 6400 FSTA ARG 00314 0364 00315 1130 JSR EXP 00316 0000 00317 1030 JA .+4 00320 0323 00321 1030 JA ARG 00322 0364 00323 6400 FSTA ARG 00324 0364 00325 0400 FLDA TH /CHECK SIGN 00326 0361 00327 1010 JGE DOX 00330 0336 00331 0400 FLDA ARG 00332 0364 00333 0003 FNEG 00334 6400 FSTA ARG 00335 0364 00336 0400 DOX, FLDA ARG 00337 0364 00340 1030 JA DO 00341 0277 00342 0000 A, F 0.0 00343 0000 00344 0000 00345 0000 B, F 0.0 00346 0000 00347 0000 00350 0000 C, F 0.0 00351 0000 00352 0000 00353 0000 D, F 0.0 00354 0000 00355 0000 00356 0000 LOGR, F 0.0 00357 0000 00360 0000 00361 0000 TH, F 0.0 00362 0000 00363 0000 00364 0000 ARG, F 0.0 00365 0000 00366 0000 00367 0000 SINE, F 0.0 00370 0000 00371 0000 00372 0000 CSINE, F 0.0 RALF V50A 8-APR-92 PAGE 1-5 00373 0000 00374 0000 00375 0000 REST, F 0.0 00376 0000 00377 0000 00400 0001 FP1, F 1.0 00401 2000 00402 0000 00403 0000 F 0.0 00404 0000 00405 0000 00406 0000 T1, F 0.0 00407 0000 00410 0000 RALF V50A 8-APR-92 PAGE 2 RALF V50A 8-APR-92 PAGE 2-1 NO ERRORS 28 SYMBOLS, NO ABS REFS # C 00000 #CAC X 00000 #EXPCC S 00411 #MAIN S 00000 A 00342 ALOG X 00000 ARG 00364 ATAN2 X 00000 B 00345 C 00350 COS X 00000 CSINE 00372 D 00353 DO 00277 DOX 00336 EX 00025 EXP X 00000 EXPCC 00000 EXP3 X 00000 EX1 00031 EX2 00046 EX3 00076 FP1 00400 LOGR 00356 REST 00375 SIN X 00000 SINE 00367 SQRT X 00000 TH 00361 T1 00406