* * $Id: fftrc.F,v 1.1.1.1 1996/04/01 15:02:23 mclareni Exp $ * * $Log: fftrc.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:23 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE FFTRC(C,D,IX,F,G,IZ) C C D701 FFTRC FAST FOURIER TRANSFORM, REAL OR COMPLEX C B. FORNBERG NOVEMBER 1973 C COMPLEX A(16),T DIMENSION E(32),C(1),D(1),F(1),G(1),S(2),NC(7) COMMON /TAB/U(126),V(127) EQUIVALENCE (A(1),E(1)),(S(1),T),(S(1),S1),(S(2),S2),(U(31),C3),(U *(63),C7),(U(32),C9) DATA NC/17,9,25,5,21,13,29/ C #if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4)) ENTRY I16 #endif #if !defined(CERNLIB_CDC)||!defined(CERNLIB_F4) ENTRY I16(C,D,IX,F,G,IZ) #endif IS = IX I = 1 GOTO 40 C #if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4)) ENTRY D16 #endif #if !defined(CERNLIB_CDC)||!defined(CERNLIB_F4) ENTRY D16(C,D,IX,F,G,IZ) #endif IS = -IX I = 1+16*IX 40 J = 1+8*IX CALL D701BD E(3) = C(1)-C(J) E(1) = C(1)+C(J) E(4) = D(1)-D(J) E(2) = D(1)+D(J) DO 10 L=1,7 I = I+IS J = J+IS N = NC(L) E(N+2) = C(I)-C(J) E(N) = C(I)+C(J) E(N+3) = D(I)-D(J) 10 E(N+1) = D(I)+D(J) DO 20 L=1,13,4 T = A(L+2) A(L+2) = A(L)-T 20 A(L) = A(L)+T DO 30 L=2,14,4 S1 = E(2*L+4) S2 = -E(2*L+3) A(L+2) = A(L)-T 30 A(L) = A(L)+T T = A(5) A(5) = A(1)-T A(1) = A(1)+T T = A(13) A(13) = A(9)-T A(9) = A(9)+T S2 = -C7*(E(11)-E(12)) S1 = C7*(E(11)+E(12)) A(6) = A(2)-T A(2) = A(2)+T S2 = -C7*(E(27)-E(28)) S1 = C7*(E(27)+E(28)) A(14) = A(10)-T A(10) = A(10)+T S1 = E(14) S2 = -E(13) A(7) = A(3)-T A(3) = A(3)+T S1 = E(30) S2 = -E(29) A(15) = A(11)-T A(11) = A(11)+T S2 = -C7*(E(15)+E(16)) S1 = -C7*(E(15)-E(16)) A(8) = A(4)-T A(4) = A(4)+T S1 = -C7*(E(31)-E(32)) S2 = -C7*(E(31)+E(32)) A(16) = A(12)-T A(12) = A(12)+T I = 1 J = 1+8*IZ F(J) = E(1)-E(17) G(J) = E(2)-E(18) F(I) = E(1)+E(17) G(I) = E(2)+E(18) I = I+IZ J = J+IZ S1 = C9*E(19)+C3*E(20) S2 = C9*E(20)-C3*E(19) F(J) = E( 3)-S1 G(J) = E( 4)-S2 F(I) = E( 3)+S1 G(I) = E( 4)+S2 I = I+IZ J = J+IZ S1 = C7*(E(21)+E(22)) S2 = -C7*(E(21)-E(22)) F(J) = E( 5)-S1 G(J) = E( 6)-S2 F(I) = E( 5)+S1 G(I) = E( 6)+S2 I = I+IZ J = J+IZ S1 = C3*E(23)+C9*E(24) S2 = C3*E(24)-C9*E(23) F(J) = E( 7)-S1 G(J) = E( 8)-S2 F(I) = E( 7)+S1 G(I) = E( 8)+S2 I = I+IZ J = J+IZ F(J) = E(9)-E(26) G(J) = E(10)+E(25) F(I) = E(9)+E(26) G(I) = E(10)-E(25) I = I+IZ J = J+IZ S1 = -C3*E(27)+C9*E(28) S2 = -C3*E(28)-C9*E(27) F(J) = E(11)-S1 G(J) = E(12)-S2 F(I) = E(11)+S1 G(I) = E(12)+S2 I = I+IZ J = J+IZ S1 = -C7*(E(29)-E(30)) S2 = -C7*(E(29)+E(30)) F(J) = E(13)-S1 G(J) = E(14)-S2 F(I) = E(13)+S1 G(I) = E(14)+S2 I = I+IZ J = J+IZ S1 = -C9*E(31)+C3*E(32) S2 = -C9*E(32)-C3*E(31) F(J) = E(15)-S1 G(J) = E(16)-S2 F(I) = E(15)+S1 G(I) = E(16)+S2 RETURN END