6 REAL,
SAVE :: scale_factor
8 INTEGER,
PARAMETER :: inc=1
24 INTEGER :: nb_vect_max
32 scale_factor=1./sqrt(1.*vsize)
60 INTEGER,
INTENT(IN) :: nb_vect
61 REAL,
INTENT(IN) :: vect((vsize+inc)*nb_vect)
62 COMPLEX,
INTENT(OUT) :: tf_vect((vsize/2+1)*nb_vect)
63 REAL :: work(4*vsize*nb_vect)
65 INTEGER,
PARAMETER :: isign=-1
66 REAL :: vect_out((vsize+inc)*nb_vect)
67 TYPE(dfti_descriptor
),
POINTER :: fft_handle
70 ierr = dfticreatedescriptor( fft_handle, dfti_double, dfti_real, 1, vsize )
71 ierr = dftisetvalue(fft_handle,dfti_number_of_transforms,nb_vect)
72 ierr = dftisetvalue(fft_handle,dfti_forward_scale,scale_factor)
73 ierr = dftisetvalue(fft_handle,dfti_backward_scale,scale_factor)
74 ierr = dftisetvalue(fft_handle,dfti_placement,dfti_not_inplace)
75 ierr = dftisetvalue(fft_handle, dfti_input_distance, vsize+inc)
76 ierr = dftisetvalue(fft_handle, dfti_output_distance, (vsize/2+1)*2)
77 ierr = dfticommitdescriptor( fft_handle )
81 ierr = dfticomputeforward( fft_handle, vect, tf_vect )
83 ierr = dftifreedescriptor( fft_handle )
102 INTEGER,
INTENT(IN) :: nb_vect
103 REAL,
INTENT(OUT) :: vect((vsize+inc)*nb_vect)
104 COMPLEX,
INTENT(IN ) :: tf_vect((vsize/2+1)*nb_vect)
105 REAL :: work(4*vsize*nb_vect)
107 INTEGER,
PARAMETER :: isign=1
108 TYPE(dfti_descriptor
),
POINTER :: fft_handle
111 ierr = dfticreatedescriptor( fft_handle, dfti_double, dfti_real, 1, vsize )
112 ierr = dftisetvalue(fft_handle,dfti_number_of_transforms,nb_vect)
113 ierr = dftisetvalue(fft_handle,dfti_forward_scale,scale_factor)
114 ierr = dftisetvalue(fft_handle,dfti_backward_scale,scale_factor)
115 ierr = dftisetvalue(fft_handle,dfti_placement,dfti_not_inplace)
116 ierr = dftisetvalue(fft_handle, dfti_input_distance, (vsize/2+1)*2)
117 ierr = dftisetvalue(fft_handle, dfti_output_distance, vsize+inc)
118 ierr = dfticommitdescriptor( fft_handle )
121 ierr = dfticomputebackward( fft_handle, tf_vect, vect )
122 ierr = dftifreedescriptor( fft_handle)