subroutine fftww(n,array,dir) complex array(*),out(65536) integer dir integer plani(16),planf(16) common /fftwcommon/planf,plani c plan creation if dir = 0 if(dir.eq.0)then do i=2,16 if(2**i.eq.n)go to 1 end do write(*,*)'Illegal length' return 1 call fftw_f77_create_plan(planf(i),n,-1,8) call fftw_f77_create_plan(plani(i),n,1,8) return end if c calculate transform if(dir.eq.-1)then if(n.eq.4)call fftw_f77_one(planf(2),array,out) if(n.eq.8)call fftw_f77_one(planf(3),array,out) if(n.eq.16)call fftw_f77_one(planf(4),array,out) if(n.eq.32)call fftw_f77_one(planf(5),array,out) if(n.eq.64)call fftw_f77_one(planf(6),array,out) if(n.eq.128)call fftw_f77_one(planf(7),array,out) if(n.eq.256)call fftw_f77_one(planf(8),array,out) if(n.eq.512)call fftw_f77_one(planf(9),array,out) if(n.eq.1024)call fftw_f77_one(planf(10),array,out) if(n.eq.2048)call fftw_f77_one(planf(11),array,out) if(n.eq.4096)call fftw_f77_one(planf(12),array,out) if(n.eq.8192)call fftw_f77_one(planf(13),array,out) if(n.eq.16384)call fftw_f77_one(planf(14),array,out) if(n.eq.32768)call fftw_f77_one(planf(15),array,out) if(n.eq.65536)call fftw_f77_one(planf(16),array,out) end if if(dir.eq. 1)then if(n.eq.4)call fftw_f77_one(plani(2),array,out) if(n.eq.8)call fftw_f77_one(plani(3),array,out) if(n.eq.16)call fftw_f77_one(plani(4),array,out) if(n.eq.32)call fftw_f77_one(plani(5),array,out) if(n.eq.64)call fftw_f77_one(plani(6),array,out) if(n.eq.128)call fftw_f77_one(plani(7),array,out) if(n.eq.256)call fftw_f77_one(plani(8),array,out) if(n.eq.512)call fftw_f77_one(plani(9),array,out) if(n.eq.1024)call fftw_f77_one(plani(10),array,out) if(n.eq.2048)call fftw_f77_one(plani(11),array,out) if(n.eq.4096)call fftw_f77_one(plani(12),array,out) if(n.eq.8192)call fftw_f77_one(plani(13),array,out) if(n.eq.16384)call fftw_f77_one(plani(14),array,out) if(n.eq.32768)call fftw_f77_one(plani(15),array,out) if(n.eq.65536)call fftw_f77_one(plani(16),array,out) end if return end