CTITLEARCSM -- COMPUTE MAGNITUDE OF A COMPLEX ARRAY 00010000 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR STU NELAN 00020000 CA DESIGNER STU NELAN 00030000 CA LANGUAGE FORTRAN 00040000 CA SYSTEM IBM AND CRAY 00050000 CA WRITTEN 03-25-86 00060000 C REVISED 07-11-86 ESN. FOR USE ON THE IBM. 00070000 C REVISED 07-21-88 FAC. PREVENT DIVIDE BY ZERO DURING 00071000 C NORMALIZATION. 00072000 CA 00080000 CA 00090000 CA CALL ARCSM (Z, W, A, N) 00100000 CA INPUT Z = COMPLEX ARRAY C4 00110000 CA OUTPUT W = COMPLEX ARRAY C4 00120000 CA OUTPUT A = REAL ARRAY FOR MAGNITUDE R4 00130000 CA INPUT N = NUMBER OF ELEMENTS IN EACH ARRAY Z, W, I4 00140000 CA AND A 00150000 CA 00160000 CA 00170000 CA ARCSM COMPUTES THE MAGNITUDE SPECTRUM OF THE COMPLEX ARRAY Z 00180000 CA AND STORES THE RESULT IN THE REAL ARRAY A. ARCSM ALSO DIVIDES 00190000 CA THE COMPLEX ARRAY Z BY THE RESULTING AMPLITUDE SPECTRUM AND 00200000 CA STORES THE RESULT IN THE COMPLEX ARRAY W. 00210000 CA IE. IF Z(J) = (X+IY) THEN A(J) = SQRT(X**2+Y**2) AND 00220000 CA W(J) = (X/A(J)+IY/A(J)) 00230000 CA Z AND W MAY BE THE SAME ARRAY. 00240000 CA THIS ROUTINE IS MAINLY USED TO CALCULATE THE AMPLITUDE 00250000 CA SPECTRUM. 00260000 CAEND 00270000 SUBROUTINE ARCSM (Z, W, A, N) 00280000 C 00290000 REAL A(N) 00300000 REAL W(N) 00310000 REAL Z(N) 00320000 C 00330000 DO 10 I = 1, N 00340000 10 A(I) = SQRT ( Z(2*I-1)*Z(2*I-1) + Z(2*I)*Z(2*I) ) 00350000 C 00360000 DO 20 I = 1, N 00370000 20 IF( A(I) .NE. 0.0 ) W(2*I-1) = Z(2*I-1) / A(I) 00380000 C 00390000 DO 30 I = 1, N 00400000 30 IF( A(I) .NE. 0.0 ) W(2*I) = Z(2*I) / A(I) 00410000 C 00420000 RETURN 00430000 C 00440000 END 00450000