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