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