SUBROUTINE RK(ZR,ZK,KTX,KTY,IKTX,IKTY,N,N2,LWRK, 24,3
     .                   FF1,FF2,FF3,WORK,TRIGS,IFAX,ZI)
C
C      CALLS GRID POINT - SPECTRAL TRANSFORMS.
C
       IMPLICIT NONE
       INTEGER  N,N2,J,K,LWRK,IFAX(10),KX,KY,IKYR,IKYI
       INTEGER  KTX,KTY,IKTX,IKTY,NC,I,KR,KI,IKX,IKY
C
       REAL     TRIGS(3*N/2), ZR(N,N), WORK(LWRK)
       REAL     FF1(N2,N2),FF2(N2,N2),FF3(N2,N2)
       COMPLEX  ZI,ZKR,ZKI,ZK(IKTX,IKTY)

       EXTERNAL FFT991
C
       NC = N2/2
C
       DO 35 I=1,N2 
       DO 35 J=1,N2 
         FF1(I,J) = 0.0
         FF2(I,J) = 0.0
35     FF3(I,J) = 0.0
C
       DO 36 I=1,N
       DO 36 J=1,N
36     FF1(I,J) = ZR(I,J)
C
        CALL FFT991(FF1,WORK,TRIGS,IFAX,1,N2,N,N,-1)


       DO 40 J=1,N
       DO 40 K=1,NC 
         KR = K + K - 1
         FF2(J,K) = FF1(KR,J) 
40     CONTINUE
C
       DO 42 J=1,N
       DO 42 K=1,NC 
         KI = K + K 
         FF3(J,K) = FF1(KI,J) 
42     CONTINUE
C
         CALL FFT991(FF2,WORK,TRIGS,IFAX,1,N2,N,NC,-1)
         CALL FFT991(FF3,WORK,TRIGS,IFAX,1,N2,N,NC,-1)
C
       DO 45 IKX=1,IKTX
         KX = IKX-1 
         DO 45 IKY=1,KTY+1
           KY   = IKY - 1
           IKYR =  KY + KY + 1
           IKYI =  KY + KY + 2
           ZKR = FF2(IKYR,IKX) + ZI*FF2(IKYI,IKX) 
           ZKI = FF3(IKYR,IKX) + ZI*FF3(IKYI,IKX) 
           ZK(IKX,KY+KTY+1) = ZKR + ZI*ZKI
45     CONTINUE
C
       DO 55 IKX=1,IKTX
         KX = IKX-1 
         DO 55 IKY=1,KTY
           KY   =  IKY - 1 - KTY
           IKYR = - KY - KY + 1
           IKYI = - KY - KY + 2
           ZKR = FF2(IKYR,IKX) + ZI*FF2(IKYI,IKX) 
           ZKI = FF3(IKYR,IKX) + ZI*FF3(IKYI,IKX) 
           ZK(IKX,KY+KTY+1) = CONJG(ZKR) + ZI*CONJG(ZKI)
55     CONTINUE
C
       RETURN
       END