cannam@127
|
1 ! Generated automatically. DO NOT EDIT!
|
cannam@127
|
2
|
cannam@127
|
3 integer(C_INT), parameter :: FFTW_R2HC = 0
|
cannam@127
|
4 integer(C_INT), parameter :: FFTW_HC2R = 1
|
cannam@127
|
5 integer(C_INT), parameter :: FFTW_DHT = 2
|
cannam@127
|
6 integer(C_INT), parameter :: FFTW_REDFT00 = 3
|
cannam@127
|
7 integer(C_INT), parameter :: FFTW_REDFT01 = 4
|
cannam@127
|
8 integer(C_INT), parameter :: FFTW_REDFT10 = 5
|
cannam@127
|
9 integer(C_INT), parameter :: FFTW_REDFT11 = 6
|
cannam@127
|
10 integer(C_INT), parameter :: FFTW_RODFT00 = 7
|
cannam@127
|
11 integer(C_INT), parameter :: FFTW_RODFT01 = 8
|
cannam@127
|
12 integer(C_INT), parameter :: FFTW_RODFT10 = 9
|
cannam@127
|
13 integer(C_INT), parameter :: FFTW_RODFT11 = 10
|
cannam@127
|
14 integer(C_INT), parameter :: FFTW_FORWARD = -1
|
cannam@127
|
15 integer(C_INT), parameter :: FFTW_BACKWARD = +1
|
cannam@127
|
16 integer(C_INT), parameter :: FFTW_MEASURE = 0
|
cannam@127
|
17 integer(C_INT), parameter :: FFTW_DESTROY_INPUT = 1
|
cannam@127
|
18 integer(C_INT), parameter :: FFTW_UNALIGNED = 2
|
cannam@127
|
19 integer(C_INT), parameter :: FFTW_CONSERVE_MEMORY = 4
|
cannam@127
|
20 integer(C_INT), parameter :: FFTW_EXHAUSTIVE = 8
|
cannam@127
|
21 integer(C_INT), parameter :: FFTW_PRESERVE_INPUT = 16
|
cannam@127
|
22 integer(C_INT), parameter :: FFTW_PATIENT = 32
|
cannam@127
|
23 integer(C_INT), parameter :: FFTW_ESTIMATE = 64
|
cannam@127
|
24 integer(C_INT), parameter :: FFTW_WISDOM_ONLY = 2097152
|
cannam@127
|
25 integer(C_INT), parameter :: FFTW_ESTIMATE_PATIENT = 128
|
cannam@127
|
26 integer(C_INT), parameter :: FFTW_BELIEVE_PCOST = 256
|
cannam@127
|
27 integer(C_INT), parameter :: FFTW_NO_DFT_R2HC = 512
|
cannam@127
|
28 integer(C_INT), parameter :: FFTW_NO_NONTHREADED = 1024
|
cannam@127
|
29 integer(C_INT), parameter :: FFTW_NO_BUFFERING = 2048
|
cannam@127
|
30 integer(C_INT), parameter :: FFTW_NO_INDIRECT_OP = 4096
|
cannam@127
|
31 integer(C_INT), parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192
|
cannam@127
|
32 integer(C_INT), parameter :: FFTW_NO_RANK_SPLITS = 16384
|
cannam@127
|
33 integer(C_INT), parameter :: FFTW_NO_VRANK_SPLITS = 32768
|
cannam@127
|
34 integer(C_INT), parameter :: FFTW_NO_VRECURSE = 65536
|
cannam@127
|
35 integer(C_INT), parameter :: FFTW_NO_SIMD = 131072
|
cannam@127
|
36 integer(C_INT), parameter :: FFTW_NO_SLOW = 262144
|
cannam@127
|
37 integer(C_INT), parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288
|
cannam@127
|
38 integer(C_INT), parameter :: FFTW_ALLOW_PRUNING = 1048576
|
cannam@127
|
39
|
cannam@127
|
40 type, bind(C) :: fftw_iodim
|
cannam@127
|
41 integer(C_INT) n, is, os
|
cannam@127
|
42 end type fftw_iodim
|
cannam@127
|
43 type, bind(C) :: fftw_iodim64
|
cannam@127
|
44 integer(C_INTPTR_T) n, is, os
|
cannam@127
|
45 end type fftw_iodim64
|
cannam@127
|
46
|
cannam@127
|
47 interface
|
cannam@127
|
48 type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftw_plan_dft')
|
cannam@127
|
49 import
|
cannam@127
|
50 integer(C_INT), value :: rank
|
cannam@127
|
51 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
52 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
53 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
54 integer(C_INT), value :: sign
|
cannam@127
|
55 integer(C_INT), value :: flags
|
cannam@127
|
56 end function fftw_plan_dft
|
cannam@127
|
57
|
cannam@127
|
58 type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d')
|
cannam@127
|
59 import
|
cannam@127
|
60 integer(C_INT), value :: n
|
cannam@127
|
61 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
62 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
63 integer(C_INT), value :: sign
|
cannam@127
|
64 integer(C_INT), value :: flags
|
cannam@127
|
65 end function fftw_plan_dft_1d
|
cannam@127
|
66
|
cannam@127
|
67 type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftw_plan_dft_2d')
|
cannam@127
|
68 import
|
cannam@127
|
69 integer(C_INT), value :: n0
|
cannam@127
|
70 integer(C_INT), value :: n1
|
cannam@127
|
71 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
72 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
73 integer(C_INT), value :: sign
|
cannam@127
|
74 integer(C_INT), value :: flags
|
cannam@127
|
75 end function fftw_plan_dft_2d
|
cannam@127
|
76
|
cannam@127
|
77 type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftw_plan_dft_3d')
|
cannam@127
|
78 import
|
cannam@127
|
79 integer(C_INT), value :: n0
|
cannam@127
|
80 integer(C_INT), value :: n1
|
cannam@127
|
81 integer(C_INT), value :: n2
|
cannam@127
|
82 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
83 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
84 integer(C_INT), value :: sign
|
cannam@127
|
85 integer(C_INT), value :: flags
|
cannam@127
|
86 end function fftw_plan_dft_3d
|
cannam@127
|
87
|
cannam@127
|
88 type(C_PTR) function fftw_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
|
cannam@127
|
89 bind(C, name='fftw_plan_many_dft')
|
cannam@127
|
90 import
|
cannam@127
|
91 integer(C_INT), value :: rank
|
cannam@127
|
92 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
93 integer(C_INT), value :: howmany
|
cannam@127
|
94 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
95 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
96 integer(C_INT), value :: istride
|
cannam@127
|
97 integer(C_INT), value :: idist
|
cannam@127
|
98 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
99 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
100 integer(C_INT), value :: ostride
|
cannam@127
|
101 integer(C_INT), value :: odist
|
cannam@127
|
102 integer(C_INT), value :: sign
|
cannam@127
|
103 integer(C_INT), value :: flags
|
cannam@127
|
104 end function fftw_plan_many_dft
|
cannam@127
|
105
|
cannam@127
|
106 type(C_PTR) function fftw_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
|
cannam@127
|
107 bind(C, name='fftw_plan_guru_dft')
|
cannam@127
|
108 import
|
cannam@127
|
109 integer(C_INT), value :: rank
|
cannam@127
|
110 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
111 integer(C_INT), value :: howmany_rank
|
cannam@127
|
112 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
113 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
114 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
115 integer(C_INT), value :: sign
|
cannam@127
|
116 integer(C_INT), value :: flags
|
cannam@127
|
117 end function fftw_plan_guru_dft
|
cannam@127
|
118
|
cannam@127
|
119 type(C_PTR) function fftw_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
|
cannam@127
|
120 bind(C, name='fftw_plan_guru_split_dft')
|
cannam@127
|
121 import
|
cannam@127
|
122 integer(C_INT), value :: rank
|
cannam@127
|
123 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
124 integer(C_INT), value :: howmany_rank
|
cannam@127
|
125 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
126 real(C_DOUBLE), dimension(*), intent(out) :: ri
|
cannam@127
|
127 real(C_DOUBLE), dimension(*), intent(out) :: ii
|
cannam@127
|
128 real(C_DOUBLE), dimension(*), intent(out) :: ro
|
cannam@127
|
129 real(C_DOUBLE), dimension(*), intent(out) :: io
|
cannam@127
|
130 integer(C_INT), value :: flags
|
cannam@127
|
131 end function fftw_plan_guru_split_dft
|
cannam@127
|
132
|
cannam@127
|
133 type(C_PTR) function fftw_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
|
cannam@127
|
134 bind(C, name='fftw_plan_guru64_dft')
|
cannam@127
|
135 import
|
cannam@127
|
136 integer(C_INT), value :: rank
|
cannam@127
|
137 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
138 integer(C_INT), value :: howmany_rank
|
cannam@127
|
139 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
140 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
141 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
142 integer(C_INT), value :: sign
|
cannam@127
|
143 integer(C_INT), value :: flags
|
cannam@127
|
144 end function fftw_plan_guru64_dft
|
cannam@127
|
145
|
cannam@127
|
146 type(C_PTR) function fftw_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
|
cannam@127
|
147 bind(C, name='fftw_plan_guru64_split_dft')
|
cannam@127
|
148 import
|
cannam@127
|
149 integer(C_INT), value :: rank
|
cannam@127
|
150 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
151 integer(C_INT), value :: howmany_rank
|
cannam@127
|
152 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
153 real(C_DOUBLE), dimension(*), intent(out) :: ri
|
cannam@127
|
154 real(C_DOUBLE), dimension(*), intent(out) :: ii
|
cannam@127
|
155 real(C_DOUBLE), dimension(*), intent(out) :: ro
|
cannam@127
|
156 real(C_DOUBLE), dimension(*), intent(out) :: io
|
cannam@127
|
157 integer(C_INT), value :: flags
|
cannam@127
|
158 end function fftw_plan_guru64_split_dft
|
cannam@127
|
159
|
cannam@127
|
160 subroutine fftw_execute_dft(p,in,out) bind(C, name='fftw_execute_dft')
|
cannam@127
|
161 import
|
cannam@127
|
162 type(C_PTR), value :: p
|
cannam@127
|
163 complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
|
cannam@127
|
164 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
165 end subroutine fftw_execute_dft
|
cannam@127
|
166
|
cannam@127
|
167 subroutine fftw_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftw_execute_split_dft')
|
cannam@127
|
168 import
|
cannam@127
|
169 type(C_PTR), value :: p
|
cannam@127
|
170 real(C_DOUBLE), dimension(*), intent(inout) :: ri
|
cannam@127
|
171 real(C_DOUBLE), dimension(*), intent(inout) :: ii
|
cannam@127
|
172 real(C_DOUBLE), dimension(*), intent(out) :: ro
|
cannam@127
|
173 real(C_DOUBLE), dimension(*), intent(out) :: io
|
cannam@127
|
174 end subroutine fftw_execute_split_dft
|
cannam@127
|
175
|
cannam@127
|
176 type(C_PTR) function fftw_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
|
cannam@127
|
177 bind(C, name='fftw_plan_many_dft_r2c')
|
cannam@127
|
178 import
|
cannam@127
|
179 integer(C_INT), value :: rank
|
cannam@127
|
180 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
181 integer(C_INT), value :: howmany
|
cannam@127
|
182 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
183 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
184 integer(C_INT), value :: istride
|
cannam@127
|
185 integer(C_INT), value :: idist
|
cannam@127
|
186 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
187 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
188 integer(C_INT), value :: ostride
|
cannam@127
|
189 integer(C_INT), value :: odist
|
cannam@127
|
190 integer(C_INT), value :: flags
|
cannam@127
|
191 end function fftw_plan_many_dft_r2c
|
cannam@127
|
192
|
cannam@127
|
193 type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_r2c')
|
cannam@127
|
194 import
|
cannam@127
|
195 integer(C_INT), value :: rank
|
cannam@127
|
196 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
197 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
198 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
199 integer(C_INT), value :: flags
|
cannam@127
|
200 end function fftw_plan_dft_r2c
|
cannam@127
|
201
|
cannam@127
|
202 type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_r2c_1d')
|
cannam@127
|
203 import
|
cannam@127
|
204 integer(C_INT), value :: n
|
cannam@127
|
205 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
206 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
207 integer(C_INT), value :: flags
|
cannam@127
|
208 end function fftw_plan_dft_r2c_1d
|
cannam@127
|
209
|
cannam@127
|
210 type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_r2c_2d')
|
cannam@127
|
211 import
|
cannam@127
|
212 integer(C_INT), value :: n0
|
cannam@127
|
213 integer(C_INT), value :: n1
|
cannam@127
|
214 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
215 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
216 integer(C_INT), value :: flags
|
cannam@127
|
217 end function fftw_plan_dft_r2c_2d
|
cannam@127
|
218
|
cannam@127
|
219 type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_r2c_3d')
|
cannam@127
|
220 import
|
cannam@127
|
221 integer(C_INT), value :: n0
|
cannam@127
|
222 integer(C_INT), value :: n1
|
cannam@127
|
223 integer(C_INT), value :: n2
|
cannam@127
|
224 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
225 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
226 integer(C_INT), value :: flags
|
cannam@127
|
227 end function fftw_plan_dft_r2c_3d
|
cannam@127
|
228
|
cannam@127
|
229 type(C_PTR) function fftw_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
|
cannam@127
|
230 bind(C, name='fftw_plan_many_dft_c2r')
|
cannam@127
|
231 import
|
cannam@127
|
232 integer(C_INT), value :: rank
|
cannam@127
|
233 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
234 integer(C_INT), value :: howmany
|
cannam@127
|
235 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
236 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
237 integer(C_INT), value :: istride
|
cannam@127
|
238 integer(C_INT), value :: idist
|
cannam@127
|
239 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
240 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
241 integer(C_INT), value :: ostride
|
cannam@127
|
242 integer(C_INT), value :: odist
|
cannam@127
|
243 integer(C_INT), value :: flags
|
cannam@127
|
244 end function fftw_plan_many_dft_c2r
|
cannam@127
|
245
|
cannam@127
|
246 type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_c2r')
|
cannam@127
|
247 import
|
cannam@127
|
248 integer(C_INT), value :: rank
|
cannam@127
|
249 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
250 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
251 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
252 integer(C_INT), value :: flags
|
cannam@127
|
253 end function fftw_plan_dft_c2r
|
cannam@127
|
254
|
cannam@127
|
255 type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_c2r_1d')
|
cannam@127
|
256 import
|
cannam@127
|
257 integer(C_INT), value :: n
|
cannam@127
|
258 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
259 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
260 integer(C_INT), value :: flags
|
cannam@127
|
261 end function fftw_plan_dft_c2r_1d
|
cannam@127
|
262
|
cannam@127
|
263 type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_c2r_2d')
|
cannam@127
|
264 import
|
cannam@127
|
265 integer(C_INT), value :: n0
|
cannam@127
|
266 integer(C_INT), value :: n1
|
cannam@127
|
267 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
268 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
269 integer(C_INT), value :: flags
|
cannam@127
|
270 end function fftw_plan_dft_c2r_2d
|
cannam@127
|
271
|
cannam@127
|
272 type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_c2r_3d')
|
cannam@127
|
273 import
|
cannam@127
|
274 integer(C_INT), value :: n0
|
cannam@127
|
275 integer(C_INT), value :: n1
|
cannam@127
|
276 integer(C_INT), value :: n2
|
cannam@127
|
277 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
278 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
279 integer(C_INT), value :: flags
|
cannam@127
|
280 end function fftw_plan_dft_c2r_3d
|
cannam@127
|
281
|
cannam@127
|
282 type(C_PTR) function fftw_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
283 bind(C, name='fftw_plan_guru_dft_r2c')
|
cannam@127
|
284 import
|
cannam@127
|
285 integer(C_INT), value :: rank
|
cannam@127
|
286 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
287 integer(C_INT), value :: howmany_rank
|
cannam@127
|
288 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
289 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
290 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
291 integer(C_INT), value :: flags
|
cannam@127
|
292 end function fftw_plan_guru_dft_r2c
|
cannam@127
|
293
|
cannam@127
|
294 type(C_PTR) function fftw_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
295 bind(C, name='fftw_plan_guru_dft_c2r')
|
cannam@127
|
296 import
|
cannam@127
|
297 integer(C_INT), value :: rank
|
cannam@127
|
298 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
299 integer(C_INT), value :: howmany_rank
|
cannam@127
|
300 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
301 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
302 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
303 integer(C_INT), value :: flags
|
cannam@127
|
304 end function fftw_plan_guru_dft_c2r
|
cannam@127
|
305
|
cannam@127
|
306 type(C_PTR) function fftw_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
|
cannam@127
|
307 bind(C, name='fftw_plan_guru_split_dft_r2c')
|
cannam@127
|
308 import
|
cannam@127
|
309 integer(C_INT), value :: rank
|
cannam@127
|
310 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
311 integer(C_INT), value :: howmany_rank
|
cannam@127
|
312 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
313 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
314 real(C_DOUBLE), dimension(*), intent(out) :: ro
|
cannam@127
|
315 real(C_DOUBLE), dimension(*), intent(out) :: io
|
cannam@127
|
316 integer(C_INT), value :: flags
|
cannam@127
|
317 end function fftw_plan_guru_split_dft_r2c
|
cannam@127
|
318
|
cannam@127
|
319 type(C_PTR) function fftw_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
|
cannam@127
|
320 bind(C, name='fftw_plan_guru_split_dft_c2r')
|
cannam@127
|
321 import
|
cannam@127
|
322 integer(C_INT), value :: rank
|
cannam@127
|
323 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
324 integer(C_INT), value :: howmany_rank
|
cannam@127
|
325 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
326 real(C_DOUBLE), dimension(*), intent(out) :: ri
|
cannam@127
|
327 real(C_DOUBLE), dimension(*), intent(out) :: ii
|
cannam@127
|
328 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
329 integer(C_INT), value :: flags
|
cannam@127
|
330 end function fftw_plan_guru_split_dft_c2r
|
cannam@127
|
331
|
cannam@127
|
332 type(C_PTR) function fftw_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
333 bind(C, name='fftw_plan_guru64_dft_r2c')
|
cannam@127
|
334 import
|
cannam@127
|
335 integer(C_INT), value :: rank
|
cannam@127
|
336 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
337 integer(C_INT), value :: howmany_rank
|
cannam@127
|
338 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
339 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
340 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
341 integer(C_INT), value :: flags
|
cannam@127
|
342 end function fftw_plan_guru64_dft_r2c
|
cannam@127
|
343
|
cannam@127
|
344 type(C_PTR) function fftw_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
345 bind(C, name='fftw_plan_guru64_dft_c2r')
|
cannam@127
|
346 import
|
cannam@127
|
347 integer(C_INT), value :: rank
|
cannam@127
|
348 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
349 integer(C_INT), value :: howmany_rank
|
cannam@127
|
350 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
351 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
352 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
353 integer(C_INT), value :: flags
|
cannam@127
|
354 end function fftw_plan_guru64_dft_c2r
|
cannam@127
|
355
|
cannam@127
|
356 type(C_PTR) function fftw_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
|
cannam@127
|
357 bind(C, name='fftw_plan_guru64_split_dft_r2c')
|
cannam@127
|
358 import
|
cannam@127
|
359 integer(C_INT), value :: rank
|
cannam@127
|
360 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
361 integer(C_INT), value :: howmany_rank
|
cannam@127
|
362 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
363 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
364 real(C_DOUBLE), dimension(*), intent(out) :: ro
|
cannam@127
|
365 real(C_DOUBLE), dimension(*), intent(out) :: io
|
cannam@127
|
366 integer(C_INT), value :: flags
|
cannam@127
|
367 end function fftw_plan_guru64_split_dft_r2c
|
cannam@127
|
368
|
cannam@127
|
369 type(C_PTR) function fftw_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
|
cannam@127
|
370 bind(C, name='fftw_plan_guru64_split_dft_c2r')
|
cannam@127
|
371 import
|
cannam@127
|
372 integer(C_INT), value :: rank
|
cannam@127
|
373 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
374 integer(C_INT), value :: howmany_rank
|
cannam@127
|
375 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
376 real(C_DOUBLE), dimension(*), intent(out) :: ri
|
cannam@127
|
377 real(C_DOUBLE), dimension(*), intent(out) :: ii
|
cannam@127
|
378 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
379 integer(C_INT), value :: flags
|
cannam@127
|
380 end function fftw_plan_guru64_split_dft_c2r
|
cannam@127
|
381
|
cannam@127
|
382 subroutine fftw_execute_dft_r2c(p,in,out) bind(C, name='fftw_execute_dft_r2c')
|
cannam@127
|
383 import
|
cannam@127
|
384 type(C_PTR), value :: p
|
cannam@127
|
385 real(C_DOUBLE), dimension(*), intent(inout) :: in
|
cannam@127
|
386 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
387 end subroutine fftw_execute_dft_r2c
|
cannam@127
|
388
|
cannam@127
|
389 subroutine fftw_execute_dft_c2r(p,in,out) bind(C, name='fftw_execute_dft_c2r')
|
cannam@127
|
390 import
|
cannam@127
|
391 type(C_PTR), value :: p
|
cannam@127
|
392 complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
|
cannam@127
|
393 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
394 end subroutine fftw_execute_dft_c2r
|
cannam@127
|
395
|
cannam@127
|
396 subroutine fftw_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftw_execute_split_dft_r2c')
|
cannam@127
|
397 import
|
cannam@127
|
398 type(C_PTR), value :: p
|
cannam@127
|
399 real(C_DOUBLE), dimension(*), intent(inout) :: in
|
cannam@127
|
400 real(C_DOUBLE), dimension(*), intent(out) :: ro
|
cannam@127
|
401 real(C_DOUBLE), dimension(*), intent(out) :: io
|
cannam@127
|
402 end subroutine fftw_execute_split_dft_r2c
|
cannam@127
|
403
|
cannam@127
|
404 subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftw_execute_split_dft_c2r')
|
cannam@127
|
405 import
|
cannam@127
|
406 type(C_PTR), value :: p
|
cannam@127
|
407 real(C_DOUBLE), dimension(*), intent(inout) :: ri
|
cannam@127
|
408 real(C_DOUBLE), dimension(*), intent(inout) :: ii
|
cannam@127
|
409 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
410 end subroutine fftw_execute_split_dft_c2r
|
cannam@127
|
411
|
cannam@127
|
412 type(C_PTR) function fftw_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
|
cannam@127
|
413 bind(C, name='fftw_plan_many_r2r')
|
cannam@127
|
414 import
|
cannam@127
|
415 integer(C_INT), value :: rank
|
cannam@127
|
416 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
417 integer(C_INT), value :: howmany
|
cannam@127
|
418 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
419 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
420 integer(C_INT), value :: istride
|
cannam@127
|
421 integer(C_INT), value :: idist
|
cannam@127
|
422 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
423 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
424 integer(C_INT), value :: ostride
|
cannam@127
|
425 integer(C_INT), value :: odist
|
cannam@127
|
426 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
427 integer(C_INT), value :: flags
|
cannam@127
|
428 end function fftw_plan_many_r2r
|
cannam@127
|
429
|
cannam@127
|
430 type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftw_plan_r2r')
|
cannam@127
|
431 import
|
cannam@127
|
432 integer(C_INT), value :: rank
|
cannam@127
|
433 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
434 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
435 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
436 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
437 integer(C_INT), value :: flags
|
cannam@127
|
438 end function fftw_plan_r2r
|
cannam@127
|
439
|
cannam@127
|
440 type(C_PTR) function fftw_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftw_plan_r2r_1d')
|
cannam@127
|
441 import
|
cannam@127
|
442 integer(C_INT), value :: n
|
cannam@127
|
443 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
444 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
445 integer(C_FFTW_R2R_KIND), value :: kind
|
cannam@127
|
446 integer(C_INT), value :: flags
|
cannam@127
|
447 end function fftw_plan_r2r_1d
|
cannam@127
|
448
|
cannam@127
|
449 type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftw_plan_r2r_2d')
|
cannam@127
|
450 import
|
cannam@127
|
451 integer(C_INT), value :: n0
|
cannam@127
|
452 integer(C_INT), value :: n1
|
cannam@127
|
453 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
454 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
455 integer(C_FFTW_R2R_KIND), value :: kind0
|
cannam@127
|
456 integer(C_FFTW_R2R_KIND), value :: kind1
|
cannam@127
|
457 integer(C_INT), value :: flags
|
cannam@127
|
458 end function fftw_plan_r2r_2d
|
cannam@127
|
459
|
cannam@127
|
460 type(C_PTR) function fftw_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftw_plan_r2r_3d')
|
cannam@127
|
461 import
|
cannam@127
|
462 integer(C_INT), value :: n0
|
cannam@127
|
463 integer(C_INT), value :: n1
|
cannam@127
|
464 integer(C_INT), value :: n2
|
cannam@127
|
465 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
466 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
467 integer(C_FFTW_R2R_KIND), value :: kind0
|
cannam@127
|
468 integer(C_FFTW_R2R_KIND), value :: kind1
|
cannam@127
|
469 integer(C_FFTW_R2R_KIND), value :: kind2
|
cannam@127
|
470 integer(C_INT), value :: flags
|
cannam@127
|
471 end function fftw_plan_r2r_3d
|
cannam@127
|
472
|
cannam@127
|
473 type(C_PTR) function fftw_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
|
cannam@127
|
474 bind(C, name='fftw_plan_guru_r2r')
|
cannam@127
|
475 import
|
cannam@127
|
476 integer(C_INT), value :: rank
|
cannam@127
|
477 type(fftw_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
478 integer(C_INT), value :: howmany_rank
|
cannam@127
|
479 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
480 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
481 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
482 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
483 integer(C_INT), value :: flags
|
cannam@127
|
484 end function fftw_plan_guru_r2r
|
cannam@127
|
485
|
cannam@127
|
486 type(C_PTR) function fftw_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
|
cannam@127
|
487 bind(C, name='fftw_plan_guru64_r2r')
|
cannam@127
|
488 import
|
cannam@127
|
489 integer(C_INT), value :: rank
|
cannam@127
|
490 type(fftw_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
491 integer(C_INT), value :: howmany_rank
|
cannam@127
|
492 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
493 real(C_DOUBLE), dimension(*), intent(out) :: in
|
cannam@127
|
494 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
495 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
496 integer(C_INT), value :: flags
|
cannam@127
|
497 end function fftw_plan_guru64_r2r
|
cannam@127
|
498
|
cannam@127
|
499 subroutine fftw_execute_r2r(p,in,out) bind(C, name='fftw_execute_r2r')
|
cannam@127
|
500 import
|
cannam@127
|
501 type(C_PTR), value :: p
|
cannam@127
|
502 real(C_DOUBLE), dimension(*), intent(inout) :: in
|
cannam@127
|
503 real(C_DOUBLE), dimension(*), intent(out) :: out
|
cannam@127
|
504 end subroutine fftw_execute_r2r
|
cannam@127
|
505
|
cannam@127
|
506 subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan')
|
cannam@127
|
507 import
|
cannam@127
|
508 type(C_PTR), value :: p
|
cannam@127
|
509 end subroutine fftw_destroy_plan
|
cannam@127
|
510
|
cannam@127
|
511 subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom')
|
cannam@127
|
512 import
|
cannam@127
|
513 end subroutine fftw_forget_wisdom
|
cannam@127
|
514
|
cannam@127
|
515 subroutine fftw_cleanup() bind(C, name='fftw_cleanup')
|
cannam@127
|
516 import
|
cannam@127
|
517 end subroutine fftw_cleanup
|
cannam@127
|
518
|
cannam@127
|
519 subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit')
|
cannam@127
|
520 import
|
cannam@127
|
521 real(C_DOUBLE), value :: t
|
cannam@127
|
522 end subroutine fftw_set_timelimit
|
cannam@127
|
523
|
cannam@127
|
524 subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads')
|
cannam@127
|
525 import
|
cannam@127
|
526 integer(C_INT), value :: nthreads
|
cannam@127
|
527 end subroutine fftw_plan_with_nthreads
|
cannam@127
|
528
|
cannam@127
|
529 integer(C_INT) function fftw_init_threads() bind(C, name='fftw_init_threads')
|
cannam@127
|
530 import
|
cannam@127
|
531 end function fftw_init_threads
|
cannam@127
|
532
|
cannam@127
|
533 subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads')
|
cannam@127
|
534 import
|
cannam@127
|
535 end subroutine fftw_cleanup_threads
|
cannam@127
|
536
|
cannam@127
|
537 subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe')
|
cannam@127
|
538 import
|
cannam@127
|
539 end subroutine fftw_make_planner_thread_safe
|
cannam@127
|
540
|
cannam@127
|
541 integer(C_INT) function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename')
|
cannam@127
|
542 import
|
cannam@127
|
543 character(C_CHAR), dimension(*), intent(in) :: filename
|
cannam@127
|
544 end function fftw_export_wisdom_to_filename
|
cannam@127
|
545
|
cannam@127
|
546 subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file')
|
cannam@127
|
547 import
|
cannam@127
|
548 type(C_PTR), value :: output_file
|
cannam@127
|
549 end subroutine fftw_export_wisdom_to_file
|
cannam@127
|
550
|
cannam@127
|
551 type(C_PTR) function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string')
|
cannam@127
|
552 import
|
cannam@127
|
553 end function fftw_export_wisdom_to_string
|
cannam@127
|
554
|
cannam@127
|
555 subroutine fftw_export_wisdom(write_char,data) bind(C, name='fftw_export_wisdom')
|
cannam@127
|
556 import
|
cannam@127
|
557 type(C_FUNPTR), value :: write_char
|
cannam@127
|
558 type(C_PTR), value :: data
|
cannam@127
|
559 end subroutine fftw_export_wisdom
|
cannam@127
|
560
|
cannam@127
|
561 integer(C_INT) function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom')
|
cannam@127
|
562 import
|
cannam@127
|
563 end function fftw_import_system_wisdom
|
cannam@127
|
564
|
cannam@127
|
565 integer(C_INT) function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename')
|
cannam@127
|
566 import
|
cannam@127
|
567 character(C_CHAR), dimension(*), intent(in) :: filename
|
cannam@127
|
568 end function fftw_import_wisdom_from_filename
|
cannam@127
|
569
|
cannam@127
|
570 integer(C_INT) function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file')
|
cannam@127
|
571 import
|
cannam@127
|
572 type(C_PTR), value :: input_file
|
cannam@127
|
573 end function fftw_import_wisdom_from_file
|
cannam@127
|
574
|
cannam@127
|
575 integer(C_INT) function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string')
|
cannam@127
|
576 import
|
cannam@127
|
577 character(C_CHAR), dimension(*), intent(in) :: input_string
|
cannam@127
|
578 end function fftw_import_wisdom_from_string
|
cannam@127
|
579
|
cannam@127
|
580 integer(C_INT) function fftw_import_wisdom(read_char,data) bind(C, name='fftw_import_wisdom')
|
cannam@127
|
581 import
|
cannam@127
|
582 type(C_FUNPTR), value :: read_char
|
cannam@127
|
583 type(C_PTR), value :: data
|
cannam@127
|
584 end function fftw_import_wisdom
|
cannam@127
|
585
|
cannam@127
|
586 subroutine fftw_fprint_plan(p,output_file) bind(C, name='fftw_fprint_plan')
|
cannam@127
|
587 import
|
cannam@127
|
588 type(C_PTR), value :: p
|
cannam@127
|
589 type(C_PTR), value :: output_file
|
cannam@127
|
590 end subroutine fftw_fprint_plan
|
cannam@127
|
591
|
cannam@127
|
592 subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan')
|
cannam@127
|
593 import
|
cannam@127
|
594 type(C_PTR), value :: p
|
cannam@127
|
595 end subroutine fftw_print_plan
|
cannam@127
|
596
|
cannam@127
|
597 type(C_PTR) function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan')
|
cannam@127
|
598 import
|
cannam@127
|
599 type(C_PTR), value :: p
|
cannam@127
|
600 end function fftw_sprint_plan
|
cannam@127
|
601
|
cannam@127
|
602 type(C_PTR) function fftw_malloc(n) bind(C, name='fftw_malloc')
|
cannam@127
|
603 import
|
cannam@127
|
604 integer(C_SIZE_T), value :: n
|
cannam@127
|
605 end function fftw_malloc
|
cannam@127
|
606
|
cannam@127
|
607 type(C_PTR) function fftw_alloc_real(n) bind(C, name='fftw_alloc_real')
|
cannam@127
|
608 import
|
cannam@127
|
609 integer(C_SIZE_T), value :: n
|
cannam@127
|
610 end function fftw_alloc_real
|
cannam@127
|
611
|
cannam@127
|
612 type(C_PTR) function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex')
|
cannam@127
|
613 import
|
cannam@127
|
614 integer(C_SIZE_T), value :: n
|
cannam@127
|
615 end function fftw_alloc_complex
|
cannam@127
|
616
|
cannam@127
|
617 subroutine fftw_free(p) bind(C, name='fftw_free')
|
cannam@127
|
618 import
|
cannam@127
|
619 type(C_PTR), value :: p
|
cannam@127
|
620 end subroutine fftw_free
|
cannam@127
|
621
|
cannam@127
|
622 subroutine fftw_flops(p,add,mul,fmas) bind(C, name='fftw_flops')
|
cannam@127
|
623 import
|
cannam@127
|
624 type(C_PTR), value :: p
|
cannam@127
|
625 real(C_DOUBLE), intent(out) :: add
|
cannam@127
|
626 real(C_DOUBLE), intent(out) :: mul
|
cannam@127
|
627 real(C_DOUBLE), intent(out) :: fmas
|
cannam@127
|
628 end subroutine fftw_flops
|
cannam@127
|
629
|
cannam@127
|
630 real(C_DOUBLE) function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost')
|
cannam@127
|
631 import
|
cannam@127
|
632 type(C_PTR), value :: p
|
cannam@127
|
633 end function fftw_estimate_cost
|
cannam@127
|
634
|
cannam@127
|
635 real(C_DOUBLE) function fftw_cost(p) bind(C, name='fftw_cost')
|
cannam@127
|
636 import
|
cannam@127
|
637 type(C_PTR), value :: p
|
cannam@127
|
638 end function fftw_cost
|
cannam@127
|
639
|
cannam@127
|
640 integer(C_INT) function fftw_alignment_of(p) bind(C, name='fftw_alignment_of')
|
cannam@127
|
641 import
|
cannam@127
|
642 real(C_DOUBLE), dimension(*), intent(out) :: p
|
cannam@127
|
643 end function fftw_alignment_of
|
cannam@127
|
644
|
cannam@127
|
645 end interface
|
cannam@127
|
646
|
cannam@127
|
647 type, bind(C) :: fftwf_iodim
|
cannam@127
|
648 integer(C_INT) n, is, os
|
cannam@127
|
649 end type fftwf_iodim
|
cannam@127
|
650 type, bind(C) :: fftwf_iodim64
|
cannam@127
|
651 integer(C_INTPTR_T) n, is, os
|
cannam@127
|
652 end type fftwf_iodim64
|
cannam@127
|
653
|
cannam@127
|
654 interface
|
cannam@127
|
655 type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwf_plan_dft')
|
cannam@127
|
656 import
|
cannam@127
|
657 integer(C_INT), value :: rank
|
cannam@127
|
658 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
659 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
660 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
661 integer(C_INT), value :: sign
|
cannam@127
|
662 integer(C_INT), value :: flags
|
cannam@127
|
663 end function fftwf_plan_dft
|
cannam@127
|
664
|
cannam@127
|
665 type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwf_plan_dft_1d')
|
cannam@127
|
666 import
|
cannam@127
|
667 integer(C_INT), value :: n
|
cannam@127
|
668 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
669 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
670 integer(C_INT), value :: sign
|
cannam@127
|
671 integer(C_INT), value :: flags
|
cannam@127
|
672 end function fftwf_plan_dft_1d
|
cannam@127
|
673
|
cannam@127
|
674 type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwf_plan_dft_2d')
|
cannam@127
|
675 import
|
cannam@127
|
676 integer(C_INT), value :: n0
|
cannam@127
|
677 integer(C_INT), value :: n1
|
cannam@127
|
678 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
679 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
680 integer(C_INT), value :: sign
|
cannam@127
|
681 integer(C_INT), value :: flags
|
cannam@127
|
682 end function fftwf_plan_dft_2d
|
cannam@127
|
683
|
cannam@127
|
684 type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwf_plan_dft_3d')
|
cannam@127
|
685 import
|
cannam@127
|
686 integer(C_INT), value :: n0
|
cannam@127
|
687 integer(C_INT), value :: n1
|
cannam@127
|
688 integer(C_INT), value :: n2
|
cannam@127
|
689 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
690 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
691 integer(C_INT), value :: sign
|
cannam@127
|
692 integer(C_INT), value :: flags
|
cannam@127
|
693 end function fftwf_plan_dft_3d
|
cannam@127
|
694
|
cannam@127
|
695 type(C_PTR) function fftwf_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
|
cannam@127
|
696 bind(C, name='fftwf_plan_many_dft')
|
cannam@127
|
697 import
|
cannam@127
|
698 integer(C_INT), value :: rank
|
cannam@127
|
699 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
700 integer(C_INT), value :: howmany
|
cannam@127
|
701 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
702 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
703 integer(C_INT), value :: istride
|
cannam@127
|
704 integer(C_INT), value :: idist
|
cannam@127
|
705 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
706 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
707 integer(C_INT), value :: ostride
|
cannam@127
|
708 integer(C_INT), value :: odist
|
cannam@127
|
709 integer(C_INT), value :: sign
|
cannam@127
|
710 integer(C_INT), value :: flags
|
cannam@127
|
711 end function fftwf_plan_many_dft
|
cannam@127
|
712
|
cannam@127
|
713 type(C_PTR) function fftwf_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
|
cannam@127
|
714 bind(C, name='fftwf_plan_guru_dft')
|
cannam@127
|
715 import
|
cannam@127
|
716 integer(C_INT), value :: rank
|
cannam@127
|
717 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
718 integer(C_INT), value :: howmany_rank
|
cannam@127
|
719 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
720 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
721 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
722 integer(C_INT), value :: sign
|
cannam@127
|
723 integer(C_INT), value :: flags
|
cannam@127
|
724 end function fftwf_plan_guru_dft
|
cannam@127
|
725
|
cannam@127
|
726 type(C_PTR) function fftwf_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
|
cannam@127
|
727 bind(C, name='fftwf_plan_guru_split_dft')
|
cannam@127
|
728 import
|
cannam@127
|
729 integer(C_INT), value :: rank
|
cannam@127
|
730 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
731 integer(C_INT), value :: howmany_rank
|
cannam@127
|
732 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
733 real(C_FLOAT), dimension(*), intent(out) :: ri
|
cannam@127
|
734 real(C_FLOAT), dimension(*), intent(out) :: ii
|
cannam@127
|
735 real(C_FLOAT), dimension(*), intent(out) :: ro
|
cannam@127
|
736 real(C_FLOAT), dimension(*), intent(out) :: io
|
cannam@127
|
737 integer(C_INT), value :: flags
|
cannam@127
|
738 end function fftwf_plan_guru_split_dft
|
cannam@127
|
739
|
cannam@127
|
740 type(C_PTR) function fftwf_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
|
cannam@127
|
741 bind(C, name='fftwf_plan_guru64_dft')
|
cannam@127
|
742 import
|
cannam@127
|
743 integer(C_INT), value :: rank
|
cannam@127
|
744 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
745 integer(C_INT), value :: howmany_rank
|
cannam@127
|
746 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
747 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
748 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
749 integer(C_INT), value :: sign
|
cannam@127
|
750 integer(C_INT), value :: flags
|
cannam@127
|
751 end function fftwf_plan_guru64_dft
|
cannam@127
|
752
|
cannam@127
|
753 type(C_PTR) function fftwf_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
|
cannam@127
|
754 bind(C, name='fftwf_plan_guru64_split_dft')
|
cannam@127
|
755 import
|
cannam@127
|
756 integer(C_INT), value :: rank
|
cannam@127
|
757 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
758 integer(C_INT), value :: howmany_rank
|
cannam@127
|
759 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
760 real(C_FLOAT), dimension(*), intent(out) :: ri
|
cannam@127
|
761 real(C_FLOAT), dimension(*), intent(out) :: ii
|
cannam@127
|
762 real(C_FLOAT), dimension(*), intent(out) :: ro
|
cannam@127
|
763 real(C_FLOAT), dimension(*), intent(out) :: io
|
cannam@127
|
764 integer(C_INT), value :: flags
|
cannam@127
|
765 end function fftwf_plan_guru64_split_dft
|
cannam@127
|
766
|
cannam@127
|
767 subroutine fftwf_execute_dft(p,in,out) bind(C, name='fftwf_execute_dft')
|
cannam@127
|
768 import
|
cannam@127
|
769 type(C_PTR), value :: p
|
cannam@127
|
770 complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
|
cannam@127
|
771 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
772 end subroutine fftwf_execute_dft
|
cannam@127
|
773
|
cannam@127
|
774 subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwf_execute_split_dft')
|
cannam@127
|
775 import
|
cannam@127
|
776 type(C_PTR), value :: p
|
cannam@127
|
777 real(C_FLOAT), dimension(*), intent(inout) :: ri
|
cannam@127
|
778 real(C_FLOAT), dimension(*), intent(inout) :: ii
|
cannam@127
|
779 real(C_FLOAT), dimension(*), intent(out) :: ro
|
cannam@127
|
780 real(C_FLOAT), dimension(*), intent(out) :: io
|
cannam@127
|
781 end subroutine fftwf_execute_split_dft
|
cannam@127
|
782
|
cannam@127
|
783 type(C_PTR) function fftwf_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
|
cannam@127
|
784 bind(C, name='fftwf_plan_many_dft_r2c')
|
cannam@127
|
785 import
|
cannam@127
|
786 integer(C_INT), value :: rank
|
cannam@127
|
787 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
788 integer(C_INT), value :: howmany
|
cannam@127
|
789 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
790 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
791 integer(C_INT), value :: istride
|
cannam@127
|
792 integer(C_INT), value :: idist
|
cannam@127
|
793 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
794 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
795 integer(C_INT), value :: ostride
|
cannam@127
|
796 integer(C_INT), value :: odist
|
cannam@127
|
797 integer(C_INT), value :: flags
|
cannam@127
|
798 end function fftwf_plan_many_dft_r2c
|
cannam@127
|
799
|
cannam@127
|
800 type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c')
|
cannam@127
|
801 import
|
cannam@127
|
802 integer(C_INT), value :: rank
|
cannam@127
|
803 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
804 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
805 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
806 integer(C_INT), value :: flags
|
cannam@127
|
807 end function fftwf_plan_dft_r2c
|
cannam@127
|
808
|
cannam@127
|
809 type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_1d')
|
cannam@127
|
810 import
|
cannam@127
|
811 integer(C_INT), value :: n
|
cannam@127
|
812 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
813 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
814 integer(C_INT), value :: flags
|
cannam@127
|
815 end function fftwf_plan_dft_r2c_1d
|
cannam@127
|
816
|
cannam@127
|
817 type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_2d')
|
cannam@127
|
818 import
|
cannam@127
|
819 integer(C_INT), value :: n0
|
cannam@127
|
820 integer(C_INT), value :: n1
|
cannam@127
|
821 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
822 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
823 integer(C_INT), value :: flags
|
cannam@127
|
824 end function fftwf_plan_dft_r2c_2d
|
cannam@127
|
825
|
cannam@127
|
826 type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_3d')
|
cannam@127
|
827 import
|
cannam@127
|
828 integer(C_INT), value :: n0
|
cannam@127
|
829 integer(C_INT), value :: n1
|
cannam@127
|
830 integer(C_INT), value :: n2
|
cannam@127
|
831 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
832 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
833 integer(C_INT), value :: flags
|
cannam@127
|
834 end function fftwf_plan_dft_r2c_3d
|
cannam@127
|
835
|
cannam@127
|
836 type(C_PTR) function fftwf_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
|
cannam@127
|
837 bind(C, name='fftwf_plan_many_dft_c2r')
|
cannam@127
|
838 import
|
cannam@127
|
839 integer(C_INT), value :: rank
|
cannam@127
|
840 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
841 integer(C_INT), value :: howmany
|
cannam@127
|
842 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
843 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
844 integer(C_INT), value :: istride
|
cannam@127
|
845 integer(C_INT), value :: idist
|
cannam@127
|
846 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
847 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
848 integer(C_INT), value :: ostride
|
cannam@127
|
849 integer(C_INT), value :: odist
|
cannam@127
|
850 integer(C_INT), value :: flags
|
cannam@127
|
851 end function fftwf_plan_many_dft_c2r
|
cannam@127
|
852
|
cannam@127
|
853 type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r')
|
cannam@127
|
854 import
|
cannam@127
|
855 integer(C_INT), value :: rank
|
cannam@127
|
856 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
857 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
858 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
859 integer(C_INT), value :: flags
|
cannam@127
|
860 end function fftwf_plan_dft_c2r
|
cannam@127
|
861
|
cannam@127
|
862 type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_1d')
|
cannam@127
|
863 import
|
cannam@127
|
864 integer(C_INT), value :: n
|
cannam@127
|
865 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
866 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
867 integer(C_INT), value :: flags
|
cannam@127
|
868 end function fftwf_plan_dft_c2r_1d
|
cannam@127
|
869
|
cannam@127
|
870 type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_2d')
|
cannam@127
|
871 import
|
cannam@127
|
872 integer(C_INT), value :: n0
|
cannam@127
|
873 integer(C_INT), value :: n1
|
cannam@127
|
874 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
875 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
876 integer(C_INT), value :: flags
|
cannam@127
|
877 end function fftwf_plan_dft_c2r_2d
|
cannam@127
|
878
|
cannam@127
|
879 type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_3d')
|
cannam@127
|
880 import
|
cannam@127
|
881 integer(C_INT), value :: n0
|
cannam@127
|
882 integer(C_INT), value :: n1
|
cannam@127
|
883 integer(C_INT), value :: n2
|
cannam@127
|
884 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
885 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
886 integer(C_INT), value :: flags
|
cannam@127
|
887 end function fftwf_plan_dft_c2r_3d
|
cannam@127
|
888
|
cannam@127
|
889 type(C_PTR) function fftwf_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
890 bind(C, name='fftwf_plan_guru_dft_r2c')
|
cannam@127
|
891 import
|
cannam@127
|
892 integer(C_INT), value :: rank
|
cannam@127
|
893 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
894 integer(C_INT), value :: howmany_rank
|
cannam@127
|
895 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
896 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
897 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
898 integer(C_INT), value :: flags
|
cannam@127
|
899 end function fftwf_plan_guru_dft_r2c
|
cannam@127
|
900
|
cannam@127
|
901 type(C_PTR) function fftwf_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
902 bind(C, name='fftwf_plan_guru_dft_c2r')
|
cannam@127
|
903 import
|
cannam@127
|
904 integer(C_INT), value :: rank
|
cannam@127
|
905 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
906 integer(C_INT), value :: howmany_rank
|
cannam@127
|
907 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
908 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
909 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
910 integer(C_INT), value :: flags
|
cannam@127
|
911 end function fftwf_plan_guru_dft_c2r
|
cannam@127
|
912
|
cannam@127
|
913 type(C_PTR) function fftwf_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
|
cannam@127
|
914 bind(C, name='fftwf_plan_guru_split_dft_r2c')
|
cannam@127
|
915 import
|
cannam@127
|
916 integer(C_INT), value :: rank
|
cannam@127
|
917 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
918 integer(C_INT), value :: howmany_rank
|
cannam@127
|
919 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
920 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
921 real(C_FLOAT), dimension(*), intent(out) :: ro
|
cannam@127
|
922 real(C_FLOAT), dimension(*), intent(out) :: io
|
cannam@127
|
923 integer(C_INT), value :: flags
|
cannam@127
|
924 end function fftwf_plan_guru_split_dft_r2c
|
cannam@127
|
925
|
cannam@127
|
926 type(C_PTR) function fftwf_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
|
cannam@127
|
927 bind(C, name='fftwf_plan_guru_split_dft_c2r')
|
cannam@127
|
928 import
|
cannam@127
|
929 integer(C_INT), value :: rank
|
cannam@127
|
930 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
931 integer(C_INT), value :: howmany_rank
|
cannam@127
|
932 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
933 real(C_FLOAT), dimension(*), intent(out) :: ri
|
cannam@127
|
934 real(C_FLOAT), dimension(*), intent(out) :: ii
|
cannam@127
|
935 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
936 integer(C_INT), value :: flags
|
cannam@127
|
937 end function fftwf_plan_guru_split_dft_c2r
|
cannam@127
|
938
|
cannam@127
|
939 type(C_PTR) function fftwf_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
940 bind(C, name='fftwf_plan_guru64_dft_r2c')
|
cannam@127
|
941 import
|
cannam@127
|
942 integer(C_INT), value :: rank
|
cannam@127
|
943 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
944 integer(C_INT), value :: howmany_rank
|
cannam@127
|
945 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
946 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
947 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
948 integer(C_INT), value :: flags
|
cannam@127
|
949 end function fftwf_plan_guru64_dft_r2c
|
cannam@127
|
950
|
cannam@127
|
951 type(C_PTR) function fftwf_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
|
cannam@127
|
952 bind(C, name='fftwf_plan_guru64_dft_c2r')
|
cannam@127
|
953 import
|
cannam@127
|
954 integer(C_INT), value :: rank
|
cannam@127
|
955 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
956 integer(C_INT), value :: howmany_rank
|
cannam@127
|
957 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
958 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
|
cannam@127
|
959 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
960 integer(C_INT), value :: flags
|
cannam@127
|
961 end function fftwf_plan_guru64_dft_c2r
|
cannam@127
|
962
|
cannam@127
|
963 type(C_PTR) function fftwf_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
|
cannam@127
|
964 bind(C, name='fftwf_plan_guru64_split_dft_r2c')
|
cannam@127
|
965 import
|
cannam@127
|
966 integer(C_INT), value :: rank
|
cannam@127
|
967 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
968 integer(C_INT), value :: howmany_rank
|
cannam@127
|
969 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
970 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
971 real(C_FLOAT), dimension(*), intent(out) :: ro
|
cannam@127
|
972 real(C_FLOAT), dimension(*), intent(out) :: io
|
cannam@127
|
973 integer(C_INT), value :: flags
|
cannam@127
|
974 end function fftwf_plan_guru64_split_dft_r2c
|
cannam@127
|
975
|
cannam@127
|
976 type(C_PTR) function fftwf_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
|
cannam@127
|
977 bind(C, name='fftwf_plan_guru64_split_dft_c2r')
|
cannam@127
|
978 import
|
cannam@127
|
979 integer(C_INT), value :: rank
|
cannam@127
|
980 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
981 integer(C_INT), value :: howmany_rank
|
cannam@127
|
982 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
983 real(C_FLOAT), dimension(*), intent(out) :: ri
|
cannam@127
|
984 real(C_FLOAT), dimension(*), intent(out) :: ii
|
cannam@127
|
985 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
986 integer(C_INT), value :: flags
|
cannam@127
|
987 end function fftwf_plan_guru64_split_dft_c2r
|
cannam@127
|
988
|
cannam@127
|
989 subroutine fftwf_execute_dft_r2c(p,in,out) bind(C, name='fftwf_execute_dft_r2c')
|
cannam@127
|
990 import
|
cannam@127
|
991 type(C_PTR), value :: p
|
cannam@127
|
992 real(C_FLOAT), dimension(*), intent(inout) :: in
|
cannam@127
|
993 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
|
cannam@127
|
994 end subroutine fftwf_execute_dft_r2c
|
cannam@127
|
995
|
cannam@127
|
996 subroutine fftwf_execute_dft_c2r(p,in,out) bind(C, name='fftwf_execute_dft_c2r')
|
cannam@127
|
997 import
|
cannam@127
|
998 type(C_PTR), value :: p
|
cannam@127
|
999 complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
|
cannam@127
|
1000 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1001 end subroutine fftwf_execute_dft_c2r
|
cannam@127
|
1002
|
cannam@127
|
1003 subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwf_execute_split_dft_r2c')
|
cannam@127
|
1004 import
|
cannam@127
|
1005 type(C_PTR), value :: p
|
cannam@127
|
1006 real(C_FLOAT), dimension(*), intent(inout) :: in
|
cannam@127
|
1007 real(C_FLOAT), dimension(*), intent(out) :: ro
|
cannam@127
|
1008 real(C_FLOAT), dimension(*), intent(out) :: io
|
cannam@127
|
1009 end subroutine fftwf_execute_split_dft_r2c
|
cannam@127
|
1010
|
cannam@127
|
1011 subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwf_execute_split_dft_c2r')
|
cannam@127
|
1012 import
|
cannam@127
|
1013 type(C_PTR), value :: p
|
cannam@127
|
1014 real(C_FLOAT), dimension(*), intent(inout) :: ri
|
cannam@127
|
1015 real(C_FLOAT), dimension(*), intent(inout) :: ii
|
cannam@127
|
1016 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1017 end subroutine fftwf_execute_split_dft_c2r
|
cannam@127
|
1018
|
cannam@127
|
1019 type(C_PTR) function fftwf_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
|
cannam@127
|
1020 bind(C, name='fftwf_plan_many_r2r')
|
cannam@127
|
1021 import
|
cannam@127
|
1022 integer(C_INT), value :: rank
|
cannam@127
|
1023 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
1024 integer(C_INT), value :: howmany
|
cannam@127
|
1025 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1026 integer(C_INT), dimension(*), intent(in) :: inembed
|
cannam@127
|
1027 integer(C_INT), value :: istride
|
cannam@127
|
1028 integer(C_INT), value :: idist
|
cannam@127
|
1029 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1030 integer(C_INT), dimension(*), intent(in) :: onembed
|
cannam@127
|
1031 integer(C_INT), value :: ostride
|
cannam@127
|
1032 integer(C_INT), value :: odist
|
cannam@127
|
1033 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
1034 integer(C_INT), value :: flags
|
cannam@127
|
1035 end function fftwf_plan_many_r2r
|
cannam@127
|
1036
|
cannam@127
|
1037 type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r')
|
cannam@127
|
1038 import
|
cannam@127
|
1039 integer(C_INT), value :: rank
|
cannam@127
|
1040 integer(C_INT), dimension(*), intent(in) :: n
|
cannam@127
|
1041 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1042 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1043 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
1044 integer(C_INT), value :: flags
|
cannam@127
|
1045 end function fftwf_plan_r2r
|
cannam@127
|
1046
|
cannam@127
|
1047 type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r_1d')
|
cannam@127
|
1048 import
|
cannam@127
|
1049 integer(C_INT), value :: n
|
cannam@127
|
1050 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1051 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1052 integer(C_FFTW_R2R_KIND), value :: kind
|
cannam@127
|
1053 integer(C_INT), value :: flags
|
cannam@127
|
1054 end function fftwf_plan_r2r_1d
|
cannam@127
|
1055
|
cannam@127
|
1056 type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwf_plan_r2r_2d')
|
cannam@127
|
1057 import
|
cannam@127
|
1058 integer(C_INT), value :: n0
|
cannam@127
|
1059 integer(C_INT), value :: n1
|
cannam@127
|
1060 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1061 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1062 integer(C_FFTW_R2R_KIND), value :: kind0
|
cannam@127
|
1063 integer(C_FFTW_R2R_KIND), value :: kind1
|
cannam@127
|
1064 integer(C_INT), value :: flags
|
cannam@127
|
1065 end function fftwf_plan_r2r_2d
|
cannam@127
|
1066
|
cannam@127
|
1067 type(C_PTR) function fftwf_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwf_plan_r2r_3d')
|
cannam@127
|
1068 import
|
cannam@127
|
1069 integer(C_INT), value :: n0
|
cannam@127
|
1070 integer(C_INT), value :: n1
|
cannam@127
|
1071 integer(C_INT), value :: n2
|
cannam@127
|
1072 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1073 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1074 integer(C_FFTW_R2R_KIND), value :: kind0
|
cannam@127
|
1075 integer(C_FFTW_R2R_KIND), value :: kind1
|
cannam@127
|
1076 integer(C_FFTW_R2R_KIND), value :: kind2
|
cannam@127
|
1077 integer(C_INT), value :: flags
|
cannam@127
|
1078 end function fftwf_plan_r2r_3d
|
cannam@127
|
1079
|
cannam@127
|
1080 type(C_PTR) function fftwf_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
|
cannam@127
|
1081 bind(C, name='fftwf_plan_guru_r2r')
|
cannam@127
|
1082 import
|
cannam@127
|
1083 integer(C_INT), value :: rank
|
cannam@127
|
1084 type(fftwf_iodim), dimension(*), intent(in) :: dims
|
cannam@127
|
1085 integer(C_INT), value :: howmany_rank
|
cannam@127
|
1086 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
1087 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1088 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1089 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
1090 integer(C_INT), value :: flags
|
cannam@127
|
1091 end function fftwf_plan_guru_r2r
|
cannam@127
|
1092
|
cannam@127
|
1093 type(C_PTR) function fftwf_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
|
cannam@127
|
1094 bind(C, name='fftwf_plan_guru64_r2r')
|
cannam@127
|
1095 import
|
cannam@127
|
1096 integer(C_INT), value :: rank
|
cannam@127
|
1097 type(fftwf_iodim64), dimension(*), intent(in) :: dims
|
cannam@127
|
1098 integer(C_INT), value :: howmany_rank
|
cannam@127
|
1099 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
|
cannam@127
|
1100 real(C_FLOAT), dimension(*), intent(out) :: in
|
cannam@127
|
1101 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1102 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
|
cannam@127
|
1103 integer(C_INT), value :: flags
|
cannam@127
|
1104 end function fftwf_plan_guru64_r2r
|
cannam@127
|
1105
|
cannam@127
|
1106 subroutine fftwf_execute_r2r(p,in,out) bind(C, name='fftwf_execute_r2r')
|
cannam@127
|
1107 import
|
cannam@127
|
1108 type(C_PTR), value :: p
|
cannam@127
|
1109 real(C_FLOAT), dimension(*), intent(inout) :: in
|
cannam@127
|
1110 real(C_FLOAT), dimension(*), intent(out) :: out
|
cannam@127
|
1111 end subroutine fftwf_execute_r2r
|
cannam@127
|
1112
|
cannam@127
|
1113 subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan')
|
cannam@127
|
1114 import
|
cannam@127
|
1115 type(C_PTR), value :: p
|
cannam@127
|
1116 end subroutine fftwf_destroy_plan
|
cannam@127
|
1117
|
cannam@127
|
1118 subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom')
|
cannam@127
|
1119 import
|
cannam@127
|
1120 end subroutine fftwf_forget_wisdom
|
cannam@127
|
1121
|
cannam@127
|
1122 subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup')
|
cannam@127
|
1123 import
|
cannam@127
|
1124 end subroutine fftwf_cleanup
|
cannam@127
|
1125
|
cannam@127
|
1126 subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit')
|
cannam@127
|
1127 import
|
cannam@127
|
1128 real(C_DOUBLE), value :: t
|
cannam@127
|
1129 end subroutine fftwf_set_timelimit
|
cannam@127
|
1130
|
cannam@127
|
1131 subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads')
|
cannam@127
|
1132 import
|
cannam@127
|
1133 integer(C_INT), value :: nthreads
|
cannam@127
|
1134 end subroutine fftwf_plan_with_nthreads
|
cannam@127
|
1135
|
cannam@127
|
1136 integer(C_INT) function fftwf_init_threads() bind(C, name='fftwf_init_threads')
|
cannam@127
|
1137 import
|
cannam@127
|
1138 end function fftwf_init_threads
|
cannam@127
|
1139
|
cannam@127
|
1140 subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads')
|
cannam@127
|
1141 import
|
cannam@127
|
1142 end subroutine fftwf_cleanup_threads
|
cannam@127
|
1143
|
cannam@127
|
1144 subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe')
|
cannam@127
|
1145 import
|
cannam@127
|
1146 end subroutine fftwf_make_planner_thread_safe
|
cannam@127
|
1147
|
cannam@127
|
1148 integer(C_INT) function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename')
|
cannam@127
|
1149 import
|
cannam@127
|
1150 character(C_CHAR), dimension(*), intent(in) :: filename
|
cannam@127
|
1151 end function fftwf_export_wisdom_to_filename
|
cannam@127
|
1152
|
cannam@127
|
1153 subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file')
|
cannam@127
|
1154 import
|
cannam@127
|
1155 type(C_PTR), value :: output_file
|
cannam@127
|
1156 end subroutine fftwf_export_wisdom_to_file
|
cannam@127
|
1157
|
cannam@127
|
1158 type(C_PTR) function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string')
|
cannam@127
|
1159 import
|
cannam@127
|
1160 end function fftwf_export_wisdom_to_string
|
cannam@127
|
1161
|
cannam@127
|
1162 subroutine fftwf_export_wisdom(write_char,data) bind(C, name='fftwf_export_wisdom')
|
cannam@127
|
1163 import
|
cannam@127
|
1164 type(C_FUNPTR), value :: write_char
|
cannam@127
|
1165 type(C_PTR), value :: data
|
cannam@127
|
1166 end subroutine fftwf_export_wisdom
|
cannam@127
|
1167
|
cannam@127
|
1168 integer(C_INT) function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom')
|
cannam@127
|
1169 import
|
cannam@127
|
1170 end function fftwf_import_system_wisdom
|
cannam@127
|
1171
|
cannam@127
|
1172 integer(C_INT) function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename')
|
cannam@127
|
1173 import
|
cannam@127
|
1174 character(C_CHAR), dimension(*), intent(in) :: filename
|
cannam@127
|
1175 end function fftwf_import_wisdom_from_filename
|
cannam@127
|
1176
|
cannam@127
|
1177 integer(C_INT) function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file')
|
cannam@127
|
1178 import
|
cannam@127
|
1179 type(C_PTR), value :: input_file
|
cannam@127
|
1180 end function fftwf_import_wisdom_from_file
|
cannam@127
|
1181
|
cannam@127
|
1182 integer(C_INT) function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string')
|
cannam@127
|
1183 import
|
cannam@127
|
1184 character(C_CHAR), dimension(*), intent(in) :: input_string
|
cannam@127
|
1185 end function fftwf_import_wisdom_from_string
|
cannam@127
|
1186
|
cannam@127
|
1187 integer(C_INT) function fftwf_import_wisdom(read_char,data) bind(C, name='fftwf_import_wisdom')
|
cannam@127
|
1188 import
|
cannam@127
|
1189 type(C_FUNPTR), value :: read_char
|
cannam@127
|
1190 type(C_PTR), value :: data
|
cannam@127
|
1191 end function fftwf_import_wisdom
|
cannam@127
|
1192
|
cannam@127
|
1193 subroutine fftwf_fprint_plan(p,output_file) bind(C, name='fftwf_fprint_plan')
|
cannam@127
|
1194 import
|
cannam@127
|
1195 type(C_PTR), value :: p
|
cannam@127
|
1196 type(C_PTR), value :: output_file
|
cannam@127
|
1197 end subroutine fftwf_fprint_plan
|
cannam@127
|
1198
|
cannam@127
|
1199 subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan')
|
cannam@127
|
1200 import
|
cannam@127
|
1201 type(C_PTR), value :: p
|
cannam@127
|
1202 end subroutine fftwf_print_plan
|
cannam@127
|
1203
|
cannam@127
|
1204 type(C_PTR) function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan')
|
cannam@127
|
1205 import
|
cannam@127
|
1206 type(C_PTR), value :: p
|
cannam@127
|
1207 end function fftwf_sprint_plan
|
cannam@127
|
1208
|
cannam@127
|
1209 type(C_PTR) function fftwf_malloc(n) bind(C, name='fftwf_malloc')
|
cannam@127
|
1210 import
|
cannam@127
|
1211 integer(C_SIZE_T), value :: n
|
cannam@127
|
1212 end function fftwf_malloc
|
cannam@127
|
1213
|
cannam@127
|
1214 type(C_PTR) function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real')
|
cannam@127
|
1215 import
|
cannam@127
|
1216 integer(C_SIZE_T), value :: n
|
cannam@127
|
1217 end function fftwf_alloc_real
|
cannam@127
|
1218
|
cannam@127
|
1219 type(C_PTR) function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex')
|
cannam@127
|
1220 import
|
cannam@127
|
1221 integer(C_SIZE_T), value :: n
|
cannam@127
|
1222 end function fftwf_alloc_complex
|
cannam@127
|
1223
|
cannam@127
|
1224 subroutine fftwf_free(p) bind(C, name='fftwf_free')
|
cannam@127
|
1225 import
|
cannam@127
|
1226 type(C_PTR), value :: p
|
cannam@127
|
1227 end subroutine fftwf_free
|
cannam@127
|
1228
|
cannam@127
|
1229 subroutine fftwf_flops(p,add,mul,fmas) bind(C, name='fftwf_flops')
|
cannam@127
|
1230 import
|
cannam@127
|
1231 type(C_PTR), value :: p
|
cannam@127
|
1232 real(C_DOUBLE), intent(out) :: add
|
cannam@127
|
1233 real(C_DOUBLE), intent(out) :: mul
|
cannam@127
|
1234 real(C_DOUBLE), intent(out) :: fmas
|
cannam@127
|
1235 end subroutine fftwf_flops
|
cannam@127
|
1236
|
cannam@127
|
1237 real(C_DOUBLE) function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost')
|
cannam@127
|
1238 import
|
cannam@127
|
1239 type(C_PTR), value :: p
|
cannam@127
|
1240 end function fftwf_estimate_cost
|
cannam@127
|
1241
|
cannam@127
|
1242 real(C_DOUBLE) function fftwf_cost(p) bind(C, name='fftwf_cost')
|
cannam@127
|
1243 import
|
cannam@127
|
1244 type(C_PTR), value :: p
|
cannam@127
|
1245 end function fftwf_cost
|
cannam@127
|
1246
|
cannam@127
|
1247 integer(C_INT) function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of')
|
cannam@127
|
1248 import
|
cannam@127
|
1249 real(C_FLOAT), dimension(*), intent(out) :: p
|
cannam@127
|
1250 end function fftwf_alignment_of
|
cannam@127
|
1251
|
cannam@127
|
1252 end interface
|