C 00010001 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CTITLESAPOLAR -- POLAR COORDINATE CONVERSION 00020001 CA AUTHOR B. S. BOK 00030001 CA DESIGNER B. S. BOK 00040001 CA LANGUAGE FORTRAN 00050001 CA SYSTEM IBM / CRAY 00060001 CA WRITTEN AUGUST, 1990 00070001 C REVISED 12-21-91 JJC - MODIFIED TO MEET EDP STANDARDS. C 00080001 CA 00090001 CA CALL SAPOLAR (RE, NR, XIM, NX, L, AMP, NA, PHZ, NP) CA 00110001 CA INPUT RE = REAL PART OF COMPLEX NUMBER R4 00120001 CA INPUT XIM = IMAGINARY PART OF COMPLEX NUMBER R4 00130001 CA INPUT NR = COLUMN DIMENSION OF RE I4 00140001 CA INPUT NX = COLUMN DIMENSION OF XIM I4 00150001 CA INPUT L = NUMBER OF POINTS IN RE AND XIM I4 00180001 CA INPUT NA = COLUMN DIMENSION OF AMP ARRAY I4 00190001 CA INPUT NP = COLUMN DIMENSION OF PHZ ARRAY I4 00190001 CA OUTPUT AMP = AMPLITUDE OF THE POLAR NUMBER R4 00200001 CA OUTPUT PHZ = PHASE OF THE POLAR NUMBER (RADIAN) R4 CA CA CONVERSION RE(M) + I*XIM(M) --> AMP(M)*EXP(PHZ(M)) CA CA THIS SUBROUTINE PERFORMS POLAR COORDINATE CONVERSION CA C C REMARK ; AMP(1,1) AND PHZ(1,1) MAY BE IN EQUIVALENCE C WITH RE(1,1) AND XIM(1,1) IF NR >= NA AND NX >= NP C C SUBROUTINE SAPOLAR (RE, NR, XIM, NX, L, AMP, NA, PHZ, NP) C IMPLICIT INTEGER (A-Z) C DIMENSION RE(NR,1), XIM(NX,1), PHZ(NP,1), AMP(NA,1) C REAL AMP REAL ATAN REAL HOLD REAL PHZ REAL PI REAL RE REAL SQRT REAL XIM C PI = 3.14159265 DO 110 I = 1, L RE(1,I) = RE(1,I) + 1.E-30 HOLD = SQRT(RE(1,I) * RE(1,I) + XIM(1,I) * XIM(1,I)) IF (XIM(1,I)) 10, 20, 30 10 IF (RE(1,I)) 40, 50, 60 20 IF (RE(1,I)) 70, 80, 80 30 IF (RE(1,I)) 90, 100, 60 40 PHZ(1,I) = ATAN(XIM(1,I)/RE(1,I)) - PI GO TO 110 50 PHZ(1,I) = -PI/2.0 GO TO 110 60 PHZ(1,I) = ATAN(XIM(1,I)/RE(1,I)) GO TO 110 70 PHZ(1,I) = - PI GO TO 110 80 PHZ(1,I) = 0.0 GO TO 110 90 PHZ(1,I) = ATAN(XIM(1,I)/RE(1,I)) + PI GO TO 110 100 PHZ(1,I) = PI/2.0 110 AMP(1,I) = HOLD C RETURN END