File: EXPCI.RA of Disk: V50/Source/Source-Listing-RALF-1
(Source file text)
/C=C**R COMPLEX RAISED TO INTEGER OR REAL INT. FUNC. / / / VERSION 50A 27-MAY-80 WVDM / / /C=A+I*B /C^D=R^D*EXP(D*I*THETA) / /C IS IN #BASE /D IS IN AC / /ENTER IN STARTF,EXIT IN STARTE / SECT #EXPCI ENTRY #EXPCR DPCHK EXTERN SQRT EXTERN ATAN2 EXTERN SIN EXTERN COS EXTERN EXP3 EXTERN #CAC / BASE 0 #EXPCR, JA . FSTA EXPON,0 FLDA 0 /REAL FSTA A,0 FLDA 3 /IMAG FSTA B,0 / BASE .+2000 /SET DUMMY BASE PAGE / FLDA A /R=SQRT(A*A+B*B) FMUL A FSTA R FLDA B FMUL B FADD R FSTA R JSR SQRT JA .+4 JA R FSTA R JSR EXP3 /R^EXPON JA .+6 JA R JA EXPON FSTA R JSR ATAN2 /THETA=ATAN(B/A) JA .+6 JA B JA A FMUL EXPON /THETA*EXPON FSTA A /PHASE ANGLE JSR SIN /IMAG=R*SIN(PHASE) JA .+4 JA A FMUL R FSTA B JSR COS /REAL=R*COS(PHASE) JA .+4 JA A FMUL R FSTA A JGE .+3 /SKIP IF RESULT IS POS FNEG /IF NOT,MAKE IT POS FSUB LOWLIM /TEST FOR ZERO JGE .+5 /JUMP IF NOT 0 FCLA /ASSUME RESULT SHOULD BE 0 FSTA A /AND STORE A 0 STARTE /RETURN RESULT IN #CAC AND STARTE FLDA A FSTA #CAC JA #EXPCR / A, F 0.0 B, F 0.0 EXPON, F 0.0 R, F 0.0 LOWLIM, F 0.000009 /NUMBERS >= 1.E-5 OK