* * $Id: cfft.F,v 1.1.1.1 1996/02/15 17:48:48 mclareni Exp $ * * $Log: cfft.F,v $ * Revision 1.1.1.1 1996/02/15 17:48:48 mclareni * Kernlib * * #include "kernnum/pilot.h" SUBROUTINE CFFT(A,MSIGN) COMPLEX A(1),U,W,T IF(MSIGN.EQ.0) RETURN M=IABS(MSIGN) N=2**M NV2=N/2 NM1=N-1 J=1 DO 7 I=1,NM1 IF(I.GE.J) GO TO 5 T=A(J) A(J)=A(I) A(I)=T 5 K=NV2 6 IF(K.GE.J) GO TO 7 J=J-K K=K/2 GO TO 6 7 J=J+K DO 8 I=1,N,2 T=A(I+1) A(I+1)=A(I)-T 8 A(I )=A(I)+T IF(M.EQ.1) RETURN C=0. S=ISIGN(1,MSIGN) LE=2 DO 20 L=2,M W=CMPLX(C,S) U=W C=SQRT(C*.5+.5) S=AIMAG(W)/(C+C) LE1=LE LE=LE1+LE1 DO 9 I=1,N,LE IP=I+LE1 T=A(IP) A(IP)=A(I)-T 9 A(I) =A(I)+T DO 20 J=2,LE1 DO 10 I=J,N,LE IP=I+LE1 T=A(IP)*U A(IP)=A(I)-T 10 A(I) =A(I)+T 20 U=U*W RETURN END