To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / fftw-3.3.8 / api / fftw3q.f03 @ 167:bd3cc4d1df30

History | View | Annotate | Download (25.1 KB)

1
! Generated automatically.  DO NOT EDIT!
2

    
3

    
4
  type, bind(C) :: fftwq_iodim
5
     integer(C_INT) n, is, os
6
  end type fftwq_iodim
7
  type, bind(C) :: fftwq_iodim64
8
     integer(C_INTPTR_T) n, is, os
9
  end type fftwq_iodim64
10

    
11
  interface
12
    type(C_PTR) function fftwq_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwq_plan_dft')
13
      import
14
      integer(C_INT), value :: rank
15
      integer(C_INT), dimension(*), intent(in) :: n
16
      complex(16), dimension(*), intent(out) :: in
17
      complex(16), dimension(*), intent(out) :: out
18
      integer(C_INT), value :: sign
19
      integer(C_INT), value :: flags
20
    end function fftwq_plan_dft
21
    
22
    type(C_PTR) function fftwq_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwq_plan_dft_1d')
23
      import
24
      integer(C_INT), value :: n
25
      complex(16), dimension(*), intent(out) :: in
26
      complex(16), dimension(*), intent(out) :: out
27
      integer(C_INT), value :: sign
28
      integer(C_INT), value :: flags
29
    end function fftwq_plan_dft_1d
30
    
31
    type(C_PTR) function fftwq_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwq_plan_dft_2d')
32
      import
33
      integer(C_INT), value :: n0
34
      integer(C_INT), value :: n1
35
      complex(16), dimension(*), intent(out) :: in
36
      complex(16), dimension(*), intent(out) :: out
37
      integer(C_INT), value :: sign
38
      integer(C_INT), value :: flags
39
    end function fftwq_plan_dft_2d
40
    
41
    type(C_PTR) function fftwq_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwq_plan_dft_3d')
42
      import
43
      integer(C_INT), value :: n0
44
      integer(C_INT), value :: n1
45
      integer(C_INT), value :: n2
46
      complex(16), dimension(*), intent(out) :: in
47
      complex(16), dimension(*), intent(out) :: out
48
      integer(C_INT), value :: sign
49
      integer(C_INT), value :: flags
50
    end function fftwq_plan_dft_3d
51
    
52
    type(C_PTR) function fftwq_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
53
                         bind(C, name='fftwq_plan_many_dft')
54
      import
55
      integer(C_INT), value :: rank
56
      integer(C_INT), dimension(*), intent(in) :: n
57
      integer(C_INT), value :: howmany
58
      complex(16), dimension(*), intent(out) :: in
59
      integer(C_INT), dimension(*), intent(in) :: inembed
60
      integer(C_INT), value :: istride
61
      integer(C_INT), value :: idist
62
      complex(16), dimension(*), intent(out) :: out
63
      integer(C_INT), dimension(*), intent(in) :: onembed
64
      integer(C_INT), value :: ostride
65
      integer(C_INT), value :: odist
66
      integer(C_INT), value :: sign
67
      integer(C_INT), value :: flags
68
    end function fftwq_plan_many_dft
69
    
70
    type(C_PTR) function fftwq_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
71
                         bind(C, name='fftwq_plan_guru_dft')
72
      import
73
      integer(C_INT), value :: rank
74
      type(fftwq_iodim), dimension(*), intent(in) :: dims
75
      integer(C_INT), value :: howmany_rank
76
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
77
      complex(16), dimension(*), intent(out) :: in
78
      complex(16), dimension(*), intent(out) :: out
79
      integer(C_INT), value :: sign
80
      integer(C_INT), value :: flags
81
    end function fftwq_plan_guru_dft
82
    
83
    type(C_PTR) function fftwq_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
84
                         bind(C, name='fftwq_plan_guru_split_dft')
85
      import
86
      integer(C_INT), value :: rank
87
      type(fftwq_iodim), dimension(*), intent(in) :: dims
88
      integer(C_INT), value :: howmany_rank
89
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
90
      real(16), dimension(*), intent(out) :: ri
91
      real(16), dimension(*), intent(out) :: ii
92
      real(16), dimension(*), intent(out) :: ro
93
      real(16), dimension(*), intent(out) :: io
94
      integer(C_INT), value :: flags
95
    end function fftwq_plan_guru_split_dft
96
    
97
    type(C_PTR) function fftwq_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
98
                         bind(C, name='fftwq_plan_guru64_dft')
99
      import
100
      integer(C_INT), value :: rank
101
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
102
      integer(C_INT), value :: howmany_rank
103
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
104
      complex(16), dimension(*), intent(out) :: in
105
      complex(16), dimension(*), intent(out) :: out
106
      integer(C_INT), value :: sign
107
      integer(C_INT), value :: flags
108
    end function fftwq_plan_guru64_dft
109
    
110
    type(C_PTR) function fftwq_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
111
                         bind(C, name='fftwq_plan_guru64_split_dft')
112
      import
113
      integer(C_INT), value :: rank
114
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
115
      integer(C_INT), value :: howmany_rank
116
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
117
      real(16), dimension(*), intent(out) :: ri
118
      real(16), dimension(*), intent(out) :: ii
119
      real(16), dimension(*), intent(out) :: ro
120
      real(16), dimension(*), intent(out) :: io
121
      integer(C_INT), value :: flags
122
    end function fftwq_plan_guru64_split_dft
123
    
124
    subroutine fftwq_execute_dft(p,in,out) bind(C, name='fftwq_execute_dft')
125
      import
126
      type(C_PTR), value :: p
127
      complex(16), dimension(*), intent(inout) :: in
128
      complex(16), dimension(*), intent(out) :: out
129
    end subroutine fftwq_execute_dft
130
    
131
    subroutine fftwq_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwq_execute_split_dft')
132
      import
133
      type(C_PTR), value :: p
134
      real(16), dimension(*), intent(inout) :: ri
135
      real(16), dimension(*), intent(inout) :: ii
136
      real(16), dimension(*), intent(out) :: ro
137
      real(16), dimension(*), intent(out) :: io
138
    end subroutine fftwq_execute_split_dft
139
    
140
    type(C_PTR) function fftwq_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
141
                         bind(C, name='fftwq_plan_many_dft_r2c')
142
      import
143
      integer(C_INT), value :: rank
144
      integer(C_INT), dimension(*), intent(in) :: n
145
      integer(C_INT), value :: howmany
146
      real(16), dimension(*), intent(out) :: in
147
      integer(C_INT), dimension(*), intent(in) :: inembed
148
      integer(C_INT), value :: istride
149
      integer(C_INT), value :: idist
150
      complex(16), dimension(*), intent(out) :: out
151
      integer(C_INT), dimension(*), intent(in) :: onembed
152
      integer(C_INT), value :: ostride
153
      integer(C_INT), value :: odist
154
      integer(C_INT), value :: flags
155
    end function fftwq_plan_many_dft_r2c
156
    
157
    type(C_PTR) function fftwq_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c')
158
      import
159
      integer(C_INT), value :: rank
160
      integer(C_INT), dimension(*), intent(in) :: n
161
      real(16), dimension(*), intent(out) :: in
162
      complex(16), dimension(*), intent(out) :: out
163
      integer(C_INT), value :: flags
164
    end function fftwq_plan_dft_r2c
165
    
166
    type(C_PTR) function fftwq_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_1d')
167
      import
168
      integer(C_INT), value :: n
169
      real(16), dimension(*), intent(out) :: in
170
      complex(16), dimension(*), intent(out) :: out
171
      integer(C_INT), value :: flags
172
    end function fftwq_plan_dft_r2c_1d
173
    
174
    type(C_PTR) function fftwq_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_2d')
175
      import
176
      integer(C_INT), value :: n0
177
      integer(C_INT), value :: n1
178
      real(16), dimension(*), intent(out) :: in
179
      complex(16), dimension(*), intent(out) :: out
180
      integer(C_INT), value :: flags
181
    end function fftwq_plan_dft_r2c_2d
182
    
183
    type(C_PTR) function fftwq_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_3d')
184
      import
185
      integer(C_INT), value :: n0
186
      integer(C_INT), value :: n1
187
      integer(C_INT), value :: n2
188
      real(16), dimension(*), intent(out) :: in
189
      complex(16), dimension(*), intent(out) :: out
190
      integer(C_INT), value :: flags
191
    end function fftwq_plan_dft_r2c_3d
192
    
193
    type(C_PTR) function fftwq_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
194
                         bind(C, name='fftwq_plan_many_dft_c2r')
195
      import
196
      integer(C_INT), value :: rank
197
      integer(C_INT), dimension(*), intent(in) :: n
198
      integer(C_INT), value :: howmany
199
      complex(16), dimension(*), intent(out) :: in
200
      integer(C_INT), dimension(*), intent(in) :: inembed
201
      integer(C_INT), value :: istride
202
      integer(C_INT), value :: idist
203
      real(16), dimension(*), intent(out) :: out
204
      integer(C_INT), dimension(*), intent(in) :: onembed
205
      integer(C_INT), value :: ostride
206
      integer(C_INT), value :: odist
207
      integer(C_INT), value :: flags
208
    end function fftwq_plan_many_dft_c2r
209
    
210
    type(C_PTR) function fftwq_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r')
211
      import
212
      integer(C_INT), value :: rank
213
      integer(C_INT), dimension(*), intent(in) :: n
214
      complex(16), dimension(*), intent(out) :: in
215
      real(16), dimension(*), intent(out) :: out
216
      integer(C_INT), value :: flags
217
    end function fftwq_plan_dft_c2r
218
    
219
    type(C_PTR) function fftwq_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_1d')
220
      import
221
      integer(C_INT), value :: n
222
      complex(16), dimension(*), intent(out) :: in
223
      real(16), dimension(*), intent(out) :: out
224
      integer(C_INT), value :: flags
225
    end function fftwq_plan_dft_c2r_1d
226
    
227
    type(C_PTR) function fftwq_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_2d')
228
      import
229
      integer(C_INT), value :: n0
230
      integer(C_INT), value :: n1
231
      complex(16), dimension(*), intent(out) :: in
232
      real(16), dimension(*), intent(out) :: out
233
      integer(C_INT), value :: flags
234
    end function fftwq_plan_dft_c2r_2d
235
    
236
    type(C_PTR) function fftwq_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_3d')
237
      import
238
      integer(C_INT), value :: n0
239
      integer(C_INT), value :: n1
240
      integer(C_INT), value :: n2
241
      complex(16), dimension(*), intent(out) :: in
242
      real(16), dimension(*), intent(out) :: out
243
      integer(C_INT), value :: flags
244
    end function fftwq_plan_dft_c2r_3d
245
    
246
    type(C_PTR) function fftwq_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
247
                         bind(C, name='fftwq_plan_guru_dft_r2c')
248
      import
249
      integer(C_INT), value :: rank
250
      type(fftwq_iodim), dimension(*), intent(in) :: dims
251
      integer(C_INT), value :: howmany_rank
252
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
253
      real(16), dimension(*), intent(out) :: in
254
      complex(16), dimension(*), intent(out) :: out
255
      integer(C_INT), value :: flags
256
    end function fftwq_plan_guru_dft_r2c
257
    
258
    type(C_PTR) function fftwq_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
259
                         bind(C, name='fftwq_plan_guru_dft_c2r')
260
      import
261
      integer(C_INT), value :: rank
262
      type(fftwq_iodim), dimension(*), intent(in) :: dims
263
      integer(C_INT), value :: howmany_rank
264
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
265
      complex(16), dimension(*), intent(out) :: in
266
      real(16), dimension(*), intent(out) :: out
267
      integer(C_INT), value :: flags
268
    end function fftwq_plan_guru_dft_c2r
269
    
270
    type(C_PTR) function fftwq_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
271
                         bind(C, name='fftwq_plan_guru_split_dft_r2c')
272
      import
273
      integer(C_INT), value :: rank
274
      type(fftwq_iodim), dimension(*), intent(in) :: dims
275
      integer(C_INT), value :: howmany_rank
276
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
277
      real(16), dimension(*), intent(out) :: in
278
      real(16), dimension(*), intent(out) :: ro
279
      real(16), dimension(*), intent(out) :: io
280
      integer(C_INT), value :: flags
281
    end function fftwq_plan_guru_split_dft_r2c
282
    
283
    type(C_PTR) function fftwq_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
284
                         bind(C, name='fftwq_plan_guru_split_dft_c2r')
285
      import
286
      integer(C_INT), value :: rank
287
      type(fftwq_iodim), dimension(*), intent(in) :: dims
288
      integer(C_INT), value :: howmany_rank
289
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
290
      real(16), dimension(*), intent(out) :: ri
291
      real(16), dimension(*), intent(out) :: ii
292
      real(16), dimension(*), intent(out) :: out
293
      integer(C_INT), value :: flags
294
    end function fftwq_plan_guru_split_dft_c2r
295
    
296
    type(C_PTR) function fftwq_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
297
                         bind(C, name='fftwq_plan_guru64_dft_r2c')
298
      import
299
      integer(C_INT), value :: rank
300
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
301
      integer(C_INT), value :: howmany_rank
302
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
303
      real(16), dimension(*), intent(out) :: in
304
      complex(16), dimension(*), intent(out) :: out
305
      integer(C_INT), value :: flags
306
    end function fftwq_plan_guru64_dft_r2c
307
    
308
    type(C_PTR) function fftwq_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
309
                         bind(C, name='fftwq_plan_guru64_dft_c2r')
310
      import
311
      integer(C_INT), value :: rank
312
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
313
      integer(C_INT), value :: howmany_rank
314
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
315
      complex(16), dimension(*), intent(out) :: in
316
      real(16), dimension(*), intent(out) :: out
317
      integer(C_INT), value :: flags
318
    end function fftwq_plan_guru64_dft_c2r
319
    
320
    type(C_PTR) function fftwq_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
321
                         bind(C, name='fftwq_plan_guru64_split_dft_r2c')
322
      import
323
      integer(C_INT), value :: rank
324
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
325
      integer(C_INT), value :: howmany_rank
326
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
327
      real(16), dimension(*), intent(out) :: in
328
      real(16), dimension(*), intent(out) :: ro
329
      real(16), dimension(*), intent(out) :: io
330
      integer(C_INT), value :: flags
331
    end function fftwq_plan_guru64_split_dft_r2c
332
    
333
    type(C_PTR) function fftwq_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
334
                         bind(C, name='fftwq_plan_guru64_split_dft_c2r')
335
      import
336
      integer(C_INT), value :: rank
337
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
338
      integer(C_INT), value :: howmany_rank
339
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
340
      real(16), dimension(*), intent(out) :: ri
341
      real(16), dimension(*), intent(out) :: ii
342
      real(16), dimension(*), intent(out) :: out
343
      integer(C_INT), value :: flags
344
    end function fftwq_plan_guru64_split_dft_c2r
345
    
346
    subroutine fftwq_execute_dft_r2c(p,in,out) bind(C, name='fftwq_execute_dft_r2c')
347
      import
348
      type(C_PTR), value :: p
349
      real(16), dimension(*), intent(inout) :: in
350
      complex(16), dimension(*), intent(out) :: out
351
    end subroutine fftwq_execute_dft_r2c
352
    
353
    subroutine fftwq_execute_dft_c2r(p,in,out) bind(C, name='fftwq_execute_dft_c2r')
354
      import
355
      type(C_PTR), value :: p
356
      complex(16), dimension(*), intent(inout) :: in
357
      real(16), dimension(*), intent(out) :: out
358
    end subroutine fftwq_execute_dft_c2r
359
    
360
    subroutine fftwq_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwq_execute_split_dft_r2c')
361
      import
362
      type(C_PTR), value :: p
363
      real(16), dimension(*), intent(inout) :: in
364
      real(16), dimension(*), intent(out) :: ro
365
      real(16), dimension(*), intent(out) :: io
366
    end subroutine fftwq_execute_split_dft_r2c
367
    
368
    subroutine fftwq_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwq_execute_split_dft_c2r')
369
      import
370
      type(C_PTR), value :: p
371
      real(16), dimension(*), intent(inout) :: ri
372
      real(16), dimension(*), intent(inout) :: ii
373
      real(16), dimension(*), intent(out) :: out
374
    end subroutine fftwq_execute_split_dft_c2r
375
    
376
    type(C_PTR) function fftwq_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
377
                         bind(C, name='fftwq_plan_many_r2r')
378
      import
379
      integer(C_INT), value :: rank
380
      integer(C_INT), dimension(*), intent(in) :: n
381
      integer(C_INT), value :: howmany
382
      real(16), dimension(*), intent(out) :: in
383
      integer(C_INT), dimension(*), intent(in) :: inembed
384
      integer(C_INT), value :: istride
385
      integer(C_INT), value :: idist
386
      real(16), dimension(*), intent(out) :: out
387
      integer(C_INT), dimension(*), intent(in) :: onembed
388
      integer(C_INT), value :: ostride
389
      integer(C_INT), value :: odist
390
      integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
391
      integer(C_INT), value :: flags
392
    end function fftwq_plan_many_r2r
393
    
394
    type(C_PTR) function fftwq_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r')
395
      import
396
      integer(C_INT), value :: rank
397
      integer(C_INT), dimension(*), intent(in) :: n
398
      real(16), dimension(*), intent(out) :: in
399
      real(16), dimension(*), intent(out) :: out
400
      integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
401
      integer(C_INT), value :: flags
402
    end function fftwq_plan_r2r
403
    
404
    type(C_PTR) function fftwq_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r_1d')
405
      import
406
      integer(C_INT), value :: n
407
      real(16), dimension(*), intent(out) :: in
408
      real(16), dimension(*), intent(out) :: out
409
      integer(C_FFTW_R2R_KIND), value :: kind
410
      integer(C_INT), value :: flags
411
    end function fftwq_plan_r2r_1d
412
    
413
    type(C_PTR) function fftwq_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwq_plan_r2r_2d')
414
      import
415
      integer(C_INT), value :: n0
416
      integer(C_INT), value :: n1
417
      real(16), dimension(*), intent(out) :: in
418
      real(16), dimension(*), intent(out) :: out
419
      integer(C_FFTW_R2R_KIND), value :: kind0
420
      integer(C_FFTW_R2R_KIND), value :: kind1
421
      integer(C_INT), value :: flags
422
    end function fftwq_plan_r2r_2d
423
    
424
    type(C_PTR) function fftwq_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwq_plan_r2r_3d')
425
      import
426
      integer(C_INT), value :: n0
427
      integer(C_INT), value :: n1
428
      integer(C_INT), value :: n2
429
      real(16), dimension(*), intent(out) :: in
430
      real(16), dimension(*), intent(out) :: out
431
      integer(C_FFTW_R2R_KIND), value :: kind0
432
      integer(C_FFTW_R2R_KIND), value :: kind1
433
      integer(C_FFTW_R2R_KIND), value :: kind2
434
      integer(C_INT), value :: flags
435
    end function fftwq_plan_r2r_3d
436
    
437
    type(C_PTR) function fftwq_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
438
                         bind(C, name='fftwq_plan_guru_r2r')
439
      import
440
      integer(C_INT), value :: rank
441
      type(fftwq_iodim), dimension(*), intent(in) :: dims
442
      integer(C_INT), value :: howmany_rank
443
      type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
444
      real(16), dimension(*), intent(out) :: in
445
      real(16), dimension(*), intent(out) :: out
446
      integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
447
      integer(C_INT), value :: flags
448
    end function fftwq_plan_guru_r2r
449
    
450
    type(C_PTR) function fftwq_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
451
                         bind(C, name='fftwq_plan_guru64_r2r')
452
      import
453
      integer(C_INT), value :: rank
454
      type(fftwq_iodim64), dimension(*), intent(in) :: dims
455
      integer(C_INT), value :: howmany_rank
456
      type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
457
      real(16), dimension(*), intent(out) :: in
458
      real(16), dimension(*), intent(out) :: out
459
      integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
460
      integer(C_INT), value :: flags
461
    end function fftwq_plan_guru64_r2r
462
    
463
    subroutine fftwq_execute_r2r(p,in,out) bind(C, name='fftwq_execute_r2r')
464
      import
465
      type(C_PTR), value :: p
466
      real(16), dimension(*), intent(inout) :: in
467
      real(16), dimension(*), intent(out) :: out
468
    end subroutine fftwq_execute_r2r
469
    
470
    subroutine fftwq_destroy_plan(p) bind(C, name='fftwq_destroy_plan')
471
      import
472
      type(C_PTR), value :: p
473
    end subroutine fftwq_destroy_plan
474
    
475
    subroutine fftwq_forget_wisdom() bind(C, name='fftwq_forget_wisdom')
476
      import
477
    end subroutine fftwq_forget_wisdom
478
    
479
    subroutine fftwq_cleanup() bind(C, name='fftwq_cleanup')
480
      import
481
    end subroutine fftwq_cleanup
482
    
483
    subroutine fftwq_set_timelimit(t) bind(C, name='fftwq_set_timelimit')
484
      import
485
      real(C_DOUBLE), value :: t
486
    end subroutine fftwq_set_timelimit
487
    
488
    subroutine fftwq_plan_with_nthreads(nthreads) bind(C, name='fftwq_plan_with_nthreads')
489
      import
490
      integer(C_INT), value :: nthreads
491
    end subroutine fftwq_plan_with_nthreads
492
    
493
    integer(C_INT) function fftwq_init_threads() bind(C, name='fftwq_init_threads')
494
      import
495
    end function fftwq_init_threads
496
    
497
    subroutine fftwq_cleanup_threads() bind(C, name='fftwq_cleanup_threads')
498
      import
499
    end subroutine fftwq_cleanup_threads
500
    
501
    subroutine fftwq_make_planner_thread_safe() bind(C, name='fftwq_make_planner_thread_safe')
502
      import
503
    end subroutine fftwq_make_planner_thread_safe
504
    
505
    integer(C_INT) function fftwq_export_wisdom_to_filename(filename) bind(C, name='fftwq_export_wisdom_to_filename')
506
      import
507
      character(C_CHAR), dimension(*), intent(in) :: filename
508
    end function fftwq_export_wisdom_to_filename
509
    
510
    subroutine fftwq_export_wisdom_to_file(output_file) bind(C, name='fftwq_export_wisdom_to_file')
511
      import
512
      type(C_PTR), value :: output_file
513
    end subroutine fftwq_export_wisdom_to_file
514
    
515
    type(C_PTR) function fftwq_export_wisdom_to_string() bind(C, name='fftwq_export_wisdom_to_string')
516
      import
517
    end function fftwq_export_wisdom_to_string
518
    
519
    subroutine fftwq_export_wisdom(write_char,data) bind(C, name='fftwq_export_wisdom')
520
      import
521
      type(C_FUNPTR), value :: write_char
522
      type(C_PTR), value :: data
523
    end subroutine fftwq_export_wisdom
524
    
525
    integer(C_INT) function fftwq_import_system_wisdom() bind(C, name='fftwq_import_system_wisdom')
526
      import
527
    end function fftwq_import_system_wisdom
528
    
529
    integer(C_INT) function fftwq_import_wisdom_from_filename(filename) bind(C, name='fftwq_import_wisdom_from_filename')
530
      import
531
      character(C_CHAR), dimension(*), intent(in) :: filename
532
    end function fftwq_import_wisdom_from_filename
533
    
534
    integer(C_INT) function fftwq_import_wisdom_from_file(input_file) bind(C, name='fftwq_import_wisdom_from_file')
535
      import
536
      type(C_PTR), value :: input_file
537
    end function fftwq_import_wisdom_from_file
538
    
539
    integer(C_INT) function fftwq_import_wisdom_from_string(input_string) bind(C, name='fftwq_import_wisdom_from_string')
540
      import
541
      character(C_CHAR), dimension(*), intent(in) :: input_string
542
    end function fftwq_import_wisdom_from_string
543
    
544
    integer(C_INT) function fftwq_import_wisdom(read_char,data) bind(C, name='fftwq_import_wisdom')
545
      import
546
      type(C_FUNPTR), value :: read_char
547
      type(C_PTR), value :: data
548
    end function fftwq_import_wisdom
549
    
550
    subroutine fftwq_fprint_plan(p,output_file) bind(C, name='fftwq_fprint_plan')
551
      import
552
      type(C_PTR), value :: p
553
      type(C_PTR), value :: output_file
554
    end subroutine fftwq_fprint_plan
555
    
556
    subroutine fftwq_print_plan(p) bind(C, name='fftwq_print_plan')
557
      import
558
      type(C_PTR), value :: p
559
    end subroutine fftwq_print_plan
560
    
561
    type(C_PTR) function fftwq_sprint_plan(p) bind(C, name='fftwq_sprint_plan')
562
      import
563
      type(C_PTR), value :: p
564
    end function fftwq_sprint_plan
565
    
566
    type(C_PTR) function fftwq_malloc(n) bind(C, name='fftwq_malloc')
567
      import
568
      integer(C_SIZE_T), value :: n
569
    end function fftwq_malloc
570
    
571
    type(C_PTR) function fftwq_alloc_real(n) bind(C, name='fftwq_alloc_real')
572
      import
573
      integer(C_SIZE_T), value :: n
574
    end function fftwq_alloc_real
575
    
576
    type(C_PTR) function fftwq_alloc_complex(n) bind(C, name='fftwq_alloc_complex')
577
      import
578
      integer(C_SIZE_T), value :: n
579
    end function fftwq_alloc_complex
580
    
581
    subroutine fftwq_free(p) bind(C, name='fftwq_free')
582
      import
583
      type(C_PTR), value :: p
584
    end subroutine fftwq_free
585
    
586
    subroutine fftwq_flops(p,add,mul,fmas) bind(C, name='fftwq_flops')
587
      import
588
      type(C_PTR), value :: p
589
      real(C_DOUBLE), intent(out) :: add
590
      real(C_DOUBLE), intent(out) :: mul
591
      real(C_DOUBLE), intent(out) :: fmas
592
    end subroutine fftwq_flops
593
    
594
    real(C_DOUBLE) function fftwq_estimate_cost(p) bind(C, name='fftwq_estimate_cost')
595
      import
596
      type(C_PTR), value :: p
597
    end function fftwq_estimate_cost
598
    
599
    real(C_DOUBLE) function fftwq_cost(p) bind(C, name='fftwq_cost')
600
      import
601
      type(C_PTR), value :: p
602
    end function fftwq_cost
603
    
604
    integer(C_INT) function fftwq_alignment_of(p) bind(C, name='fftwq_alignment_of')
605
      import
606
      real(16), dimension(*), intent(out) :: p
607
    end function fftwq_alignment_of
608
    
609
  end interface