FFTW (1-D Serial) (Real to Complex to Real)
Program rupak
implicit none
integer ( kind = 4 ), parameter :: N = 10
integer ( kind = 4 ), parameter :: Nh = ( N / 2 ) + 1
include "fftw3.f"
integer ( kind = 4 ) i,j
complex ( kind = 8 ) uk(Nh)
real ( kind = 8 ) u(N),u_dum(N)
integer ( kind = 8 ) plan_forward,plan_backward
integer :: seed
seed = 123456789
write(*,*)
do i = 1,N
u(i) = ran(seed)
seed=u(i)*seed
write(*,*) i,u(i), "u"
enddo
write(*,*)
call dfftw_plan_dft_r2c_1d_ (plan_forward, N, u, uk, FFTW_ESTIMATE)
call dfftw_execute_ (plan_forward)
do i = 1,Nh
uk(i) = uk(i)
!write(*, '(2x,i4,2x,i4,2x,2g14.6)') i,uk(i)
enddo
write(*,*)
call dfftw_plan_dft_c2r_1d_ (plan_backward, N, uk, u_dum, FFTW_ESTIMATE)
call dfftw_execute_ (plan_backward)
do i = 1,N
write(*,*) i,u_dum(i)/dfloat(N), "u_dum"
enddo
write(*,*)
call dfftw_destroy_plan_ ( plan_forward )
call dfftw_destroy_plan_ ( plan_backward )
end