      subroutine ftprep(W,N)
      double precision PI
      parameter (PI=3.1415926535897932384626433832795d0)
      real W(2,0:N-1)
      double precision w1,w2,w3,w4,c,s,v1,v2,v3,v4
C     N==4**K
      N16=N/16
      N8=N16*2
      N4=N8*2
      N2=N4*2
      N34=N4+N2
      N38=N4+N8
      N58=N2+N8
      N78=N-N8
      W(1,0)=1.
      W(2,0)=0.
      W(1,N2)=-1.
      W(2,N2)=0.
      W(1,N4)=0.
      W(2,N4)=1.
      W(1,N34)=0.
      W(2,N34)=-1.
      v1=DSQRT(.5d0)
c      v1=dcos(PI/4)
      v2=-v1
      W(1,N8)=v1
      W(2,N8)=v1
      W(1,N38)=v2
      W(2,N38)=v1
      W(1,N58)=v2
      W(2,N58)=v2
      W(1,N78)=v1
      W(2,N78)=v2
         w3=dcos(PI/N2)
         c=w3
         w4=dsin(PI/N2)
         s=w4
         W(1,1)=w3
         W(2,1)=w4
         v2=v1
         v3=v1*c-v2*s
         v4=v2*c+v1*s
         W(1,N8+1)=v3
         W(2,N8+1)=v4
           W(1,N2+1)=-W(1,1)
           W(2,N2+1)=-W(2,1)
           W(1,N4+1)=-W(2,1)
           W(2,N4+1)=W(1,1)
           W(1,N34+1)=W(2,1)
           W(2,N34+1)=-W(1,1)
           W(1,N2-1)=-W(1,1)
           W(2,N2-1)=W(2,1)
           W(1,N4-1)=W(2,1)
           W(2,N4-1)=W(1,1)
           W(1,N34-1)=-W(2,1)
           W(2,N34-1)=-W(1,1)
           W(1,N-1)=W(1,1)
           W(2,N-1)=-W(2,1)
           W(1,N8-1)=W(2,N8+1)
           W(2,N8-1)=W(1,N8+1)
           W(1,N38-1)=-W(2,N8-1)
           W(2,N38-1)=W(1,N8-1)
           W(1,N38+1)=W(1,N8-1)
           W(2,N38+1)=-W(2,N8-1)
           W(1,N78-1)=W(2,N8-1)
           W(2,N78-1)=-W(1,N8-1)
           W(1,N78+1)=-W(1,N8-1)
           W(2,N78+1)=W(2,N8-1)
           W(1,N58-1)=-W(1,N8-1)
           W(2,N58-1)=-W(2,N8-1)
           W(1,N58+1)=-W(2,N8-1)
           W(2,N58+1)=-W(1,N8-1)
      do i=2,N16-1
           v1=v3
           v2=v4
           w1=w3
           w2=w4
           w3=w1*c-w4*s
           w4=w2*c+w1*s
           v3=v1*c-v4*s
           v4=v2*c+v1*s
           W(1,i)=w3
           W(2,i)=w4
           W(1,N8+i)=v3
           W(2,N8+i)=v4
           W(1,N2+i)=-W(1,i)
           W(2,N2+i)=-W(2,i)
           W(1,N4+i)=-W(2,i)
           W(2,N4+i)=W(1,i)
           W(1,N34+i)=W(2,i)
           W(2,N34+i)=-W(1,i)
           W(1,N2-i)=-W(1,i)
           W(2,N2-i)=W(2,i)
           W(1,N4-i)=W(2,i)
           W(2,N4-i)=W(1,i)
           W(1,N34-i)=-W(2,i)
           W(2,N34-i)=-W(1,i)
           W(1,N-i)=W(1,i)
           W(2,N-i)=-W(2,i)
           W(1,N8-i)=W(2,N8+i)
           W(2,N8-i)=W(1,N8+i)
           W(1,N38-i)=-W(2,N8-i)
           W(2,N38-i)=W(1,N8-i)
           W(1,N38+i)=W(1,N8-i)
           W(2,N38+i)=-W(2,N8-i)
           W(1,N78-i)=W(2,N8-i)
           W(2,N78-i)=-W(1,N8-i)
           W(1,N78+i)=-W(1,N8-i)
           W(2,N78+i)=W(2,N8-i)
           W(1,N58-i)=-W(1,N8-i)
           W(2,N58-i)=-W(2,N8-i)
           W(1,N58+i)=-W(2,N8-i)
           W(2,N58+i)=-W(1,N8-i)
      enddo
         i=N16
           w1=w3
           w2=w4
           w3=w1*c-w4*s
           w4=w2*c+w1*s
           W(1,i)=w3
           W(2,i)=w4
           W(1,N2+i)=-W(1,i)
           W(2,N2+i)=-W(2,i)
           W(1,N4+i)=-W(2,i)
           W(2,N4+i)=W(1,i)
           W(1,N34+i)=W(2,i)
           W(2,N34+i)=-W(1,i)
           W(1,N2-i)=-W(1,i)
           W(2,N2-i)=W(2,i)
           W(1,N4-i)=W(2,i)
           W(2,N4-i)=W(1,i)
           W(1,N34-i)=-W(2,i)
           W(2,N34-i)=-W(1,i)
           W(1,N-i)=W(1,i)
           W(2,N-i)=-W(2,i)
      return
      end
