C FFTR.FT FFT-V4A 4/22/76 SUBROUTINE FFTR (A,N,DIR,SGNEX) C-------ZUSATZPROGRAMM ZUR FFT FUER 2**N REELLE DATEN C A = IN- UND OUTPUTARRAY, LAENGE N+1, KOMPLEX (A,B) C A(1),...,A(N) ENTHALTEN DIE 2*N REELLEN DATEN C VORWAERTS CALL FFT C CALL REALTR MIT SGNEXP=+1. C RUECKWAERTS CALL REALTR C CALL FFT MIT SGNEXP=-1. C-------(DAZU IN EINER RICHTUNG MIT 1/N NORMIEREN) DIMENSION A(1) NH=N+1 NK=2*NH SD=3.14159265/FLOAT(N) CD=2.*SIN(.5*SD)**2 SD=SIN(SD)*SGNEX SN=0. CN=DIR IF (DIR.LT.0.) GOTO 10 A(NK-1)=A(1) A(NK)=A(2) 10 DO 20 J=1,NH,2 K=NK-J J1=J+1 K1=K+1 AA=A(J)+A(K) AB=A(J)-A(K) BA=A(J1)+A(K1) BB=A(J1)-A(K1) RE=CN*BA+SN*AB CIM=SN*BA-CN*AB A(J)=(AA+RE)*.5 A(K)=(AA-RE)*.5 A(J1)=(CIM+BB)*.5 A(K1)=(CIM-BB)*.5 AA=CN-(CD*CN+SD*SN) SN=(SD*CN-CD*SN)+SN C THE FOLLOWING THREE STATMENTS COMPENSATE FOR TRUNCATION C ERROR. IF ROUNDED ARITHMETIC IS USED, SUBSTITUTE C 20 CN=AA CN=.5-.5*(AA*AA+SN*SN) SN=CN*SN+SN 20 CN=CN*AA+AA RETURN END