CTITLECFFT2 -- COMPLEX-TO-COMPLEX FFT 00010001 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR STU NELAN 00020001 CA DESIGNER STU NELAN 00030001 CA LANGUAGE FORTRAN 00040001 CA SYSTEM IBM (SEE CRAY SYSTEM LIBRARY) 00050001 CA WRITTEN 09-02-87 00060001 C REVISED MM-DD-YY III. ... 00070001 CA 00080001 CA 00090001 CA CALL CFFT2 (INIT, IX, N, X, WORK, Y) 00100001 CA INPUT INIT = INITIALIZATION SWITCH I4 00110001 CA 0 = GENERATES SIN/COS TABLES IN WORK 00120001 CA 0 <> CALCULATES FOURIER TRANSFORMS 00130001 CA INPUT IX = FFT SWITCH I4 00140001 CA >0 CALCULATES FOURIER ANALYSIS 00150001 CA <0 CALCULATES FOURIER SYNTHESIS 00160001 CA INPUT N = SIZE OF FFT I4 00170001 CA INPUT X = INPUT VECTOR OF LENGTH N R4 00180001 CA WORK WORK = WORK ARRAY R4 00190001 CA OUTPUT Y = RESULT VECTOR OF LENGTH (N/2)+1 COMPLEX C4 00200001 CA 00210001 CA 00220001 CA CFFT2 SIMULATES THE CRAY CFFT2 ROUTINE. 00230001 CAEND 00240001 SUBROUTINE CFFT2 (INIT, IX, N, X, WORK, Y) 00250001 C 00260001 REAL WORK (1) 00270001 REAL X (1) 00280001 REAL Y (1) 00290001 C 00300001 IF (INIT .NE. 0) GO TO 50 00310001 C 00320001 NT2 = N * 2 00330001 CALL ARMVE (X, Y, NT2) 00340001 CALL S1FMAG (N, MAG, LFOUR) 00350001 C 00360001 IF (IX .GT. 0) CALL S2FFI2 (MAG, Y, *100) 00370001 C 00380001 IF (IX .LT. 0) CALL S2FFT2 (MAG, Y, *100) 00390001 C 00400001 SCALE = SQRT(N*1.0) 00410001 DO 10 I = 1, NT2 00420001 10 Y(I) = Y(I) * SCALE 00430001 C 00440001 50 RETURN 00450001 C 00460001 100 CALL XDUMPX 00470001 GO TO 50 00480001 C 00490001 END 00500001