1
=== added file 'api/fftw3.f'
2
--- old/api/fftw3.f 1970-01-01 00:00:00 +0000
3
+++ new/api/fftw3.f 2016-01-09 21:05:34 +0000
6
+ PARAMETER (FFTW_R2HC=0)
8
+ PARAMETER (FFTW_HC2R=1)
10
+ PARAMETER (FFTW_DHT=2)
11
+ INTEGER FFTW_REDFT00
12
+ PARAMETER (FFTW_REDFT00=3)
13
+ INTEGER FFTW_REDFT01
14
+ PARAMETER (FFTW_REDFT01=4)
15
+ INTEGER FFTW_REDFT10
16
+ PARAMETER (FFTW_REDFT10=5)
17
+ INTEGER FFTW_REDFT11
18
+ PARAMETER (FFTW_REDFT11=6)
19
+ INTEGER FFTW_RODFT00
20
+ PARAMETER (FFTW_RODFT00=7)
21
+ INTEGER FFTW_RODFT01
22
+ PARAMETER (FFTW_RODFT01=8)
23
+ INTEGER FFTW_RODFT10
24
+ PARAMETER (FFTW_RODFT10=9)
25
+ INTEGER FFTW_RODFT11
26
+ PARAMETER (FFTW_RODFT11=10)
27
+ INTEGER FFTW_FORWARD
28
+ PARAMETER (FFTW_FORWARD=-1)
29
+ INTEGER FFTW_BACKWARD
30
+ PARAMETER (FFTW_BACKWARD=+1)
31
+ INTEGER FFTW_MEASURE
32
+ PARAMETER (FFTW_MEASURE=0)
33
+ INTEGER FFTW_DESTROY_INPUT
34
+ PARAMETER (FFTW_DESTROY_INPUT=1)
35
+ INTEGER FFTW_UNALIGNED
36
+ PARAMETER (FFTW_UNALIGNED=2)
37
+ INTEGER FFTW_CONSERVE_MEMORY
38
+ PARAMETER (FFTW_CONSERVE_MEMORY=4)
39
+ INTEGER FFTW_EXHAUSTIVE
40
+ PARAMETER (FFTW_EXHAUSTIVE=8)
41
+ INTEGER FFTW_PRESERVE_INPUT
42
+ PARAMETER (FFTW_PRESERVE_INPUT=16)
43
+ INTEGER FFTW_PATIENT
44
+ PARAMETER (FFTW_PATIENT=32)
45
+ INTEGER FFTW_ESTIMATE
46
+ PARAMETER (FFTW_ESTIMATE=64)
47
+ INTEGER FFTW_WISDOM_ONLY
48
+ PARAMETER (FFTW_WISDOM_ONLY=2097152)
49
+ INTEGER FFTW_ESTIMATE_PATIENT
50
+ PARAMETER (FFTW_ESTIMATE_PATIENT=128)
51
+ INTEGER FFTW_BELIEVE_PCOST
52
+ PARAMETER (FFTW_BELIEVE_PCOST=256)
53
+ INTEGER FFTW_NO_DFT_R2HC
54
+ PARAMETER (FFTW_NO_DFT_R2HC=512)
55
+ INTEGER FFTW_NO_NONTHREADED
56
+ PARAMETER (FFTW_NO_NONTHREADED=1024)
57
+ INTEGER FFTW_NO_BUFFERING
58
+ PARAMETER (FFTW_NO_BUFFERING=2048)
59
+ INTEGER FFTW_NO_INDIRECT_OP
60
+ PARAMETER (FFTW_NO_INDIRECT_OP=4096)
61
+ INTEGER FFTW_ALLOW_LARGE_GENERIC
62
+ PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192)
63
+ INTEGER FFTW_NO_RANK_SPLITS
64
+ PARAMETER (FFTW_NO_RANK_SPLITS=16384)
65
+ INTEGER FFTW_NO_VRANK_SPLITS
66
+ PARAMETER (FFTW_NO_VRANK_SPLITS=32768)
67
+ INTEGER FFTW_NO_VRECURSE
68
+ PARAMETER (FFTW_NO_VRECURSE=65536)
69
+ INTEGER FFTW_NO_SIMD
70
+ PARAMETER (FFTW_NO_SIMD=131072)
71
+ INTEGER FFTW_NO_SLOW
72
+ PARAMETER (FFTW_NO_SLOW=262144)
73
+ INTEGER FFTW_NO_FIXED_RADIX_LARGE_N
74
+ PARAMETER (FFTW_NO_FIXED_RADIX_LARGE_N=524288)
75
+ INTEGER FFTW_ALLOW_PRUNING
76
+ PARAMETER (FFTW_ALLOW_PRUNING=1048576)
78
=== added file 'api/fftw3.f03.in'
79
--- old/api/fftw3.f03.in 1970-01-01 00:00:00 +0000
80
+++ new/api/fftw3.f03.in 2016-01-09 21:05:34 +0000
82
+! Generated automatically. DO NOT EDIT!
84
+ integer(C_INT), parameter :: FFTW_R2HC = 0
85
+ integer(C_INT), parameter :: FFTW_HC2R = 1
86
+ integer(C_INT), parameter :: FFTW_DHT = 2
87
+ integer(C_INT), parameter :: FFTW_REDFT00 = 3
88
+ integer(C_INT), parameter :: FFTW_REDFT01 = 4
89
+ integer(C_INT), parameter :: FFTW_REDFT10 = 5
90
+ integer(C_INT), parameter :: FFTW_REDFT11 = 6
91
+ integer(C_INT), parameter :: FFTW_RODFT00 = 7
92
+ integer(C_INT), parameter :: FFTW_RODFT01 = 8
93
+ integer(C_INT), parameter :: FFTW_RODFT10 = 9
94
+ integer(C_INT), parameter :: FFTW_RODFT11 = 10
95
+ integer(C_INT), parameter :: FFTW_FORWARD = -1
96
+ integer(C_INT), parameter :: FFTW_BACKWARD = +1
97
+ integer(C_INT), parameter :: FFTW_MEASURE = 0
98
+ integer(C_INT), parameter :: FFTW_DESTROY_INPUT = 1
99
+ integer(C_INT), parameter :: FFTW_UNALIGNED = 2
100
+ integer(C_INT), parameter :: FFTW_CONSERVE_MEMORY = 4
101
+ integer(C_INT), parameter :: FFTW_EXHAUSTIVE = 8
102
+ integer(C_INT), parameter :: FFTW_PRESERVE_INPUT = 16
103
+ integer(C_INT), parameter :: FFTW_PATIENT = 32
104
+ integer(C_INT), parameter :: FFTW_ESTIMATE = 64
105
+ integer(C_INT), parameter :: FFTW_WISDOM_ONLY = 2097152
106
+ integer(C_INT), parameter :: FFTW_ESTIMATE_PATIENT = 128
107
+ integer(C_INT), parameter :: FFTW_BELIEVE_PCOST = 256
108
+ integer(C_INT), parameter :: FFTW_NO_DFT_R2HC = 512
109
+ integer(C_INT), parameter :: FFTW_NO_NONTHREADED = 1024
110
+ integer(C_INT), parameter :: FFTW_NO_BUFFERING = 2048
111
+ integer(C_INT), parameter :: FFTW_NO_INDIRECT_OP = 4096
112
+ integer(C_INT), parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192
113
+ integer(C_INT), parameter :: FFTW_NO_RANK_SPLITS = 16384
114
+ integer(C_INT), parameter :: FFTW_NO_VRANK_SPLITS = 32768
115
+ integer(C_INT), parameter :: FFTW_NO_VRECURSE = 65536
116
+ integer(C_INT), parameter :: FFTW_NO_SIMD = 131072
117
+ integer(C_INT), parameter :: FFTW_NO_SLOW = 262144
118
+ integer(C_INT), parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288
119
+ integer(C_INT), parameter :: FFTW_ALLOW_PRUNING = 1048576
121
+ type, bind(C) :: fftw_iodim
122
+ integer(C_INT) n, is, os
123
+ end type fftw_iodim
124
+ type, bind(C) :: fftw_iodim64
125
+ integer(C_INTPTR_T) n, is, os
126
+ end type fftw_iodim64
129
+ type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftw_plan_dft')
131
+ integer(C_INT), value :: rank
132
+ integer(C_INT), dimension(*), intent(in) :: n
133
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
134
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
135
+ integer(C_INT), value :: sign
136
+ integer(C_INT), value :: flags
137
+ end function fftw_plan_dft
139
+ type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d')
141
+ integer(C_INT), value :: n
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_dft_1d
148
+ type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftw_plan_dft_2d')
150
+ integer(C_INT), value :: n0
151
+ integer(C_INT), value :: n1
152
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
153
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
154
+ integer(C_INT), value :: sign
155
+ integer(C_INT), value :: flags
156
+ end function fftw_plan_dft_2d
158
+ type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftw_plan_dft_3d')
160
+ integer(C_INT), value :: n0
161
+ integer(C_INT), value :: n1
162
+ integer(C_INT), value :: n2
163
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
164
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
165
+ integer(C_INT), value :: sign
166
+ integer(C_INT), value :: flags
167
+ end function fftw_plan_dft_3d
169
+ type(C_PTR) function fftw_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
170
+ bind(C, name='fftw_plan_many_dft')
172
+ integer(C_INT), value :: rank
173
+ integer(C_INT), dimension(*), intent(in) :: n
174
+ integer(C_INT), value :: howmany
175
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
176
+ integer(C_INT), dimension(*), intent(in) :: inembed
177
+ integer(C_INT), value :: istride
178
+ integer(C_INT), value :: idist
179
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
180
+ integer(C_INT), dimension(*), intent(in) :: onembed
181
+ integer(C_INT), value :: ostride
182
+ integer(C_INT), value :: odist
183
+ integer(C_INT), value :: sign
184
+ integer(C_INT), value :: flags
185
+ end function fftw_plan_many_dft
187
+ type(C_PTR) function fftw_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
188
+ bind(C, name='fftw_plan_guru_dft')
190
+ integer(C_INT), value :: rank
191
+ type(fftw_iodim), dimension(*), intent(in) :: dims
192
+ integer(C_INT), value :: howmany_rank
193
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
194
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
195
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
196
+ integer(C_INT), value :: sign
197
+ integer(C_INT), value :: flags
198
+ end function fftw_plan_guru_dft
200
+ type(C_PTR) function fftw_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
201
+ bind(C, name='fftw_plan_guru_split_dft')
203
+ integer(C_INT), value :: rank
204
+ type(fftw_iodim), dimension(*), intent(in) :: dims
205
+ integer(C_INT), value :: howmany_rank
206
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
207
+ real(C_DOUBLE), dimension(*), intent(out) :: ri
208
+ real(C_DOUBLE), dimension(*), intent(out) :: ii
209
+ real(C_DOUBLE), dimension(*), intent(out) :: ro
210
+ real(C_DOUBLE), dimension(*), intent(out) :: io
211
+ integer(C_INT), value :: flags
212
+ end function fftw_plan_guru_split_dft
214
+ type(C_PTR) function fftw_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
215
+ bind(C, name='fftw_plan_guru64_dft')
217
+ integer(C_INT), value :: rank
218
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
219
+ integer(C_INT), value :: howmany_rank
220
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
221
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
222
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
223
+ integer(C_INT), value :: sign
224
+ integer(C_INT), value :: flags
225
+ end function fftw_plan_guru64_dft
227
+ type(C_PTR) function fftw_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
228
+ bind(C, name='fftw_plan_guru64_split_dft')
230
+ integer(C_INT), value :: rank
231
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
232
+ integer(C_INT), value :: howmany_rank
233
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
234
+ real(C_DOUBLE), dimension(*), intent(out) :: ri
235
+ real(C_DOUBLE), dimension(*), intent(out) :: ii
236
+ real(C_DOUBLE), dimension(*), intent(out) :: ro
237
+ real(C_DOUBLE), dimension(*), intent(out) :: io
238
+ integer(C_INT), value :: flags
239
+ end function fftw_plan_guru64_split_dft
241
+ subroutine fftw_execute_dft(p,in,out) bind(C, name='fftw_execute_dft')
243
+ type(C_PTR), value :: p
244
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
245
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
246
+ end subroutine fftw_execute_dft
248
+ subroutine fftw_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftw_execute_split_dft')
250
+ type(C_PTR), value :: p
251
+ real(C_DOUBLE), dimension(*), intent(inout) :: ri
252
+ real(C_DOUBLE), dimension(*), intent(inout) :: ii
253
+ real(C_DOUBLE), dimension(*), intent(out) :: ro
254
+ real(C_DOUBLE), dimension(*), intent(out) :: io
255
+ end subroutine fftw_execute_split_dft
257
+ type(C_PTR) function fftw_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
258
+ bind(C, name='fftw_plan_many_dft_r2c')
260
+ integer(C_INT), value :: rank
261
+ integer(C_INT), dimension(*), intent(in) :: n
262
+ integer(C_INT), value :: howmany
263
+ real(C_DOUBLE), dimension(*), intent(out) :: in
264
+ integer(C_INT), dimension(*), intent(in) :: inembed
265
+ integer(C_INT), value :: istride
266
+ integer(C_INT), value :: idist
267
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
268
+ integer(C_INT), dimension(*), intent(in) :: onembed
269
+ integer(C_INT), value :: ostride
270
+ integer(C_INT), value :: odist
271
+ integer(C_INT), value :: flags
272
+ end function fftw_plan_many_dft_r2c
274
+ type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_r2c')
276
+ integer(C_INT), value :: rank
277
+ integer(C_INT), dimension(*), intent(in) :: n
278
+ real(C_DOUBLE), dimension(*), intent(out) :: in
279
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
280
+ integer(C_INT), value :: flags
281
+ end function fftw_plan_dft_r2c
283
+ type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_r2c_1d')
285
+ integer(C_INT), value :: n
286
+ real(C_DOUBLE), dimension(*), intent(out) :: in
287
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
288
+ integer(C_INT), value :: flags
289
+ end function fftw_plan_dft_r2c_1d
291
+ type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_r2c_2d')
293
+ integer(C_INT), value :: n0
294
+ integer(C_INT), value :: n1
295
+ real(C_DOUBLE), dimension(*), intent(out) :: in
296
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
297
+ integer(C_INT), value :: flags
298
+ end function fftw_plan_dft_r2c_2d
300
+ type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_r2c_3d')
302
+ integer(C_INT), value :: n0
303
+ integer(C_INT), value :: n1
304
+ integer(C_INT), value :: n2
305
+ real(C_DOUBLE), dimension(*), intent(out) :: in
306
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
307
+ integer(C_INT), value :: flags
308
+ end function fftw_plan_dft_r2c_3d
310
+ type(C_PTR) function fftw_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
311
+ bind(C, name='fftw_plan_many_dft_c2r')
313
+ integer(C_INT), value :: rank
314
+ integer(C_INT), dimension(*), intent(in) :: n
315
+ integer(C_INT), value :: howmany
316
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
317
+ integer(C_INT), dimension(*), intent(in) :: inembed
318
+ integer(C_INT), value :: istride
319
+ integer(C_INT), value :: idist
320
+ real(C_DOUBLE), dimension(*), intent(out) :: out
321
+ integer(C_INT), dimension(*), intent(in) :: onembed
322
+ integer(C_INT), value :: ostride
323
+ integer(C_INT), value :: odist
324
+ integer(C_INT), value :: flags
325
+ end function fftw_plan_many_dft_c2r
327
+ type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_c2r')
329
+ integer(C_INT), value :: rank
330
+ integer(C_INT), dimension(*), intent(in) :: n
331
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
332
+ real(C_DOUBLE), dimension(*), intent(out) :: out
333
+ integer(C_INT), value :: flags
334
+ end function fftw_plan_dft_c2r
336
+ type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_c2r_1d')
338
+ integer(C_INT), value :: n
339
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
340
+ real(C_DOUBLE), dimension(*), intent(out) :: out
341
+ integer(C_INT), value :: flags
342
+ end function fftw_plan_dft_c2r_1d
344
+ type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_c2r_2d')
346
+ integer(C_INT), value :: n0
347
+ integer(C_INT), value :: n1
348
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
349
+ real(C_DOUBLE), dimension(*), intent(out) :: out
350
+ integer(C_INT), value :: flags
351
+ end function fftw_plan_dft_c2r_2d
353
+ type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_c2r_3d')
355
+ integer(C_INT), value :: n0
356
+ integer(C_INT), value :: n1
357
+ integer(C_INT), value :: n2
358
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
359
+ real(C_DOUBLE), dimension(*), intent(out) :: out
360
+ integer(C_INT), value :: flags
361
+ end function fftw_plan_dft_c2r_3d
363
+ type(C_PTR) function fftw_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
364
+ bind(C, name='fftw_plan_guru_dft_r2c')
366
+ integer(C_INT), value :: rank
367
+ type(fftw_iodim), dimension(*), intent(in) :: dims
368
+ integer(C_INT), value :: howmany_rank
369
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
370
+ real(C_DOUBLE), dimension(*), intent(out) :: in
371
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
372
+ integer(C_INT), value :: flags
373
+ end function fftw_plan_guru_dft_r2c
375
+ type(C_PTR) function fftw_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
376
+ bind(C, name='fftw_plan_guru_dft_c2r')
378
+ integer(C_INT), value :: rank
379
+ type(fftw_iodim), dimension(*), intent(in) :: dims
380
+ integer(C_INT), value :: howmany_rank
381
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
382
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
383
+ real(C_DOUBLE), dimension(*), intent(out) :: out
384
+ integer(C_INT), value :: flags
385
+ end function fftw_plan_guru_dft_c2r
387
+ type(C_PTR) function fftw_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
388
+ bind(C, name='fftw_plan_guru_split_dft_r2c')
390
+ integer(C_INT), value :: rank
391
+ type(fftw_iodim), dimension(*), intent(in) :: dims
392
+ integer(C_INT), value :: howmany_rank
393
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
394
+ real(C_DOUBLE), dimension(*), intent(out) :: in
395
+ real(C_DOUBLE), dimension(*), intent(out) :: ro
396
+ real(C_DOUBLE), dimension(*), intent(out) :: io
397
+ integer(C_INT), value :: flags
398
+ end function fftw_plan_guru_split_dft_r2c
400
+ type(C_PTR) function fftw_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
401
+ bind(C, name='fftw_plan_guru_split_dft_c2r')
403
+ integer(C_INT), value :: rank
404
+ type(fftw_iodim), dimension(*), intent(in) :: dims
405
+ integer(C_INT), value :: howmany_rank
406
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
407
+ real(C_DOUBLE), dimension(*), intent(out) :: ri
408
+ real(C_DOUBLE), dimension(*), intent(out) :: ii
409
+ real(C_DOUBLE), dimension(*), intent(out) :: out
410
+ integer(C_INT), value :: flags
411
+ end function fftw_plan_guru_split_dft_c2r
413
+ type(C_PTR) function fftw_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
414
+ bind(C, name='fftw_plan_guru64_dft_r2c')
416
+ integer(C_INT), value :: rank
417
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
418
+ integer(C_INT), value :: howmany_rank
419
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
420
+ real(C_DOUBLE), dimension(*), intent(out) :: in
421
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
422
+ integer(C_INT), value :: flags
423
+ end function fftw_plan_guru64_dft_r2c
425
+ type(C_PTR) function fftw_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
426
+ bind(C, name='fftw_plan_guru64_dft_c2r')
428
+ integer(C_INT), value :: rank
429
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
430
+ integer(C_INT), value :: howmany_rank
431
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
432
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
433
+ real(C_DOUBLE), dimension(*), intent(out) :: out
434
+ integer(C_INT), value :: flags
435
+ end function fftw_plan_guru64_dft_c2r
437
+ type(C_PTR) function fftw_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
438
+ bind(C, name='fftw_plan_guru64_split_dft_r2c')
440
+ integer(C_INT), value :: rank
441
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
442
+ integer(C_INT), value :: howmany_rank
443
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
444
+ real(C_DOUBLE), dimension(*), intent(out) :: in
445
+ real(C_DOUBLE), dimension(*), intent(out) :: ro
446
+ real(C_DOUBLE), dimension(*), intent(out) :: io
447
+ integer(C_INT), value :: flags
448
+ end function fftw_plan_guru64_split_dft_r2c
450
+ type(C_PTR) function fftw_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
451
+ bind(C, name='fftw_plan_guru64_split_dft_c2r')
453
+ integer(C_INT), value :: rank
454
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
455
+ integer(C_INT), value :: howmany_rank
456
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
457
+ real(C_DOUBLE), dimension(*), intent(out) :: ri
458
+ real(C_DOUBLE), dimension(*), intent(out) :: ii
459
+ real(C_DOUBLE), dimension(*), intent(out) :: out
460
+ integer(C_INT), value :: flags
461
+ end function fftw_plan_guru64_split_dft_c2r
463
+ subroutine fftw_execute_dft_r2c(p,in,out) bind(C, name='fftw_execute_dft_r2c')
465
+ type(C_PTR), value :: p
466
+ real(C_DOUBLE), dimension(*), intent(inout) :: in
467
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
468
+ end subroutine fftw_execute_dft_r2c
470
+ subroutine fftw_execute_dft_c2r(p,in,out) bind(C, name='fftw_execute_dft_c2r')
472
+ type(C_PTR), value :: p
473
+ complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
474
+ real(C_DOUBLE), dimension(*), intent(out) :: out
475
+ end subroutine fftw_execute_dft_c2r
477
+ subroutine fftw_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftw_execute_split_dft_r2c')
479
+ type(C_PTR), value :: p
480
+ real(C_DOUBLE), dimension(*), intent(inout) :: in
481
+ real(C_DOUBLE), dimension(*), intent(out) :: ro
482
+ real(C_DOUBLE), dimension(*), intent(out) :: io
483
+ end subroutine fftw_execute_split_dft_r2c
485
+ subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftw_execute_split_dft_c2r')
487
+ type(C_PTR), value :: p
488
+ real(C_DOUBLE), dimension(*), intent(inout) :: ri
489
+ real(C_DOUBLE), dimension(*), intent(inout) :: ii
490
+ real(C_DOUBLE), dimension(*), intent(out) :: out
491
+ end subroutine fftw_execute_split_dft_c2r
493
+ type(C_PTR) function fftw_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
494
+ bind(C, name='fftw_plan_many_r2r')
496
+ integer(C_INT), value :: rank
497
+ integer(C_INT), dimension(*), intent(in) :: n
498
+ integer(C_INT), value :: howmany
499
+ real(C_DOUBLE), dimension(*), intent(out) :: in
500
+ integer(C_INT), dimension(*), intent(in) :: inembed
501
+ integer(C_INT), value :: istride
502
+ integer(C_INT), value :: idist
503
+ real(C_DOUBLE), dimension(*), intent(out) :: out
504
+ integer(C_INT), dimension(*), intent(in) :: onembed
505
+ integer(C_INT), value :: ostride
506
+ integer(C_INT), value :: odist
507
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
508
+ integer(C_INT), value :: flags
509
+ end function fftw_plan_many_r2r
511
+ type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftw_plan_r2r')
513
+ integer(C_INT), value :: rank
514
+ integer(C_INT), dimension(*), intent(in) :: n
515
+ real(C_DOUBLE), dimension(*), intent(out) :: in
516
+ real(C_DOUBLE), dimension(*), intent(out) :: out
517
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
518
+ integer(C_INT), value :: flags
519
+ end function fftw_plan_r2r
521
+ type(C_PTR) function fftw_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftw_plan_r2r_1d')
523
+ integer(C_INT), value :: n
524
+ real(C_DOUBLE), dimension(*), intent(out) :: in
525
+ real(C_DOUBLE), dimension(*), intent(out) :: out
526
+ integer(C_FFTW_R2R_KIND), value :: kind
527
+ integer(C_INT), value :: flags
528
+ end function fftw_plan_r2r_1d
530
+ type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftw_plan_r2r_2d')
532
+ integer(C_INT), value :: n0
533
+ integer(C_INT), value :: n1
534
+ real(C_DOUBLE), dimension(*), intent(out) :: in
535
+ real(C_DOUBLE), dimension(*), intent(out) :: out
536
+ integer(C_FFTW_R2R_KIND), value :: kind0
537
+ integer(C_FFTW_R2R_KIND), value :: kind1
538
+ integer(C_INT), value :: flags
539
+ end function fftw_plan_r2r_2d
541
+ type(C_PTR) function fftw_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftw_plan_r2r_3d')
543
+ integer(C_INT), value :: n0
544
+ integer(C_INT), value :: n1
545
+ integer(C_INT), value :: n2
546
+ real(C_DOUBLE), dimension(*), intent(out) :: in
547
+ real(C_DOUBLE), dimension(*), intent(out) :: out
548
+ integer(C_FFTW_R2R_KIND), value :: kind0
549
+ integer(C_FFTW_R2R_KIND), value :: kind1
550
+ integer(C_FFTW_R2R_KIND), value :: kind2
551
+ integer(C_INT), value :: flags
552
+ end function fftw_plan_r2r_3d
554
+ type(C_PTR) function fftw_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
555
+ bind(C, name='fftw_plan_guru_r2r')
557
+ integer(C_INT), value :: rank
558
+ type(fftw_iodim), dimension(*), intent(in) :: dims
559
+ integer(C_INT), value :: howmany_rank
560
+ type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
561
+ real(C_DOUBLE), dimension(*), intent(out) :: in
562
+ real(C_DOUBLE), dimension(*), intent(out) :: out
563
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
564
+ integer(C_INT), value :: flags
565
+ end function fftw_plan_guru_r2r
567
+ type(C_PTR) function fftw_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
568
+ bind(C, name='fftw_plan_guru64_r2r')
570
+ integer(C_INT), value :: rank
571
+ type(fftw_iodim64), dimension(*), intent(in) :: dims
572
+ integer(C_INT), value :: howmany_rank
573
+ type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
574
+ real(C_DOUBLE), dimension(*), intent(out) :: in
575
+ real(C_DOUBLE), dimension(*), intent(out) :: out
576
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
577
+ integer(C_INT), value :: flags
578
+ end function fftw_plan_guru64_r2r
580
+ subroutine fftw_execute_r2r(p,in,out) bind(C, name='fftw_execute_r2r')
582
+ type(C_PTR), value :: p
583
+ real(C_DOUBLE), dimension(*), intent(inout) :: in
584
+ real(C_DOUBLE), dimension(*), intent(out) :: out
585
+ end subroutine fftw_execute_r2r
587
+ subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan')
589
+ type(C_PTR), value :: p
590
+ end subroutine fftw_destroy_plan
592
+ subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom')
594
+ end subroutine fftw_forget_wisdom
596
+ subroutine fftw_cleanup() bind(C, name='fftw_cleanup')
598
+ end subroutine fftw_cleanup
600
+ subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit')
602
+ real(C_DOUBLE), value :: t
603
+ end subroutine fftw_set_timelimit
605
+ subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads')
607
+ integer(C_INT), value :: nthreads
608
+ end subroutine fftw_plan_with_nthreads
610
+ integer(C_INT) function fftw_init_threads() bind(C, name='fftw_init_threads')
612
+ end function fftw_init_threads
614
+ subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads')
616
+ end subroutine fftw_cleanup_threads
618
+ subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe')
620
+ end subroutine fftw_make_planner_thread_safe
622
+ integer(C_INT) function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename')
624
+ character(C_CHAR), dimension(*), intent(in) :: filename
625
+ end function fftw_export_wisdom_to_filename
627
+ subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file')
629
+ type(C_PTR), value :: output_file
630
+ end subroutine fftw_export_wisdom_to_file
632
+ type(C_PTR) function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string')
634
+ end function fftw_export_wisdom_to_string
636
+ subroutine fftw_export_wisdom(write_char,data) bind(C, name='fftw_export_wisdom')
638
+ type(C_FUNPTR), value :: write_char
639
+ type(C_PTR), value :: data
640
+ end subroutine fftw_export_wisdom
642
+ integer(C_INT) function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom')
644
+ end function fftw_import_system_wisdom
646
+ integer(C_INT) function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename')
648
+ character(C_CHAR), dimension(*), intent(in) :: filename
649
+ end function fftw_import_wisdom_from_filename
651
+ integer(C_INT) function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file')
653
+ type(C_PTR), value :: input_file
654
+ end function fftw_import_wisdom_from_file
656
+ integer(C_INT) function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string')
658
+ character(C_CHAR), dimension(*), intent(in) :: input_string
659
+ end function fftw_import_wisdom_from_string
661
+ integer(C_INT) function fftw_import_wisdom(read_char,data) bind(C, name='fftw_import_wisdom')
663
+ type(C_FUNPTR), value :: read_char
664
+ type(C_PTR), value :: data
665
+ end function fftw_import_wisdom
667
+ subroutine fftw_fprint_plan(p,output_file) bind(C, name='fftw_fprint_plan')
669
+ type(C_PTR), value :: p
670
+ type(C_PTR), value :: output_file
671
+ end subroutine fftw_fprint_plan
673
+ subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan')
675
+ type(C_PTR), value :: p
676
+ end subroutine fftw_print_plan
678
+ type(C_PTR) function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan')
680
+ type(C_PTR), value :: p
681
+ end function fftw_sprint_plan
683
+ type(C_PTR) function fftw_malloc(n) bind(C, name='fftw_malloc')
685
+ integer(C_SIZE_T), value :: n
686
+ end function fftw_malloc
688
+ type(C_PTR) function fftw_alloc_real(n) bind(C, name='fftw_alloc_real')
690
+ integer(C_SIZE_T), value :: n
691
+ end function fftw_alloc_real
693
+ type(C_PTR) function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex')
695
+ integer(C_SIZE_T), value :: n
696
+ end function fftw_alloc_complex
698
+ subroutine fftw_free(p) bind(C, name='fftw_free')
700
+ type(C_PTR), value :: p
701
+ end subroutine fftw_free
703
+ subroutine fftw_flops(p,add,mul,fmas) bind(C, name='fftw_flops')
705
+ type(C_PTR), value :: p
706
+ real(C_DOUBLE), intent(out) :: add
707
+ real(C_DOUBLE), intent(out) :: mul
708
+ real(C_DOUBLE), intent(out) :: fmas
709
+ end subroutine fftw_flops
711
+ real(C_DOUBLE) function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost')
713
+ type(C_PTR), value :: p
714
+ end function fftw_estimate_cost
716
+ real(C_DOUBLE) function fftw_cost(p) bind(C, name='fftw_cost')
718
+ type(C_PTR), value :: p
719
+ end function fftw_cost
721
+ integer(C_INT) function fftw_alignment_of(p) bind(C, name='fftw_alignment_of')
723
+ real(C_DOUBLE), dimension(*), intent(out) :: p
724
+ end function fftw_alignment_of
728
+ type, bind(C) :: fftwf_iodim
729
+ integer(C_INT) n, is, os
730
+ end type fftwf_iodim
731
+ type, bind(C) :: fftwf_iodim64
732
+ integer(C_INTPTR_T) n, is, os
733
+ end type fftwf_iodim64
736
+ type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwf_plan_dft')
738
+ integer(C_INT), value :: rank
739
+ integer(C_INT), dimension(*), intent(in) :: n
740
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
741
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
742
+ integer(C_INT), value :: sign
743
+ integer(C_INT), value :: flags
744
+ end function fftwf_plan_dft
746
+ type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwf_plan_dft_1d')
748
+ integer(C_INT), value :: n
749
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
750
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
751
+ integer(C_INT), value :: sign
752
+ integer(C_INT), value :: flags
753
+ end function fftwf_plan_dft_1d
755
+ type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwf_plan_dft_2d')
757
+ integer(C_INT), value :: n0
758
+ integer(C_INT), value :: n1
759
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
760
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
761
+ integer(C_INT), value :: sign
762
+ integer(C_INT), value :: flags
763
+ end function fftwf_plan_dft_2d
765
+ type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwf_plan_dft_3d')
767
+ integer(C_INT), value :: n0
768
+ integer(C_INT), value :: n1
769
+ integer(C_INT), value :: n2
770
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
771
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
772
+ integer(C_INT), value :: sign
773
+ integer(C_INT), value :: flags
774
+ end function fftwf_plan_dft_3d
776
+ type(C_PTR) function fftwf_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
777
+ bind(C, name='fftwf_plan_many_dft')
779
+ integer(C_INT), value :: rank
780
+ integer(C_INT), dimension(*), intent(in) :: n
781
+ integer(C_INT), value :: howmany
782
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
783
+ integer(C_INT), dimension(*), intent(in) :: inembed
784
+ integer(C_INT), value :: istride
785
+ integer(C_INT), value :: idist
786
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
787
+ integer(C_INT), dimension(*), intent(in) :: onembed
788
+ integer(C_INT), value :: ostride
789
+ integer(C_INT), value :: odist
790
+ integer(C_INT), value :: sign
791
+ integer(C_INT), value :: flags
792
+ end function fftwf_plan_many_dft
794
+ type(C_PTR) function fftwf_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
795
+ bind(C, name='fftwf_plan_guru_dft')
797
+ integer(C_INT), value :: rank
798
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
799
+ integer(C_INT), value :: howmany_rank
800
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
801
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
802
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
803
+ integer(C_INT), value :: sign
804
+ integer(C_INT), value :: flags
805
+ end function fftwf_plan_guru_dft
807
+ type(C_PTR) function fftwf_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
808
+ bind(C, name='fftwf_plan_guru_split_dft')
810
+ integer(C_INT), value :: rank
811
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
812
+ integer(C_INT), value :: howmany_rank
813
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
814
+ real(C_FLOAT), dimension(*), intent(out) :: ri
815
+ real(C_FLOAT), dimension(*), intent(out) :: ii
816
+ real(C_FLOAT), dimension(*), intent(out) :: ro
817
+ real(C_FLOAT), dimension(*), intent(out) :: io
818
+ integer(C_INT), value :: flags
819
+ end function fftwf_plan_guru_split_dft
821
+ type(C_PTR) function fftwf_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
822
+ bind(C, name='fftwf_plan_guru64_dft')
824
+ integer(C_INT), value :: rank
825
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
826
+ integer(C_INT), value :: howmany_rank
827
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
828
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
829
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
830
+ integer(C_INT), value :: sign
831
+ integer(C_INT), value :: flags
832
+ end function fftwf_plan_guru64_dft
834
+ type(C_PTR) function fftwf_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
835
+ bind(C, name='fftwf_plan_guru64_split_dft')
837
+ integer(C_INT), value :: rank
838
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
839
+ integer(C_INT), value :: howmany_rank
840
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
841
+ real(C_FLOAT), dimension(*), intent(out) :: ri
842
+ real(C_FLOAT), dimension(*), intent(out) :: ii
843
+ real(C_FLOAT), dimension(*), intent(out) :: ro
844
+ real(C_FLOAT), dimension(*), intent(out) :: io
845
+ integer(C_INT), value :: flags
846
+ end function fftwf_plan_guru64_split_dft
848
+ subroutine fftwf_execute_dft(p,in,out) bind(C, name='fftwf_execute_dft')
850
+ type(C_PTR), value :: p
851
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
852
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
853
+ end subroutine fftwf_execute_dft
855
+ subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwf_execute_split_dft')
857
+ type(C_PTR), value :: p
858
+ real(C_FLOAT), dimension(*), intent(inout) :: ri
859
+ real(C_FLOAT), dimension(*), intent(inout) :: ii
860
+ real(C_FLOAT), dimension(*), intent(out) :: ro
861
+ real(C_FLOAT), dimension(*), intent(out) :: io
862
+ end subroutine fftwf_execute_split_dft
864
+ type(C_PTR) function fftwf_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
865
+ bind(C, name='fftwf_plan_many_dft_r2c')
867
+ integer(C_INT), value :: rank
868
+ integer(C_INT), dimension(*), intent(in) :: n
869
+ integer(C_INT), value :: howmany
870
+ real(C_FLOAT), dimension(*), intent(out) :: in
871
+ integer(C_INT), dimension(*), intent(in) :: inembed
872
+ integer(C_INT), value :: istride
873
+ integer(C_INT), value :: idist
874
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
875
+ integer(C_INT), dimension(*), intent(in) :: onembed
876
+ integer(C_INT), value :: ostride
877
+ integer(C_INT), value :: odist
878
+ integer(C_INT), value :: flags
879
+ end function fftwf_plan_many_dft_r2c
881
+ type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c')
883
+ integer(C_INT), value :: rank
884
+ integer(C_INT), dimension(*), intent(in) :: n
885
+ real(C_FLOAT), dimension(*), intent(out) :: in
886
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
887
+ integer(C_INT), value :: flags
888
+ end function fftwf_plan_dft_r2c
890
+ type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_1d')
892
+ integer(C_INT), value :: n
893
+ real(C_FLOAT), dimension(*), intent(out) :: in
894
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
895
+ integer(C_INT), value :: flags
896
+ end function fftwf_plan_dft_r2c_1d
898
+ type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_2d')
900
+ integer(C_INT), value :: n0
901
+ integer(C_INT), value :: n1
902
+ real(C_FLOAT), dimension(*), intent(out) :: in
903
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
904
+ integer(C_INT), value :: flags
905
+ end function fftwf_plan_dft_r2c_2d
907
+ type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_3d')
909
+ integer(C_INT), value :: n0
910
+ integer(C_INT), value :: n1
911
+ integer(C_INT), value :: n2
912
+ real(C_FLOAT), dimension(*), intent(out) :: in
913
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
914
+ integer(C_INT), value :: flags
915
+ end function fftwf_plan_dft_r2c_3d
917
+ type(C_PTR) function fftwf_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
918
+ bind(C, name='fftwf_plan_many_dft_c2r')
920
+ integer(C_INT), value :: rank
921
+ integer(C_INT), dimension(*), intent(in) :: n
922
+ integer(C_INT), value :: howmany
923
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
924
+ integer(C_INT), dimension(*), intent(in) :: inembed
925
+ integer(C_INT), value :: istride
926
+ integer(C_INT), value :: idist
927
+ real(C_FLOAT), dimension(*), intent(out) :: out
928
+ integer(C_INT), dimension(*), intent(in) :: onembed
929
+ integer(C_INT), value :: ostride
930
+ integer(C_INT), value :: odist
931
+ integer(C_INT), value :: flags
932
+ end function fftwf_plan_many_dft_c2r
934
+ type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r')
936
+ integer(C_INT), value :: rank
937
+ integer(C_INT), dimension(*), intent(in) :: n
938
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
939
+ real(C_FLOAT), dimension(*), intent(out) :: out
940
+ integer(C_INT), value :: flags
941
+ end function fftwf_plan_dft_c2r
943
+ type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_1d')
945
+ integer(C_INT), value :: n
946
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
947
+ real(C_FLOAT), dimension(*), intent(out) :: out
948
+ integer(C_INT), value :: flags
949
+ end function fftwf_plan_dft_c2r_1d
951
+ type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_2d')
953
+ integer(C_INT), value :: n0
954
+ integer(C_INT), value :: n1
955
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
956
+ real(C_FLOAT), dimension(*), intent(out) :: out
957
+ integer(C_INT), value :: flags
958
+ end function fftwf_plan_dft_c2r_2d
960
+ type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_3d')
962
+ integer(C_INT), value :: n0
963
+ integer(C_INT), value :: n1
964
+ integer(C_INT), value :: n2
965
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
966
+ real(C_FLOAT), dimension(*), intent(out) :: out
967
+ integer(C_INT), value :: flags
968
+ end function fftwf_plan_dft_c2r_3d
970
+ type(C_PTR) function fftwf_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
971
+ bind(C, name='fftwf_plan_guru_dft_r2c')
973
+ integer(C_INT), value :: rank
974
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
975
+ integer(C_INT), value :: howmany_rank
976
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
977
+ real(C_FLOAT), dimension(*), intent(out) :: in
978
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
979
+ integer(C_INT), value :: flags
980
+ end function fftwf_plan_guru_dft_r2c
982
+ type(C_PTR) function fftwf_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
983
+ bind(C, name='fftwf_plan_guru_dft_c2r')
985
+ integer(C_INT), value :: rank
986
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
987
+ integer(C_INT), value :: howmany_rank
988
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
989
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
990
+ real(C_FLOAT), dimension(*), intent(out) :: out
991
+ integer(C_INT), value :: flags
992
+ end function fftwf_plan_guru_dft_c2r
994
+ type(C_PTR) function fftwf_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
995
+ bind(C, name='fftwf_plan_guru_split_dft_r2c')
997
+ integer(C_INT), value :: rank
998
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
999
+ integer(C_INT), value :: howmany_rank
1000
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
1001
+ real(C_FLOAT), dimension(*), intent(out) :: in
1002
+ real(C_FLOAT), dimension(*), intent(out) :: ro
1003
+ real(C_FLOAT), dimension(*), intent(out) :: io
1004
+ integer(C_INT), value :: flags
1005
+ end function fftwf_plan_guru_split_dft_r2c
1007
+ type(C_PTR) function fftwf_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
1008
+ bind(C, name='fftwf_plan_guru_split_dft_c2r')
1010
+ integer(C_INT), value :: rank
1011
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
1012
+ integer(C_INT), value :: howmany_rank
1013
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
1014
+ real(C_FLOAT), dimension(*), intent(out) :: ri
1015
+ real(C_FLOAT), dimension(*), intent(out) :: ii
1016
+ real(C_FLOAT), dimension(*), intent(out) :: out
1017
+ integer(C_INT), value :: flags
1018
+ end function fftwf_plan_guru_split_dft_c2r
1020
+ type(C_PTR) function fftwf_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
1021
+ bind(C, name='fftwf_plan_guru64_dft_r2c')
1023
+ integer(C_INT), value :: rank
1024
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
1025
+ integer(C_INT), value :: howmany_rank
1026
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
1027
+ real(C_FLOAT), dimension(*), intent(out) :: in
1028
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
1029
+ integer(C_INT), value :: flags
1030
+ end function fftwf_plan_guru64_dft_r2c
1032
+ type(C_PTR) function fftwf_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
1033
+ bind(C, name='fftwf_plan_guru64_dft_c2r')
1035
+ integer(C_INT), value :: rank
1036
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
1037
+ integer(C_INT), value :: howmany_rank
1038
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
1039
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
1040
+ real(C_FLOAT), dimension(*), intent(out) :: out
1041
+ integer(C_INT), value :: flags
1042
+ end function fftwf_plan_guru64_dft_c2r
1044
+ type(C_PTR) function fftwf_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
1045
+ bind(C, name='fftwf_plan_guru64_split_dft_r2c')
1047
+ integer(C_INT), value :: rank
1048
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
1049
+ integer(C_INT), value :: howmany_rank
1050
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
1051
+ real(C_FLOAT), dimension(*), intent(out) :: in
1052
+ real(C_FLOAT), dimension(*), intent(out) :: ro
1053
+ real(C_FLOAT), dimension(*), intent(out) :: io
1054
+ integer(C_INT), value :: flags
1055
+ end function fftwf_plan_guru64_split_dft_r2c
1057
+ type(C_PTR) function fftwf_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
1058
+ bind(C, name='fftwf_plan_guru64_split_dft_c2r')
1060
+ integer(C_INT), value :: rank
1061
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
1062
+ integer(C_INT), value :: howmany_rank
1063
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
1064
+ real(C_FLOAT), dimension(*), intent(out) :: ri
1065
+ real(C_FLOAT), dimension(*), intent(out) :: ii
1066
+ real(C_FLOAT), dimension(*), intent(out) :: out
1067
+ integer(C_INT), value :: flags
1068
+ end function fftwf_plan_guru64_split_dft_c2r
1070
+ subroutine fftwf_execute_dft_r2c(p,in,out) bind(C, name='fftwf_execute_dft_r2c')
1072
+ type(C_PTR), value :: p
1073
+ real(C_FLOAT), dimension(*), intent(inout) :: in
1074
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
1075
+ end subroutine fftwf_execute_dft_r2c
1077
+ subroutine fftwf_execute_dft_c2r(p,in,out) bind(C, name='fftwf_execute_dft_c2r')
1079
+ type(C_PTR), value :: p
1080
+ complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
1081
+ real(C_FLOAT), dimension(*), intent(out) :: out
1082
+ end subroutine fftwf_execute_dft_c2r
1084
+ subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwf_execute_split_dft_r2c')
1086
+ type(C_PTR), value :: p
1087
+ real(C_FLOAT), dimension(*), intent(inout) :: in
1088
+ real(C_FLOAT), dimension(*), intent(out) :: ro
1089
+ real(C_FLOAT), dimension(*), intent(out) :: io
1090
+ end subroutine fftwf_execute_split_dft_r2c
1092
+ subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwf_execute_split_dft_c2r')
1094
+ type(C_PTR), value :: p
1095
+ real(C_FLOAT), dimension(*), intent(inout) :: ri
1096
+ real(C_FLOAT), dimension(*), intent(inout) :: ii
1097
+ real(C_FLOAT), dimension(*), intent(out) :: out
1098
+ end subroutine fftwf_execute_split_dft_c2r
1100
+ type(C_PTR) function fftwf_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
1101
+ bind(C, name='fftwf_plan_many_r2r')
1103
+ integer(C_INT), value :: rank
1104
+ integer(C_INT), dimension(*), intent(in) :: n
1105
+ integer(C_INT), value :: howmany
1106
+ real(C_FLOAT), dimension(*), intent(out) :: in
1107
+ integer(C_INT), dimension(*), intent(in) :: inembed
1108
+ integer(C_INT), value :: istride
1109
+ integer(C_INT), value :: idist
1110
+ real(C_FLOAT), dimension(*), intent(out) :: out
1111
+ integer(C_INT), dimension(*), intent(in) :: onembed
1112
+ integer(C_INT), value :: ostride
1113
+ integer(C_INT), value :: odist
1114
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1115
+ integer(C_INT), value :: flags
1116
+ end function fftwf_plan_many_r2r
1118
+ type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r')
1120
+ integer(C_INT), value :: rank
1121
+ integer(C_INT), dimension(*), intent(in) :: n
1122
+ real(C_FLOAT), dimension(*), intent(out) :: in
1123
+ real(C_FLOAT), dimension(*), intent(out) :: out
1124
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1125
+ integer(C_INT), value :: flags
1126
+ end function fftwf_plan_r2r
1128
+ type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r_1d')
1130
+ integer(C_INT), value :: n
1131
+ real(C_FLOAT), dimension(*), intent(out) :: in
1132
+ real(C_FLOAT), dimension(*), intent(out) :: out
1133
+ integer(C_FFTW_R2R_KIND), value :: kind
1134
+ integer(C_INT), value :: flags
1135
+ end function fftwf_plan_r2r_1d
1137
+ type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwf_plan_r2r_2d')
1139
+ integer(C_INT), value :: n0
1140
+ integer(C_INT), value :: n1
1141
+ real(C_FLOAT), dimension(*), intent(out) :: in
1142
+ real(C_FLOAT), dimension(*), intent(out) :: out
1143
+ integer(C_FFTW_R2R_KIND), value :: kind0
1144
+ integer(C_FFTW_R2R_KIND), value :: kind1
1145
+ integer(C_INT), value :: flags
1146
+ end function fftwf_plan_r2r_2d
1148
+ type(C_PTR) function fftwf_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwf_plan_r2r_3d')
1150
+ integer(C_INT), value :: n0
1151
+ integer(C_INT), value :: n1
1152
+ integer(C_INT), value :: n2
1153
+ real(C_FLOAT), dimension(*), intent(out) :: in
1154
+ real(C_FLOAT), dimension(*), intent(out) :: out
1155
+ integer(C_FFTW_R2R_KIND), value :: kind0
1156
+ integer(C_FFTW_R2R_KIND), value :: kind1
1157
+ integer(C_FFTW_R2R_KIND), value :: kind2
1158
+ integer(C_INT), value :: flags
1159
+ end function fftwf_plan_r2r_3d
1161
+ type(C_PTR) function fftwf_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
1162
+ bind(C, name='fftwf_plan_guru_r2r')
1164
+ integer(C_INT), value :: rank
1165
+ type(fftwf_iodim), dimension(*), intent(in) :: dims
1166
+ integer(C_INT), value :: howmany_rank
1167
+ type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
1168
+ real(C_FLOAT), dimension(*), intent(out) :: in
1169
+ real(C_FLOAT), dimension(*), intent(out) :: out
1170
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1171
+ integer(C_INT), value :: flags
1172
+ end function fftwf_plan_guru_r2r
1174
+ type(C_PTR) function fftwf_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
1175
+ bind(C, name='fftwf_plan_guru64_r2r')
1177
+ integer(C_INT), value :: rank
1178
+ type(fftwf_iodim64), dimension(*), intent(in) :: dims
1179
+ integer(C_INT), value :: howmany_rank
1180
+ type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
1181
+ real(C_FLOAT), dimension(*), intent(out) :: in
1182
+ real(C_FLOAT), dimension(*), intent(out) :: out
1183
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1184
+ integer(C_INT), value :: flags
1185
+ end function fftwf_plan_guru64_r2r
1187
+ subroutine fftwf_execute_r2r(p,in,out) bind(C, name='fftwf_execute_r2r')
1189
+ type(C_PTR), value :: p
1190
+ real(C_FLOAT), dimension(*), intent(inout) :: in
1191
+ real(C_FLOAT), dimension(*), intent(out) :: out
1192
+ end subroutine fftwf_execute_r2r
1194
+ subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan')
1196
+ type(C_PTR), value :: p
1197
+ end subroutine fftwf_destroy_plan
1199
+ subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom')
1201
+ end subroutine fftwf_forget_wisdom
1203
+ subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup')
1205
+ end subroutine fftwf_cleanup
1207
+ subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit')
1209
+ real(C_DOUBLE), value :: t
1210
+ end subroutine fftwf_set_timelimit
1212
+ subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads')
1214
+ integer(C_INT), value :: nthreads
1215
+ end subroutine fftwf_plan_with_nthreads
1217
+ integer(C_INT) function fftwf_init_threads() bind(C, name='fftwf_init_threads')
1219
+ end function fftwf_init_threads
1221
+ subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads')
1223
+ end subroutine fftwf_cleanup_threads
1225
+ subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe')
1227
+ end subroutine fftwf_make_planner_thread_safe
1229
+ integer(C_INT) function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename')
1231
+ character(C_CHAR), dimension(*), intent(in) :: filename
1232
+ end function fftwf_export_wisdom_to_filename
1234
+ subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file')
1236
+ type(C_PTR), value :: output_file
1237
+ end subroutine fftwf_export_wisdom_to_file
1239
+ type(C_PTR) function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string')
1241
+ end function fftwf_export_wisdom_to_string
1243
+ subroutine fftwf_export_wisdom(write_char,data) bind(C, name='fftwf_export_wisdom')
1245
+ type(C_FUNPTR), value :: write_char
1246
+ type(C_PTR), value :: data
1247
+ end subroutine fftwf_export_wisdom
1249
+ integer(C_INT) function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom')
1251
+ end function fftwf_import_system_wisdom
1253
+ integer(C_INT) function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename')
1255
+ character(C_CHAR), dimension(*), intent(in) :: filename
1256
+ end function fftwf_import_wisdom_from_filename
1258
+ integer(C_INT) function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file')
1260
+ type(C_PTR), value :: input_file
1261
+ end function fftwf_import_wisdom_from_file
1263
+ integer(C_INT) function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string')
1265
+ character(C_CHAR), dimension(*), intent(in) :: input_string
1266
+ end function fftwf_import_wisdom_from_string
1268
+ integer(C_INT) function fftwf_import_wisdom(read_char,data) bind(C, name='fftwf_import_wisdom')
1270
+ type(C_FUNPTR), value :: read_char
1271
+ type(C_PTR), value :: data
1272
+ end function fftwf_import_wisdom
1274
+ subroutine fftwf_fprint_plan(p,output_file) bind(C, name='fftwf_fprint_plan')
1276
+ type(C_PTR), value :: p
1277
+ type(C_PTR), value :: output_file
1278
+ end subroutine fftwf_fprint_plan
1280
+ subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan')
1282
+ type(C_PTR), value :: p
1283
+ end subroutine fftwf_print_plan
1285
+ type(C_PTR) function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan')
1287
+ type(C_PTR), value :: p
1288
+ end function fftwf_sprint_plan
1290
+ type(C_PTR) function fftwf_malloc(n) bind(C, name='fftwf_malloc')
1292
+ integer(C_SIZE_T), value :: n
1293
+ end function fftwf_malloc
1295
+ type(C_PTR) function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real')
1297
+ integer(C_SIZE_T), value :: n
1298
+ end function fftwf_alloc_real
1300
+ type(C_PTR) function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex')
1302
+ integer(C_SIZE_T), value :: n
1303
+ end function fftwf_alloc_complex
1305
+ subroutine fftwf_free(p) bind(C, name='fftwf_free')
1307
+ type(C_PTR), value :: p
1308
+ end subroutine fftwf_free
1310
+ subroutine fftwf_flops(p,add,mul,fmas) bind(C, name='fftwf_flops')
1312
+ type(C_PTR), value :: p
1313
+ real(C_DOUBLE), intent(out) :: add
1314
+ real(C_DOUBLE), intent(out) :: mul
1315
+ real(C_DOUBLE), intent(out) :: fmas
1316
+ end subroutine fftwf_flops
1318
+ real(C_DOUBLE) function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost')
1320
+ type(C_PTR), value :: p
1321
+ end function fftwf_estimate_cost
1323
+ real(C_DOUBLE) function fftwf_cost(p) bind(C, name='fftwf_cost')
1325
+ type(C_PTR), value :: p
1326
+ end function fftwf_cost
1328
+ integer(C_INT) function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of')
1330
+ real(C_FLOAT), dimension(*), intent(out) :: p
1331
+ end function fftwf_alignment_of
1335
=== added file 'api/fftw3l.f03'
1336
--- old/api/fftw3l.f03 1970-01-01 00:00:00 +0000
1337
+++ new/api/fftw3l.f03 2016-01-09 21:05:34 +0000
1339
+! Generated automatically. DO NOT EDIT!
1342
+ type, bind(C) :: fftwl_iodim
1343
+ integer(C_INT) n, is, os
1344
+ end type fftwl_iodim
1345
+ type, bind(C) :: fftwl_iodim64
1346
+ integer(C_INTPTR_T) n, is, os
1347
+ end type fftwl_iodim64
1350
+ type(C_PTR) function fftwl_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwl_plan_dft')
1352
+ integer(C_INT), value :: rank
1353
+ integer(C_INT), dimension(*), intent(in) :: n
1354
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1355
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1356
+ integer(C_INT), value :: sign
1357
+ integer(C_INT), value :: flags
1358
+ end function fftwl_plan_dft
1360
+ type(C_PTR) function fftwl_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwl_plan_dft_1d')
1362
+ integer(C_INT), value :: n
1363
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1364
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1365
+ integer(C_INT), value :: sign
1366
+ integer(C_INT), value :: flags
1367
+ end function fftwl_plan_dft_1d
1369
+ type(C_PTR) function fftwl_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwl_plan_dft_2d')
1371
+ integer(C_INT), value :: n0
1372
+ integer(C_INT), value :: n1
1373
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1374
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1375
+ integer(C_INT), value :: sign
1376
+ integer(C_INT), value :: flags
1377
+ end function fftwl_plan_dft_2d
1379
+ type(C_PTR) function fftwl_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwl_plan_dft_3d')
1381
+ integer(C_INT), value :: n0
1382
+ integer(C_INT), value :: n1
1383
+ integer(C_INT), value :: n2
1384
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1385
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1386
+ integer(C_INT), value :: sign
1387
+ integer(C_INT), value :: flags
1388
+ end function fftwl_plan_dft_3d
1390
+ type(C_PTR) function fftwl_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
1391
+ bind(C, name='fftwl_plan_many_dft')
1393
+ integer(C_INT), value :: rank
1394
+ integer(C_INT), dimension(*), intent(in) :: n
1395
+ integer(C_INT), value :: howmany
1396
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1397
+ integer(C_INT), dimension(*), intent(in) :: inembed
1398
+ integer(C_INT), value :: istride
1399
+ integer(C_INT), value :: idist
1400
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1401
+ integer(C_INT), dimension(*), intent(in) :: onembed
1402
+ integer(C_INT), value :: ostride
1403
+ integer(C_INT), value :: odist
1404
+ integer(C_INT), value :: sign
1405
+ integer(C_INT), value :: flags
1406
+ end function fftwl_plan_many_dft
1408
+ type(C_PTR) function fftwl_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
1409
+ bind(C, name='fftwl_plan_guru_dft')
1411
+ integer(C_INT), value :: rank
1412
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1413
+ integer(C_INT), value :: howmany_rank
1414
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1415
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1416
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1417
+ integer(C_INT), value :: sign
1418
+ integer(C_INT), value :: flags
1419
+ end function fftwl_plan_guru_dft
1421
+ type(C_PTR) function fftwl_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
1422
+ bind(C, name='fftwl_plan_guru_split_dft')
1424
+ integer(C_INT), value :: rank
1425
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1426
+ integer(C_INT), value :: howmany_rank
1427
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1428
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri
1429
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii
1430
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro
1431
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: io
1432
+ integer(C_INT), value :: flags
1433
+ end function fftwl_plan_guru_split_dft
1435
+ type(C_PTR) function fftwl_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
1436
+ bind(C, name='fftwl_plan_guru64_dft')
1438
+ integer(C_INT), value :: rank
1439
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1440
+ integer(C_INT), value :: howmany_rank
1441
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1442
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1443
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1444
+ integer(C_INT), value :: sign
1445
+ integer(C_INT), value :: flags
1446
+ end function fftwl_plan_guru64_dft
1448
+ type(C_PTR) function fftwl_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
1449
+ bind(C, name='fftwl_plan_guru64_split_dft')
1451
+ integer(C_INT), value :: rank
1452
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1453
+ integer(C_INT), value :: howmany_rank
1454
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1455
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri
1456
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii
1457
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro
1458
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: io
1459
+ integer(C_INT), value :: flags
1460
+ end function fftwl_plan_guru64_split_dft
1462
+ subroutine fftwl_execute_dft(p,in,out) bind(C, name='fftwl_execute_dft')
1464
+ type(C_PTR), value :: p
1465
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
1466
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1467
+ end subroutine fftwl_execute_dft
1469
+ subroutine fftwl_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwl_execute_split_dft')
1471
+ type(C_PTR), value :: p
1472
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ri
1473
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ii
1474
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro
1475
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: io
1476
+ end subroutine fftwl_execute_split_dft
1478
+ type(C_PTR) function fftwl_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
1479
+ bind(C, name='fftwl_plan_many_dft_r2c')
1481
+ integer(C_INT), value :: rank
1482
+ integer(C_INT), dimension(*), intent(in) :: n
1483
+ integer(C_INT), value :: howmany
1484
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1485
+ integer(C_INT), dimension(*), intent(in) :: inembed
1486
+ integer(C_INT), value :: istride
1487
+ integer(C_INT), value :: idist
1488
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1489
+ integer(C_INT), dimension(*), intent(in) :: onembed
1490
+ integer(C_INT), value :: ostride
1491
+ integer(C_INT), value :: odist
1492
+ integer(C_INT), value :: flags
1493
+ end function fftwl_plan_many_dft_r2c
1495
+ type(C_PTR) function fftwl_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwl_plan_dft_r2c')
1497
+ integer(C_INT), value :: rank
1498
+ integer(C_INT), dimension(*), intent(in) :: n
1499
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1500
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1501
+ integer(C_INT), value :: flags
1502
+ end function fftwl_plan_dft_r2c
1504
+ type(C_PTR) function fftwl_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_1d')
1506
+ integer(C_INT), value :: n
1507
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1508
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1509
+ integer(C_INT), value :: flags
1510
+ end function fftwl_plan_dft_r2c_1d
1512
+ type(C_PTR) function fftwl_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_2d')
1514
+ integer(C_INT), value :: n0
1515
+ integer(C_INT), value :: n1
1516
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1517
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1518
+ integer(C_INT), value :: flags
1519
+ end function fftwl_plan_dft_r2c_2d
1521
+ type(C_PTR) function fftwl_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_3d')
1523
+ integer(C_INT), value :: n0
1524
+ integer(C_INT), value :: n1
1525
+ integer(C_INT), value :: n2
1526
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1527
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1528
+ integer(C_INT), value :: flags
1529
+ end function fftwl_plan_dft_r2c_3d
1531
+ type(C_PTR) function fftwl_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
1532
+ bind(C, name='fftwl_plan_many_dft_c2r')
1534
+ integer(C_INT), value :: rank
1535
+ integer(C_INT), dimension(*), intent(in) :: n
1536
+ integer(C_INT), value :: howmany
1537
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1538
+ integer(C_INT), dimension(*), intent(in) :: inembed
1539
+ integer(C_INT), value :: istride
1540
+ integer(C_INT), value :: idist
1541
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1542
+ integer(C_INT), dimension(*), intent(in) :: onembed
1543
+ integer(C_INT), value :: ostride
1544
+ integer(C_INT), value :: odist
1545
+ integer(C_INT), value :: flags
1546
+ end function fftwl_plan_many_dft_c2r
1548
+ type(C_PTR) function fftwl_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwl_plan_dft_c2r')
1550
+ integer(C_INT), value :: rank
1551
+ integer(C_INT), dimension(*), intent(in) :: n
1552
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1553
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1554
+ integer(C_INT), value :: flags
1555
+ end function fftwl_plan_dft_c2r
1557
+ type(C_PTR) function fftwl_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_1d')
1559
+ integer(C_INT), value :: n
1560
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1561
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1562
+ integer(C_INT), value :: flags
1563
+ end function fftwl_plan_dft_c2r_1d
1565
+ type(C_PTR) function fftwl_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_2d')
1567
+ integer(C_INT), value :: n0
1568
+ integer(C_INT), value :: n1
1569
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1570
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1571
+ integer(C_INT), value :: flags
1572
+ end function fftwl_plan_dft_c2r_2d
1574
+ type(C_PTR) function fftwl_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_3d')
1576
+ integer(C_INT), value :: n0
1577
+ integer(C_INT), value :: n1
1578
+ integer(C_INT), value :: n2
1579
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1580
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1581
+ integer(C_INT), value :: flags
1582
+ end function fftwl_plan_dft_c2r_3d
1584
+ type(C_PTR) function fftwl_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
1585
+ bind(C, name='fftwl_plan_guru_dft_r2c')
1587
+ integer(C_INT), value :: rank
1588
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1589
+ integer(C_INT), value :: howmany_rank
1590
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1591
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1592
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1593
+ integer(C_INT), value :: flags
1594
+ end function fftwl_plan_guru_dft_r2c
1596
+ type(C_PTR) function fftwl_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
1597
+ bind(C, name='fftwl_plan_guru_dft_c2r')
1599
+ integer(C_INT), value :: rank
1600
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1601
+ integer(C_INT), value :: howmany_rank
1602
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1603
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1604
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1605
+ integer(C_INT), value :: flags
1606
+ end function fftwl_plan_guru_dft_c2r
1608
+ type(C_PTR) function fftwl_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
1609
+ bind(C, name='fftwl_plan_guru_split_dft_r2c')
1611
+ integer(C_INT), value :: rank
1612
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1613
+ integer(C_INT), value :: howmany_rank
1614
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1615
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1616
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro
1617
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: io
1618
+ integer(C_INT), value :: flags
1619
+ end function fftwl_plan_guru_split_dft_r2c
1621
+ type(C_PTR) function fftwl_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
1622
+ bind(C, name='fftwl_plan_guru_split_dft_c2r')
1624
+ integer(C_INT), value :: rank
1625
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1626
+ integer(C_INT), value :: howmany_rank
1627
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1628
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri
1629
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii
1630
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1631
+ integer(C_INT), value :: flags
1632
+ end function fftwl_plan_guru_split_dft_c2r
1634
+ type(C_PTR) function fftwl_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
1635
+ bind(C, name='fftwl_plan_guru64_dft_r2c')
1637
+ integer(C_INT), value :: rank
1638
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1639
+ integer(C_INT), value :: howmany_rank
1640
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1641
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1642
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1643
+ integer(C_INT), value :: flags
1644
+ end function fftwl_plan_guru64_dft_r2c
1646
+ type(C_PTR) function fftwl_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
1647
+ bind(C, name='fftwl_plan_guru64_dft_c2r')
1649
+ integer(C_INT), value :: rank
1650
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1651
+ integer(C_INT), value :: howmany_rank
1652
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1653
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
1654
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1655
+ integer(C_INT), value :: flags
1656
+ end function fftwl_plan_guru64_dft_c2r
1658
+ type(C_PTR) function fftwl_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
1659
+ bind(C, name='fftwl_plan_guru64_split_dft_r2c')
1661
+ integer(C_INT), value :: rank
1662
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1663
+ integer(C_INT), value :: howmany_rank
1664
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1665
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1666
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro
1667
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: io
1668
+ integer(C_INT), value :: flags
1669
+ end function fftwl_plan_guru64_split_dft_r2c
1671
+ type(C_PTR) function fftwl_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
1672
+ bind(C, name='fftwl_plan_guru64_split_dft_c2r')
1674
+ integer(C_INT), value :: rank
1675
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1676
+ integer(C_INT), value :: howmany_rank
1677
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1678
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ri
1679
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ii
1680
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1681
+ integer(C_INT), value :: flags
1682
+ end function fftwl_plan_guru64_split_dft_c2r
1684
+ subroutine fftwl_execute_dft_r2c(p,in,out) bind(C, name='fftwl_execute_dft_r2c')
1686
+ type(C_PTR), value :: p
1687
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: in
1688
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
1689
+ end subroutine fftwl_execute_dft_r2c
1691
+ subroutine fftwl_execute_dft_c2r(p,in,out) bind(C, name='fftwl_execute_dft_c2r')
1693
+ type(C_PTR), value :: p
1694
+ complex(C_LONG_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
1695
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1696
+ end subroutine fftwl_execute_dft_c2r
1698
+ subroutine fftwl_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwl_execute_split_dft_r2c')
1700
+ type(C_PTR), value :: p
1701
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: in
1702
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: ro
1703
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: io
1704
+ end subroutine fftwl_execute_split_dft_r2c
1706
+ subroutine fftwl_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwl_execute_split_dft_c2r')
1708
+ type(C_PTR), value :: p
1709
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ri
1710
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: ii
1711
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1712
+ end subroutine fftwl_execute_split_dft_c2r
1714
+ type(C_PTR) function fftwl_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
1715
+ bind(C, name='fftwl_plan_many_r2r')
1717
+ integer(C_INT), value :: rank
1718
+ integer(C_INT), dimension(*), intent(in) :: n
1719
+ integer(C_INT), value :: howmany
1720
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1721
+ integer(C_INT), dimension(*), intent(in) :: inembed
1722
+ integer(C_INT), value :: istride
1723
+ integer(C_INT), value :: idist
1724
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1725
+ integer(C_INT), dimension(*), intent(in) :: onembed
1726
+ integer(C_INT), value :: ostride
1727
+ integer(C_INT), value :: odist
1728
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1729
+ integer(C_INT), value :: flags
1730
+ end function fftwl_plan_many_r2r
1732
+ type(C_PTR) function fftwl_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwl_plan_r2r')
1734
+ integer(C_INT), value :: rank
1735
+ integer(C_INT), dimension(*), intent(in) :: n
1736
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1737
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1738
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1739
+ integer(C_INT), value :: flags
1740
+ end function fftwl_plan_r2r
1742
+ type(C_PTR) function fftwl_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwl_plan_r2r_1d')
1744
+ integer(C_INT), value :: n
1745
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1746
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1747
+ integer(C_FFTW_R2R_KIND), value :: kind
1748
+ integer(C_INT), value :: flags
1749
+ end function fftwl_plan_r2r_1d
1751
+ type(C_PTR) function fftwl_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwl_plan_r2r_2d')
1753
+ integer(C_INT), value :: n0
1754
+ integer(C_INT), value :: n1
1755
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1756
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1757
+ integer(C_FFTW_R2R_KIND), value :: kind0
1758
+ integer(C_FFTW_R2R_KIND), value :: kind1
1759
+ integer(C_INT), value :: flags
1760
+ end function fftwl_plan_r2r_2d
1762
+ type(C_PTR) function fftwl_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwl_plan_r2r_3d')
1764
+ integer(C_INT), value :: n0
1765
+ integer(C_INT), value :: n1
1766
+ integer(C_INT), value :: n2
1767
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1768
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1769
+ integer(C_FFTW_R2R_KIND), value :: kind0
1770
+ integer(C_FFTW_R2R_KIND), value :: kind1
1771
+ integer(C_FFTW_R2R_KIND), value :: kind2
1772
+ integer(C_INT), value :: flags
1773
+ end function fftwl_plan_r2r_3d
1775
+ type(C_PTR) function fftwl_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
1776
+ bind(C, name='fftwl_plan_guru_r2r')
1778
+ integer(C_INT), value :: rank
1779
+ type(fftwl_iodim), dimension(*), intent(in) :: dims
1780
+ integer(C_INT), value :: howmany_rank
1781
+ type(fftwl_iodim), dimension(*), intent(in) :: howmany_dims
1782
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1783
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1784
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1785
+ integer(C_INT), value :: flags
1786
+ end function fftwl_plan_guru_r2r
1788
+ type(C_PTR) function fftwl_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
1789
+ bind(C, name='fftwl_plan_guru64_r2r')
1791
+ integer(C_INT), value :: rank
1792
+ type(fftwl_iodim64), dimension(*), intent(in) :: dims
1793
+ integer(C_INT), value :: howmany_rank
1794
+ type(fftwl_iodim64), dimension(*), intent(in) :: howmany_dims
1795
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: in
1796
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1797
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
1798
+ integer(C_INT), value :: flags
1799
+ end function fftwl_plan_guru64_r2r
1801
+ subroutine fftwl_execute_r2r(p,in,out) bind(C, name='fftwl_execute_r2r')
1803
+ type(C_PTR), value :: p
1804
+ real(C_LONG_DOUBLE), dimension(*), intent(inout) :: in
1805
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: out
1806
+ end subroutine fftwl_execute_r2r
1808
+ subroutine fftwl_destroy_plan(p) bind(C, name='fftwl_destroy_plan')
1810
+ type(C_PTR), value :: p
1811
+ end subroutine fftwl_destroy_plan
1813
+ subroutine fftwl_forget_wisdom() bind(C, name='fftwl_forget_wisdom')
1815
+ end subroutine fftwl_forget_wisdom
1817
+ subroutine fftwl_cleanup() bind(C, name='fftwl_cleanup')
1819
+ end subroutine fftwl_cleanup
1821
+ subroutine fftwl_set_timelimit(t) bind(C, name='fftwl_set_timelimit')
1823
+ real(C_DOUBLE), value :: t
1824
+ end subroutine fftwl_set_timelimit
1826
+ subroutine fftwl_plan_with_nthreads(nthreads) bind(C, name='fftwl_plan_with_nthreads')
1828
+ integer(C_INT), value :: nthreads
1829
+ end subroutine fftwl_plan_with_nthreads
1831
+ integer(C_INT) function fftwl_init_threads() bind(C, name='fftwl_init_threads')
1833
+ end function fftwl_init_threads
1835
+ subroutine fftwl_cleanup_threads() bind(C, name='fftwl_cleanup_threads')
1837
+ end subroutine fftwl_cleanup_threads
1839
+ subroutine fftwl_make_planner_thread_safe() bind(C, name='fftwl_make_planner_thread_safe')
1841
+ end subroutine fftwl_make_planner_thread_safe
1843
+ integer(C_INT) function fftwl_export_wisdom_to_filename(filename) bind(C, name='fftwl_export_wisdom_to_filename')
1845
+ character(C_CHAR), dimension(*), intent(in) :: filename
1846
+ end function fftwl_export_wisdom_to_filename
1848
+ subroutine fftwl_export_wisdom_to_file(output_file) bind(C, name='fftwl_export_wisdom_to_file')
1850
+ type(C_PTR), value :: output_file
1851
+ end subroutine fftwl_export_wisdom_to_file
1853
+ type(C_PTR) function fftwl_export_wisdom_to_string() bind(C, name='fftwl_export_wisdom_to_string')
1855
+ end function fftwl_export_wisdom_to_string
1857
+ subroutine fftwl_export_wisdom(write_char,data) bind(C, name='fftwl_export_wisdom')
1859
+ type(C_FUNPTR), value :: write_char
1860
+ type(C_PTR), value :: data
1861
+ end subroutine fftwl_export_wisdom
1863
+ integer(C_INT) function fftwl_import_system_wisdom() bind(C, name='fftwl_import_system_wisdom')
1865
+ end function fftwl_import_system_wisdom
1867
+ integer(C_INT) function fftwl_import_wisdom_from_filename(filename) bind(C, name='fftwl_import_wisdom_from_filename')
1869
+ character(C_CHAR), dimension(*), intent(in) :: filename
1870
+ end function fftwl_import_wisdom_from_filename
1872
+ integer(C_INT) function fftwl_import_wisdom_from_file(input_file) bind(C, name='fftwl_import_wisdom_from_file')
1874
+ type(C_PTR), value :: input_file
1875
+ end function fftwl_import_wisdom_from_file
1877
+ integer(C_INT) function fftwl_import_wisdom_from_string(input_string) bind(C, name='fftwl_import_wisdom_from_string')
1879
+ character(C_CHAR), dimension(*), intent(in) :: input_string
1880
+ end function fftwl_import_wisdom_from_string
1882
+ integer(C_INT) function fftwl_import_wisdom(read_char,data) bind(C, name='fftwl_import_wisdom')
1884
+ type(C_FUNPTR), value :: read_char
1885
+ type(C_PTR), value :: data
1886
+ end function fftwl_import_wisdom
1888
+ subroutine fftwl_fprint_plan(p,output_file) bind(C, name='fftwl_fprint_plan')
1890
+ type(C_PTR), value :: p
1891
+ type(C_PTR), value :: output_file
1892
+ end subroutine fftwl_fprint_plan
1894
+ subroutine fftwl_print_plan(p) bind(C, name='fftwl_print_plan')
1896
+ type(C_PTR), value :: p
1897
+ end subroutine fftwl_print_plan
1899
+ type(C_PTR) function fftwl_sprint_plan(p) bind(C, name='fftwl_sprint_plan')
1901
+ type(C_PTR), value :: p
1902
+ end function fftwl_sprint_plan
1904
+ type(C_PTR) function fftwl_malloc(n) bind(C, name='fftwl_malloc')
1906
+ integer(C_SIZE_T), value :: n
1907
+ end function fftwl_malloc
1909
+ type(C_PTR) function fftwl_alloc_real(n) bind(C, name='fftwl_alloc_real')
1911
+ integer(C_SIZE_T), value :: n
1912
+ end function fftwl_alloc_real
1914
+ type(C_PTR) function fftwl_alloc_complex(n) bind(C, name='fftwl_alloc_complex')
1916
+ integer(C_SIZE_T), value :: n
1917
+ end function fftwl_alloc_complex
1919
+ subroutine fftwl_free(p) bind(C, name='fftwl_free')
1921
+ type(C_PTR), value :: p
1922
+ end subroutine fftwl_free
1924
+ subroutine fftwl_flops(p,add,mul,fmas) bind(C, name='fftwl_flops')
1926
+ type(C_PTR), value :: p
1927
+ real(C_DOUBLE), intent(out) :: add
1928
+ real(C_DOUBLE), intent(out) :: mul
1929
+ real(C_DOUBLE), intent(out) :: fmas
1930
+ end subroutine fftwl_flops
1932
+ real(C_DOUBLE) function fftwl_estimate_cost(p) bind(C, name='fftwl_estimate_cost')
1934
+ type(C_PTR), value :: p
1935
+ end function fftwl_estimate_cost
1937
+ real(C_DOUBLE) function fftwl_cost(p) bind(C, name='fftwl_cost')
1939
+ type(C_PTR), value :: p
1940
+ end function fftwl_cost
1942
+ integer(C_INT) function fftwl_alignment_of(p) bind(C, name='fftwl_alignment_of')
1944
+ real(C_LONG_DOUBLE), dimension(*), intent(out) :: p
1945
+ end function fftwl_alignment_of
1949
=== added file 'api/fftw3q.f03'
1950
--- old/api/fftw3q.f03 1970-01-01 00:00:00 +0000
1951
+++ new/api/fftw3q.f03 2016-01-09 21:05:34 +0000
1953
+! Generated automatically. DO NOT EDIT!
1956
+ type, bind(C) :: fftwq_iodim
1957
+ integer(C_INT) n, is, os
1958
+ end type fftwq_iodim
1959
+ type, bind(C) :: fftwq_iodim64
1960
+ integer(C_INTPTR_T) n, is, os
1961
+ end type fftwq_iodim64
1964
+ type(C_PTR) function fftwq_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwq_plan_dft')
1966
+ integer(C_INT), value :: rank
1967
+ integer(C_INT), dimension(*), intent(in) :: n
1968
+ complex(16), dimension(*), intent(out) :: in
1969
+ complex(16), dimension(*), intent(out) :: out
1970
+ integer(C_INT), value :: sign
1971
+ integer(C_INT), value :: flags
1972
+ end function fftwq_plan_dft
1974
+ type(C_PTR) function fftwq_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwq_plan_dft_1d')
1976
+ integer(C_INT), value :: n
1977
+ complex(16), dimension(*), intent(out) :: in
1978
+ complex(16), dimension(*), intent(out) :: out
1979
+ integer(C_INT), value :: sign
1980
+ integer(C_INT), value :: flags
1981
+ end function fftwq_plan_dft_1d
1983
+ type(C_PTR) function fftwq_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwq_plan_dft_2d')
1985
+ integer(C_INT), value :: n0
1986
+ integer(C_INT), value :: n1
1987
+ complex(16), dimension(*), intent(out) :: in
1988
+ complex(16), dimension(*), intent(out) :: out
1989
+ integer(C_INT), value :: sign
1990
+ integer(C_INT), value :: flags
1991
+ end function fftwq_plan_dft_2d
1993
+ type(C_PTR) function fftwq_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwq_plan_dft_3d')
1995
+ integer(C_INT), value :: n0
1996
+ integer(C_INT), value :: n1
1997
+ integer(C_INT), value :: n2
1998
+ complex(16), dimension(*), intent(out) :: in
1999
+ complex(16), dimension(*), intent(out) :: out
2000
+ integer(C_INT), value :: sign
2001
+ integer(C_INT), value :: flags
2002
+ end function fftwq_plan_dft_3d
2004
+ type(C_PTR) function fftwq_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
2005
+ bind(C, name='fftwq_plan_many_dft')
2007
+ integer(C_INT), value :: rank
2008
+ integer(C_INT), dimension(*), intent(in) :: n
2009
+ integer(C_INT), value :: howmany
2010
+ complex(16), dimension(*), intent(out) :: in
2011
+ integer(C_INT), dimension(*), intent(in) :: inembed
2012
+ integer(C_INT), value :: istride
2013
+ integer(C_INT), value :: idist
2014
+ complex(16), dimension(*), intent(out) :: out
2015
+ integer(C_INT), dimension(*), intent(in) :: onembed
2016
+ integer(C_INT), value :: ostride
2017
+ integer(C_INT), value :: odist
2018
+ integer(C_INT), value :: sign
2019
+ integer(C_INT), value :: flags
2020
+ end function fftwq_plan_many_dft
2022
+ type(C_PTR) function fftwq_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
2023
+ bind(C, name='fftwq_plan_guru_dft')
2025
+ integer(C_INT), value :: rank
2026
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2027
+ integer(C_INT), value :: howmany_rank
2028
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2029
+ complex(16), dimension(*), intent(out) :: in
2030
+ complex(16), dimension(*), intent(out) :: out
2031
+ integer(C_INT), value :: sign
2032
+ integer(C_INT), value :: flags
2033
+ end function fftwq_plan_guru_dft
2035
+ type(C_PTR) function fftwq_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
2036
+ bind(C, name='fftwq_plan_guru_split_dft')
2038
+ integer(C_INT), value :: rank
2039
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2040
+ integer(C_INT), value :: howmany_rank
2041
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2042
+ real(16), dimension(*), intent(out) :: ri
2043
+ real(16), dimension(*), intent(out) :: ii
2044
+ real(16), dimension(*), intent(out) :: ro
2045
+ real(16), dimension(*), intent(out) :: io
2046
+ integer(C_INT), value :: flags
2047
+ end function fftwq_plan_guru_split_dft
2049
+ type(C_PTR) function fftwq_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
2050
+ bind(C, name='fftwq_plan_guru64_dft')
2052
+ integer(C_INT), value :: rank
2053
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2054
+ integer(C_INT), value :: howmany_rank
2055
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2056
+ complex(16), dimension(*), intent(out) :: in
2057
+ complex(16), dimension(*), intent(out) :: out
2058
+ integer(C_INT), value :: sign
2059
+ integer(C_INT), value :: flags
2060
+ end function fftwq_plan_guru64_dft
2062
+ type(C_PTR) function fftwq_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
2063
+ bind(C, name='fftwq_plan_guru64_split_dft')
2065
+ integer(C_INT), value :: rank
2066
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2067
+ integer(C_INT), value :: howmany_rank
2068
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2069
+ real(16), dimension(*), intent(out) :: ri
2070
+ real(16), dimension(*), intent(out) :: ii
2071
+ real(16), dimension(*), intent(out) :: ro
2072
+ real(16), dimension(*), intent(out) :: io
2073
+ integer(C_INT), value :: flags
2074
+ end function fftwq_plan_guru64_split_dft
2076
+ subroutine fftwq_execute_dft(p,in,out) bind(C, name='fftwq_execute_dft')
2078
+ type(C_PTR), value :: p
2079
+ complex(16), dimension(*), intent(inout) :: in
2080
+ complex(16), dimension(*), intent(out) :: out
2081
+ end subroutine fftwq_execute_dft
2083
+ subroutine fftwq_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwq_execute_split_dft')
2085
+ type(C_PTR), value :: p
2086
+ real(16), dimension(*), intent(inout) :: ri
2087
+ real(16), dimension(*), intent(inout) :: ii
2088
+ real(16), dimension(*), intent(out) :: ro
2089
+ real(16), dimension(*), intent(out) :: io
2090
+ end subroutine fftwq_execute_split_dft
2092
+ type(C_PTR) function fftwq_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
2093
+ bind(C, name='fftwq_plan_many_dft_r2c')
2095
+ integer(C_INT), value :: rank
2096
+ integer(C_INT), dimension(*), intent(in) :: n
2097
+ integer(C_INT), value :: howmany
2098
+ real(16), dimension(*), intent(out) :: in
2099
+ integer(C_INT), dimension(*), intent(in) :: inembed
2100
+ integer(C_INT), value :: istride
2101
+ integer(C_INT), value :: idist
2102
+ complex(16), dimension(*), intent(out) :: out
2103
+ integer(C_INT), dimension(*), intent(in) :: onembed
2104
+ integer(C_INT), value :: ostride
2105
+ integer(C_INT), value :: odist
2106
+ integer(C_INT), value :: flags
2107
+ end function fftwq_plan_many_dft_r2c
2109
+ type(C_PTR) function fftwq_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c')
2111
+ integer(C_INT), value :: rank
2112
+ integer(C_INT), dimension(*), intent(in) :: n
2113
+ real(16), dimension(*), intent(out) :: in
2114
+ complex(16), dimension(*), intent(out) :: out
2115
+ integer(C_INT), value :: flags
2116
+ end function fftwq_plan_dft_r2c
2118
+ type(C_PTR) function fftwq_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_1d')
2120
+ integer(C_INT), value :: n
2121
+ real(16), dimension(*), intent(out) :: in
2122
+ complex(16), dimension(*), intent(out) :: out
2123
+ integer(C_INT), value :: flags
2124
+ end function fftwq_plan_dft_r2c_1d
2126
+ type(C_PTR) function fftwq_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_2d')
2128
+ integer(C_INT), value :: n0
2129
+ integer(C_INT), value :: n1
2130
+ real(16), dimension(*), intent(out) :: in
2131
+ complex(16), dimension(*), intent(out) :: out
2132
+ integer(C_INT), value :: flags
2133
+ end function fftwq_plan_dft_r2c_2d
2135
+ type(C_PTR) function fftwq_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_3d')
2137
+ integer(C_INT), value :: n0
2138
+ integer(C_INT), value :: n1
2139
+ integer(C_INT), value :: n2
2140
+ real(16), dimension(*), intent(out) :: in
2141
+ complex(16), dimension(*), intent(out) :: out
2142
+ integer(C_INT), value :: flags
2143
+ end function fftwq_plan_dft_r2c_3d
2145
+ type(C_PTR) function fftwq_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
2146
+ bind(C, name='fftwq_plan_many_dft_c2r')
2148
+ integer(C_INT), value :: rank
2149
+ integer(C_INT), dimension(*), intent(in) :: n
2150
+ integer(C_INT), value :: howmany
2151
+ complex(16), dimension(*), intent(out) :: in
2152
+ integer(C_INT), dimension(*), intent(in) :: inembed
2153
+ integer(C_INT), value :: istride
2154
+ integer(C_INT), value :: idist
2155
+ real(16), dimension(*), intent(out) :: out
2156
+ integer(C_INT), dimension(*), intent(in) :: onembed
2157
+ integer(C_INT), value :: ostride
2158
+ integer(C_INT), value :: odist
2159
+ integer(C_INT), value :: flags
2160
+ end function fftwq_plan_many_dft_c2r
2162
+ type(C_PTR) function fftwq_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r')
2164
+ integer(C_INT), value :: rank
2165
+ integer(C_INT), dimension(*), intent(in) :: n
2166
+ complex(16), dimension(*), intent(out) :: in
2167
+ real(16), dimension(*), intent(out) :: out
2168
+ integer(C_INT), value :: flags
2169
+ end function fftwq_plan_dft_c2r
2171
+ type(C_PTR) function fftwq_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_1d')
2173
+ integer(C_INT), value :: n
2174
+ complex(16), dimension(*), intent(out) :: in
2175
+ real(16), dimension(*), intent(out) :: out
2176
+ integer(C_INT), value :: flags
2177
+ end function fftwq_plan_dft_c2r_1d
2179
+ type(C_PTR) function fftwq_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_2d')
2181
+ integer(C_INT), value :: n0
2182
+ integer(C_INT), value :: n1
2183
+ complex(16), dimension(*), intent(out) :: in
2184
+ real(16), dimension(*), intent(out) :: out
2185
+ integer(C_INT), value :: flags
2186
+ end function fftwq_plan_dft_c2r_2d
2188
+ type(C_PTR) function fftwq_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_3d')
2190
+ integer(C_INT), value :: n0
2191
+ integer(C_INT), value :: n1
2192
+ integer(C_INT), value :: n2
2193
+ complex(16), dimension(*), intent(out) :: in
2194
+ real(16), dimension(*), intent(out) :: out
2195
+ integer(C_INT), value :: flags
2196
+ end function fftwq_plan_dft_c2r_3d
2198
+ type(C_PTR) function fftwq_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
2199
+ bind(C, name='fftwq_plan_guru_dft_r2c')
2201
+ integer(C_INT), value :: rank
2202
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2203
+ integer(C_INT), value :: howmany_rank
2204
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2205
+ real(16), dimension(*), intent(out) :: in
2206
+ complex(16), dimension(*), intent(out) :: out
2207
+ integer(C_INT), value :: flags
2208
+ end function fftwq_plan_guru_dft_r2c
2210
+ type(C_PTR) function fftwq_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
2211
+ bind(C, name='fftwq_plan_guru_dft_c2r')
2213
+ integer(C_INT), value :: rank
2214
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2215
+ integer(C_INT), value :: howmany_rank
2216
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2217
+ complex(16), dimension(*), intent(out) :: in
2218
+ real(16), dimension(*), intent(out) :: out
2219
+ integer(C_INT), value :: flags
2220
+ end function fftwq_plan_guru_dft_c2r
2222
+ type(C_PTR) function fftwq_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
2223
+ bind(C, name='fftwq_plan_guru_split_dft_r2c')
2225
+ integer(C_INT), value :: rank
2226
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2227
+ integer(C_INT), value :: howmany_rank
2228
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2229
+ real(16), dimension(*), intent(out) :: in
2230
+ real(16), dimension(*), intent(out) :: ro
2231
+ real(16), dimension(*), intent(out) :: io
2232
+ integer(C_INT), value :: flags
2233
+ end function fftwq_plan_guru_split_dft_r2c
2235
+ type(C_PTR) function fftwq_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
2236
+ bind(C, name='fftwq_plan_guru_split_dft_c2r')
2238
+ integer(C_INT), value :: rank
2239
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2240
+ integer(C_INT), value :: howmany_rank
2241
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2242
+ real(16), dimension(*), intent(out) :: ri
2243
+ real(16), dimension(*), intent(out) :: ii
2244
+ real(16), dimension(*), intent(out) :: out
2245
+ integer(C_INT), value :: flags
2246
+ end function fftwq_plan_guru_split_dft_c2r
2248
+ type(C_PTR) function fftwq_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
2249
+ bind(C, name='fftwq_plan_guru64_dft_r2c')
2251
+ integer(C_INT), value :: rank
2252
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2253
+ integer(C_INT), value :: howmany_rank
2254
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2255
+ real(16), dimension(*), intent(out) :: in
2256
+ complex(16), dimension(*), intent(out) :: out
2257
+ integer(C_INT), value :: flags
2258
+ end function fftwq_plan_guru64_dft_r2c
2260
+ type(C_PTR) function fftwq_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
2261
+ bind(C, name='fftwq_plan_guru64_dft_c2r')
2263
+ integer(C_INT), value :: rank
2264
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2265
+ integer(C_INT), value :: howmany_rank
2266
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2267
+ complex(16), dimension(*), intent(out) :: in
2268
+ real(16), dimension(*), intent(out) :: out
2269
+ integer(C_INT), value :: flags
2270
+ end function fftwq_plan_guru64_dft_c2r
2272
+ type(C_PTR) function fftwq_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
2273
+ bind(C, name='fftwq_plan_guru64_split_dft_r2c')
2275
+ integer(C_INT), value :: rank
2276
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2277
+ integer(C_INT), value :: howmany_rank
2278
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2279
+ real(16), dimension(*), intent(out) :: in
2280
+ real(16), dimension(*), intent(out) :: ro
2281
+ real(16), dimension(*), intent(out) :: io
2282
+ integer(C_INT), value :: flags
2283
+ end function fftwq_plan_guru64_split_dft_r2c
2285
+ type(C_PTR) function fftwq_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
2286
+ bind(C, name='fftwq_plan_guru64_split_dft_c2r')
2288
+ integer(C_INT), value :: rank
2289
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2290
+ integer(C_INT), value :: howmany_rank
2291
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2292
+ real(16), dimension(*), intent(out) :: ri
2293
+ real(16), dimension(*), intent(out) :: ii
2294
+ real(16), dimension(*), intent(out) :: out
2295
+ integer(C_INT), value :: flags
2296
+ end function fftwq_plan_guru64_split_dft_c2r
2298
+ subroutine fftwq_execute_dft_r2c(p,in,out) bind(C, name='fftwq_execute_dft_r2c')
2300
+ type(C_PTR), value :: p
2301
+ real(16), dimension(*), intent(inout) :: in
2302
+ complex(16), dimension(*), intent(out) :: out
2303
+ end subroutine fftwq_execute_dft_r2c
2305
+ subroutine fftwq_execute_dft_c2r(p,in,out) bind(C, name='fftwq_execute_dft_c2r')
2307
+ type(C_PTR), value :: p
2308
+ complex(16), dimension(*), intent(inout) :: in
2309
+ real(16), dimension(*), intent(out) :: out
2310
+ end subroutine fftwq_execute_dft_c2r
2312
+ subroutine fftwq_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwq_execute_split_dft_r2c')
2314
+ type(C_PTR), value :: p
2315
+ real(16), dimension(*), intent(inout) :: in
2316
+ real(16), dimension(*), intent(out) :: ro
2317
+ real(16), dimension(*), intent(out) :: io
2318
+ end subroutine fftwq_execute_split_dft_r2c
2320
+ subroutine fftwq_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwq_execute_split_dft_c2r')
2322
+ type(C_PTR), value :: p
2323
+ real(16), dimension(*), intent(inout) :: ri
2324
+ real(16), dimension(*), intent(inout) :: ii
2325
+ real(16), dimension(*), intent(out) :: out
2326
+ end subroutine fftwq_execute_split_dft_c2r
2328
+ type(C_PTR) function fftwq_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
2329
+ bind(C, name='fftwq_plan_many_r2r')
2331
+ integer(C_INT), value :: rank
2332
+ integer(C_INT), dimension(*), intent(in) :: n
2333
+ integer(C_INT), value :: howmany
2334
+ real(16), dimension(*), intent(out) :: in
2335
+ integer(C_INT), dimension(*), intent(in) :: inembed
2336
+ integer(C_INT), value :: istride
2337
+ integer(C_INT), value :: idist
2338
+ real(16), dimension(*), intent(out) :: out
2339
+ integer(C_INT), dimension(*), intent(in) :: onembed
2340
+ integer(C_INT), value :: ostride
2341
+ integer(C_INT), value :: odist
2342
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
2343
+ integer(C_INT), value :: flags
2344
+ end function fftwq_plan_many_r2r
2346
+ type(C_PTR) function fftwq_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r')
2348
+ integer(C_INT), value :: rank
2349
+ integer(C_INT), dimension(*), intent(in) :: n
2350
+ real(16), dimension(*), intent(out) :: in
2351
+ real(16), dimension(*), intent(out) :: out
2352
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
2353
+ integer(C_INT), value :: flags
2354
+ end function fftwq_plan_r2r
2356
+ type(C_PTR) function fftwq_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r_1d')
2358
+ integer(C_INT), value :: n
2359
+ real(16), dimension(*), intent(out) :: in
2360
+ real(16), dimension(*), intent(out) :: out
2361
+ integer(C_FFTW_R2R_KIND), value :: kind
2362
+ integer(C_INT), value :: flags
2363
+ end function fftwq_plan_r2r_1d
2365
+ type(C_PTR) function fftwq_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwq_plan_r2r_2d')
2367
+ integer(C_INT), value :: n0
2368
+ integer(C_INT), value :: n1
2369
+ real(16), dimension(*), intent(out) :: in
2370
+ real(16), dimension(*), intent(out) :: out
2371
+ integer(C_FFTW_R2R_KIND), value :: kind0
2372
+ integer(C_FFTW_R2R_KIND), value :: kind1
2373
+ integer(C_INT), value :: flags
2374
+ end function fftwq_plan_r2r_2d
2376
+ type(C_PTR) function fftwq_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwq_plan_r2r_3d')
2378
+ integer(C_INT), value :: n0
2379
+ integer(C_INT), value :: n1
2380
+ integer(C_INT), value :: n2
2381
+ real(16), dimension(*), intent(out) :: in
2382
+ real(16), dimension(*), intent(out) :: out
2383
+ integer(C_FFTW_R2R_KIND), value :: kind0
2384
+ integer(C_FFTW_R2R_KIND), value :: kind1
2385
+ integer(C_FFTW_R2R_KIND), value :: kind2
2386
+ integer(C_INT), value :: flags
2387
+ end function fftwq_plan_r2r_3d
2389
+ type(C_PTR) function fftwq_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
2390
+ bind(C, name='fftwq_plan_guru_r2r')
2392
+ integer(C_INT), value :: rank
2393
+ type(fftwq_iodim), dimension(*), intent(in) :: dims
2394
+ integer(C_INT), value :: howmany_rank
2395
+ type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
2396
+ real(16), dimension(*), intent(out) :: in
2397
+ real(16), dimension(*), intent(out) :: out
2398
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
2399
+ integer(C_INT), value :: flags
2400
+ end function fftwq_plan_guru_r2r
2402
+ type(C_PTR) function fftwq_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
2403
+ bind(C, name='fftwq_plan_guru64_r2r')
2405
+ integer(C_INT), value :: rank
2406
+ type(fftwq_iodim64), dimension(*), intent(in) :: dims
2407
+ integer(C_INT), value :: howmany_rank
2408
+ type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
2409
+ real(16), dimension(*), intent(out) :: in
2410
+ real(16), dimension(*), intent(out) :: out
2411
+ integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
2412
+ integer(C_INT), value :: flags
2413
+ end function fftwq_plan_guru64_r2r
2415
+ subroutine fftwq_execute_r2r(p,in,out) bind(C, name='fftwq_execute_r2r')
2417
+ type(C_PTR), value :: p
2418
+ real(16), dimension(*), intent(inout) :: in
2419
+ real(16), dimension(*), intent(out) :: out
2420
+ end subroutine fftwq_execute_r2r
2422
+ subroutine fftwq_destroy_plan(p) bind(C, name='fftwq_destroy_plan')
2424
+ type(C_PTR), value :: p
2425
+ end subroutine fftwq_destroy_plan
2427
+ subroutine fftwq_forget_wisdom() bind(C, name='fftwq_forget_wisdom')
2429
+ end subroutine fftwq_forget_wisdom
2431
+ subroutine fftwq_cleanup() bind(C, name='fftwq_cleanup')
2433
+ end subroutine fftwq_cleanup
2435
+ subroutine fftwq_set_timelimit(t) bind(C, name='fftwq_set_timelimit')
2437
+ real(C_DOUBLE), value :: t
2438
+ end subroutine fftwq_set_timelimit
2440
+ subroutine fftwq_plan_with_nthreads(nthreads) bind(C, name='fftwq_plan_with_nthreads')
2442
+ integer(C_INT), value :: nthreads
2443
+ end subroutine fftwq_plan_with_nthreads
2445
+ integer(C_INT) function fftwq_init_threads() bind(C, name='fftwq_init_threads')
2447
+ end function fftwq_init_threads
2449
+ subroutine fftwq_cleanup_threads() bind(C, name='fftwq_cleanup_threads')
2451
+ end subroutine fftwq_cleanup_threads
2453
+ subroutine fftwq_make_planner_thread_safe() bind(C, name='fftwq_make_planner_thread_safe')
2455
+ end subroutine fftwq_make_planner_thread_safe
2457
+ integer(C_INT) function fftwq_export_wisdom_to_filename(filename) bind(C, name='fftwq_export_wisdom_to_filename')
2459
+ character(C_CHAR), dimension(*), intent(in) :: filename
2460
+ end function fftwq_export_wisdom_to_filename
2462
+ subroutine fftwq_export_wisdom_to_file(output_file) bind(C, name='fftwq_export_wisdom_to_file')
2464
+ type(C_PTR), value :: output_file
2465
+ end subroutine fftwq_export_wisdom_to_file
2467
+ type(C_PTR) function fftwq_export_wisdom_to_string() bind(C, name='fftwq_export_wisdom_to_string')
2469
+ end function fftwq_export_wisdom_to_string
2471
+ subroutine fftwq_export_wisdom(write_char,data) bind(C, name='fftwq_export_wisdom')
2473
+ type(C_FUNPTR), value :: write_char
2474
+ type(C_PTR), value :: data
2475
+ end subroutine fftwq_export_wisdom
2477
+ integer(C_INT) function fftwq_import_system_wisdom() bind(C, name='fftwq_import_system_wisdom')
2479
+ end function fftwq_import_system_wisdom
2481
+ integer(C_INT) function fftwq_import_wisdom_from_filename(filename) bind(C, name='fftwq_import_wisdom_from_filename')
2483
+ character(C_CHAR), dimension(*), intent(in) :: filename
2484
+ end function fftwq_import_wisdom_from_filename
2486
+ integer(C_INT) function fftwq_import_wisdom_from_file(input_file) bind(C, name='fftwq_import_wisdom_from_file')
2488
+ type(C_PTR), value :: input_file
2489
+ end function fftwq_import_wisdom_from_file
2491
+ integer(C_INT) function fftwq_import_wisdom_from_string(input_string) bind(C, name='fftwq_import_wisdom_from_string')
2493
+ character(C_CHAR), dimension(*), intent(in) :: input_string
2494
+ end function fftwq_import_wisdom_from_string
2496
+ integer(C_INT) function fftwq_import_wisdom(read_char,data) bind(C, name='fftwq_import_wisdom')
2498
+ type(C_FUNPTR), value :: read_char
2499
+ type(C_PTR), value :: data
2500
+ end function fftwq_import_wisdom
2502
+ subroutine fftwq_fprint_plan(p,output_file) bind(C, name='fftwq_fprint_plan')
2504
+ type(C_PTR), value :: p
2505
+ type(C_PTR), value :: output_file
2506
+ end subroutine fftwq_fprint_plan
2508
+ subroutine fftwq_print_plan(p) bind(C, name='fftwq_print_plan')
2510
+ type(C_PTR), value :: p
2511
+ end subroutine fftwq_print_plan
2513
+ type(C_PTR) function fftwq_sprint_plan(p) bind(C, name='fftwq_sprint_plan')
2515
+ type(C_PTR), value :: p
2516
+ end function fftwq_sprint_plan
2518
+ type(C_PTR) function fftwq_malloc(n) bind(C, name='fftwq_malloc')
2520
+ integer(C_SIZE_T), value :: n
2521
+ end function fftwq_malloc
2523
+ type(C_PTR) function fftwq_alloc_real(n) bind(C, name='fftwq_alloc_real')
2525
+ integer(C_SIZE_T), value :: n
2526
+ end function fftwq_alloc_real
2528
+ type(C_PTR) function fftwq_alloc_complex(n) bind(C, name='fftwq_alloc_complex')
2530
+ integer(C_SIZE_T), value :: n
2531
+ end function fftwq_alloc_complex
2533
+ subroutine fftwq_free(p) bind(C, name='fftwq_free')
2535
+ type(C_PTR), value :: p
2536
+ end subroutine fftwq_free
2538
+ subroutine fftwq_flops(p,add,mul,fmas) bind(C, name='fftwq_flops')
2540
+ type(C_PTR), value :: p
2541
+ real(C_DOUBLE), intent(out) :: add
2542
+ real(C_DOUBLE), intent(out) :: mul
2543
+ real(C_DOUBLE), intent(out) :: fmas
2544
+ end subroutine fftwq_flops
2546
+ real(C_DOUBLE) function fftwq_estimate_cost(p) bind(C, name='fftwq_estimate_cost')
2548
+ type(C_PTR), value :: p
2549
+ end function fftwq_estimate_cost
2551
+ real(C_DOUBLE) function fftwq_cost(p) bind(C, name='fftwq_cost')
2553
+ type(C_PTR), value :: p
2554
+ end function fftwq_cost
2556
+ integer(C_INT) function fftwq_alignment_of(p) bind(C, name='fftwq_alignment_of')
2558
+ real(16), dimension(*), intent(out) :: p
2559
+ end function fftwq_alignment_of
2563
=== added file 'dft/scalar/codelets/codlist.c'
2564
--- old/dft/scalar/codelets/codlist.c 1970-01-01 00:00:00 +0000
2565
+++ new/dft/scalar/codelets/codlist.c 2016-01-09 21:00:41 +0000
2570
+extern void X(codelet_n1_2)(planner *);
2571
+extern void X(codelet_n1_3)(planner *);
2572
+extern void X(codelet_n1_4)(planner *);
2573
+extern void X(codelet_n1_5)(planner *);
2574
+extern void X(codelet_n1_6)(planner *);
2575
+extern void X(codelet_n1_7)(planner *);
2576
+extern void X(codelet_n1_8)(planner *);
2577
+extern void X(codelet_n1_9)(planner *);
2578
+extern void X(codelet_n1_10)(planner *);
2579
+extern void X(codelet_n1_11)(planner *);
2580
+extern void X(codelet_n1_12)(planner *);
2581
+extern void X(codelet_n1_13)(planner *);
2582
+extern void X(codelet_n1_14)(planner *);
2583
+extern void X(codelet_n1_15)(planner *);
2584
+extern void X(codelet_n1_16)(planner *);
2585
+extern void X(codelet_n1_32)(planner *);
2586
+extern void X(codelet_n1_64)(planner *);
2587
+extern void X(codelet_n1_20)(planner *);
2588
+extern void X(codelet_n1_25)(planner *);
2589
+extern void X(codelet_t1_2)(planner *);
2590
+extern void X(codelet_t1_3)(planner *);
2591
+extern void X(codelet_t1_4)(planner *);
2592
+extern void X(codelet_t1_5)(planner *);
2593
+extern void X(codelet_t1_6)(planner *);
2594
+extern void X(codelet_t1_7)(planner *);
2595
+extern void X(codelet_t1_8)(planner *);
2596
+extern void X(codelet_t1_9)(planner *);
2597
+extern void X(codelet_t1_10)(planner *);
2598
+extern void X(codelet_t1_12)(planner *);
2599
+extern void X(codelet_t1_15)(planner *);
2600
+extern void X(codelet_t1_16)(planner *);
2601
+extern void X(codelet_t1_32)(planner *);
2602
+extern void X(codelet_t1_64)(planner *);
2603
+extern void X(codelet_t1_20)(planner *);
2604
+extern void X(codelet_t1_25)(planner *);
2605
+extern void X(codelet_t2_4)(planner *);
2606
+extern void X(codelet_t2_8)(planner *);
2607
+extern void X(codelet_t2_16)(planner *);
2608
+extern void X(codelet_t2_32)(planner *);
2609
+extern void X(codelet_t2_64)(planner *);
2610
+extern void X(codelet_t2_5)(planner *);
2611
+extern void X(codelet_t2_10)(planner *);
2612
+extern void X(codelet_t2_20)(planner *);
2613
+extern void X(codelet_t2_25)(planner *);
2614
+extern void X(codelet_q1_2)(planner *);
2615
+extern void X(codelet_q1_4)(planner *);
2616
+extern void X(codelet_q1_8)(planner *);
2617
+extern void X(codelet_q1_3)(planner *);
2618
+extern void X(codelet_q1_5)(planner *);
2619
+extern void X(codelet_q1_6)(planner *);
2622
+extern const solvtab X(solvtab_dft_standard);
2623
+const solvtab X(solvtab_dft_standard) = {
2624
+ SOLVTAB(X(codelet_n1_2)),
2625
+ SOLVTAB(X(codelet_n1_3)),
2626
+ SOLVTAB(X(codelet_n1_4)),
2627
+ SOLVTAB(X(codelet_n1_5)),
2628
+ SOLVTAB(X(codelet_n1_6)),
2629
+ SOLVTAB(X(codelet_n1_7)),
2630
+ SOLVTAB(X(codelet_n1_8)),
2631
+ SOLVTAB(X(codelet_n1_9)),
2632
+ SOLVTAB(X(codelet_n1_10)),
2633
+ SOLVTAB(X(codelet_n1_11)),
2634
+ SOLVTAB(X(codelet_n1_12)),
2635
+ SOLVTAB(X(codelet_n1_13)),
2636
+ SOLVTAB(X(codelet_n1_14)),
2637
+ SOLVTAB(X(codelet_n1_15)),
2638
+ SOLVTAB(X(codelet_n1_16)),
2639
+ SOLVTAB(X(codelet_n1_32)),
2640
+ SOLVTAB(X(codelet_n1_64)),
2641
+ SOLVTAB(X(codelet_n1_20)),
2642
+ SOLVTAB(X(codelet_n1_25)),
2643
+ SOLVTAB(X(codelet_t1_2)),
2644
+ SOLVTAB(X(codelet_t1_3)),
2645
+ SOLVTAB(X(codelet_t1_4)),
2646
+ SOLVTAB(X(codelet_t1_5)),
2647
+ SOLVTAB(X(codelet_t1_6)),
2648
+ SOLVTAB(X(codelet_t1_7)),
2649
+ SOLVTAB(X(codelet_t1_8)),
2650
+ SOLVTAB(X(codelet_t1_9)),
2651
+ SOLVTAB(X(codelet_t1_10)),
2652
+ SOLVTAB(X(codelet_t1_12)),
2653
+ SOLVTAB(X(codelet_t1_15)),
2654
+ SOLVTAB(X(codelet_t1_16)),
2655
+ SOLVTAB(X(codelet_t1_32)),
2656
+ SOLVTAB(X(codelet_t1_64)),
2657
+ SOLVTAB(X(codelet_t1_20)),
2658
+ SOLVTAB(X(codelet_t1_25)),
2659
+ SOLVTAB(X(codelet_t2_4)),
2660
+ SOLVTAB(X(codelet_t2_8)),
2661
+ SOLVTAB(X(codelet_t2_16)),
2662
+ SOLVTAB(X(codelet_t2_32)),
2663
+ SOLVTAB(X(codelet_t2_64)),
2664
+ SOLVTAB(X(codelet_t2_5)),
2665
+ SOLVTAB(X(codelet_t2_10)),
2666
+ SOLVTAB(X(codelet_t2_20)),
2667
+ SOLVTAB(X(codelet_t2_25)),
2668
+ SOLVTAB(X(codelet_q1_2)),
2669
+ SOLVTAB(X(codelet_q1_4)),
2670
+ SOLVTAB(X(codelet_q1_8)),
2671
+ SOLVTAB(X(codelet_q1_3)),
2672
+ SOLVTAB(X(codelet_q1_5)),
2673
+ SOLVTAB(X(codelet_q1_6)),
2677
=== added file 'dft/scalar/codelets/n1_10.c'
2678
--- old/dft/scalar/codelets/n1_10.c 1970-01-01 00:00:00 +0000
2679
+++ new/dft/scalar/codelets/n1_10.c 2016-01-09 21:00:29 +0000
2682
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
2683
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
2685
+ * This program is free software; you can redistribute it and/or modify
2686
+ * it under the terms of the GNU General Public License as published by
2687
+ * the Free Software Foundation; either version 2 of the License, or
2688
+ * (at your option) any later version.
2690
+ * This program is distributed in the hope that it will be useful,
2691
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2692
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2693
+ * GNU General Public License for more details.
2695
+ * You should have received a copy of the GNU General Public License
2696
+ * along with this program; if not, write to the Free Software
2697
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2701
+/* This file was automatically generated --- DO NOT EDIT */
2702
+/* Generated on Sat Jan 9 16:00:29 EST 2016 */
2704
+#include "codelet-dft.h"
2708
+/* Generated by: ../../../genfft/gen_notw.native -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -n 10 -name n1_10 -include n.h */
2711
+ * This function contains 84 FP additions, 36 FP multiplications,
2712
+ * (or, 48 additions, 0 multiplications, 36 fused multiply/add),
2713
+ * 59 stack variables, 4 constants, and 40 memory accesses
2717
+static void n1_10(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
2719
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
2720
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
2721
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
2722
+ DK(KP618033988, +0.618033988749894848204586834365638117720309180);
2725
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(40, is), MAKE_VOLATILE_STRIDE(40, os)) {
2726
+ E T1g, T1a, T18, T1m, T1k, T1f, T19, T11, T1h, T1l;
2728
+ E Tj, T3, T1b, TN, T1j, TU, T1i, TV, Tq, T10, Ti, Ts, Tw, T15, Tx;
2729
+ E T13, TG, Ty, TB, TC;
2733
+ T2 = ri[WS(is, 5)];
2735
+ TM = ii[WS(is, 5)];
2737
+ E T7, Tk, T6, To, Tg, T8, Tb, Tc;
2740
+ T4 = ri[WS(is, 2)];
2745
+ T5 = ri[WS(is, 7)];
2746
+ Te = ri[WS(is, 6)];
2747
+ Tf = ri[WS(is, 1)];
2748
+ T7 = ri[WS(is, 8)];
2753
+ T8 = ri[WS(is, 3)];
2754
+ Tb = ri[WS(is, 4)];
2755
+ Tc = ri[WS(is, 9)];
2761
+ Tu = ii[WS(is, 2)];
2778
+ Tv = ii[WS(is, 7)];
2783
+ TE = ii[WS(is, 6)];
2784
+ TF = ii[WS(is, 1)];
2787
+ Tx = ii[WS(is, 8)];
2790
+ Ty = ii[WS(is, 3)];
2791
+ TB = ii[WS(is, 4)];
2792
+ TC = ii[WS(is, 9)];
2797
+ E T17, TA, T14, TH, T1e, TQ, TS;
2799
+ E TO, TP, T16, Tz;
2800
+ ro[WS(os, 5)] = T3 + Ti;
2804
+ E T12, TD, T1c, T1d;
2823
+ E TK, TI, TY, TW, TR, TJ, Tt, Tr, TZ, TX, TT;
2824
+ TK = FNMS(KP618033988, TA, TH);
2825
+ TI = FMA(KP618033988, TH, TA);
2826
+ io[0] = T1b + T1e;
2827
+ io[WS(os, 5)] = TN + TQ;
2828
+ Tr = FNMS(KP250000000, Ti, T3);
2829
+ TY = FNMS(KP618033988, TU, TV);
2830
+ TW = FMA(KP618033988, TV, TU);
2831
+ TR = FNMS(KP250000000, TQ, TN);
2832
+ TJ = FNMS(KP559016994, Ts, Tr);
2833
+ Tt = FMA(KP559016994, Ts, Tr);
2834
+ T1a = FMA(KP618033988, T14, T17);
2835
+ T18 = FNMS(KP618033988, T17, T14);
2836
+ ro[WS(os, 7)] = FNMS(KP951056516, TK, TJ);
2837
+ ro[WS(os, 3)] = FMA(KP951056516, TK, TJ);
2838
+ ro[WS(os, 1)] = FMA(KP951056516, TI, Tt);
2839
+ ro[WS(os, 9)] = FNMS(KP951056516, TI, Tt);
2840
+ TX = FNMS(KP559016994, TS, TR);
2841
+ TT = FMA(KP559016994, TS, TR);
2842
+ TZ = FNMS(KP250000000, Tq, Tj);
2843
+ io[WS(os, 3)] = FNMS(KP951056516, TY, TX);
2844
+ io[WS(os, 7)] = FMA(KP951056516, TY, TX);
2845
+ io[WS(os, 9)] = FMA(KP951056516, TW, TT);
2846
+ io[WS(os, 1)] = FNMS(KP951056516, TW, TT);
2847
+ T1m = FMA(KP618033988, T1i, T1j);
2848
+ T1k = FNMS(KP618033988, T1j, T1i);
2849
+ T1f = FNMS(KP250000000, T1e, T1b);
2850
+ T19 = FMA(KP559016994, T10, TZ);
2851
+ T11 = FNMS(KP559016994, T10, TZ);
2855
+ ro[WS(os, 4)] = FNMS(KP951056516, T1a, T19);
2856
+ ro[WS(os, 6)] = FMA(KP951056516, T1a, T19);
2857
+ ro[WS(os, 8)] = FMA(KP951056516, T18, T11);
2858
+ ro[WS(os, 2)] = FNMS(KP951056516, T18, T11);
2859
+ T1h = FNMS(KP559016994, T1g, T1f);
2860
+ T1l = FMA(KP559016994, T1g, T1f);
2861
+ io[WS(os, 4)] = FMA(KP951056516, T1m, T1l);
2862
+ io[WS(os, 6)] = FNMS(KP951056516, T1m, T1l);
2863
+ io[WS(os, 8)] = FNMS(KP951056516, T1k, T1h);
2864
+ io[WS(os, 2)] = FMA(KP951056516, T1k, T1h);
2869
+static const kdft_desc desc = { 10, "n1_10", {48, 0, 36, 0}, &GENUS, 0, 0, 0, 0 };
2871
+void X(codelet_n1_10) (planner *p) {
2872
+ X(kdft_register) (p, n1_10, &desc);
2875
+#else /* HAVE_FMA */
2877
+/* Generated by: ../../../genfft/gen_notw.native -compact -variables 4 -pipeline-latency 4 -n 10 -name n1_10 -include n.h */
2880
+ * This function contains 84 FP additions, 24 FP multiplications,
2881
+ * (or, 72 additions, 12 multiplications, 12 fused multiply/add),
2882
+ * 41 stack variables, 4 constants, and 40 memory accesses
2886
+static void n1_10(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
2888
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
2889
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
2890
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
2891
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
2894
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(40, is), MAKE_VOLATILE_STRIDE(40, os)) {
2895
+ E T3, Tj, TQ, T1e, TU, TV, T1c, T1b, Tm, Tp, Tq, Ta, Th, Ti, TA;
2896
+ E TH, T17, T14, T1f, T1g, T1h, TL, TM, TR;
2900
+ T2 = ri[WS(is, 5)];
2904
+ TP = ii[WS(is, 5)];
2909
+ E T6, Tk, Tg, To, T9, Tl, Td, Tn;
2912
+ T4 = ri[WS(is, 2)];
2913
+ T5 = ri[WS(is, 7)];
2916
+ Te = ri[WS(is, 6)];
2917
+ Tf = ri[WS(is, 1)];
2923
+ T7 = ri[WS(is, 8)];
2924
+ T8 = ri[WS(is, 3)];
2927
+ Tb = ri[WS(is, 4)];
2928
+ Tc = ri[WS(is, 9)];
2944
+ E Tw, T15, TG, T13, Tz, T16, TD, T12;
2947
+ Tu = ii[WS(is, 2)];
2948
+ Tv = ii[WS(is, 7)];
2951
+ TE = ii[WS(is, 6)];
2952
+ TF = ii[WS(is, 1)];
2958
+ Tx = ii[WS(is, 8)];
2959
+ Ty = ii[WS(is, 3)];
2962
+ TB = ii[WS(is, 4)];
2963
+ TC = ii[WS(is, 9)];
2978
+ ro[WS(os, 5)] = T3 + Ti;
2979
+ io[WS(os, 5)] = TQ + TR;
2981
+ io[0] = T1e + T1h;
2983
+ E TI, TK, Tt, TJ, Tr, Ts;
2984
+ TI = FMA(KP951056516, TA, KP587785252 * TH);
2985
+ TK = FNMS(KP587785252, TA, KP951056516 * TH);
2986
+ Tr = KP559016994 * (Ta - Th);
2987
+ Ts = FNMS(KP250000000, Ti, T3);
2990
+ ro[WS(os, 9)] = Tt - TI;
2991
+ ro[WS(os, 3)] = TJ + TK;
2992
+ ro[WS(os, 1)] = Tt + TI;
2993
+ ro[WS(os, 7)] = TJ - TK;
2996
+ E TW, TY, TT, TX, TN, TS;
2997
+ TW = FMA(KP951056516, TU, KP587785252 * TV);
2998
+ TY = FNMS(KP587785252, TU, KP951056516 * TV);
2999
+ TN = KP559016994 * (TL - TM);
3000
+ TS = FNMS(KP250000000, TR, TQ);
3003
+ io[WS(os, 1)] = TT - TW;
3004
+ io[WS(os, 7)] = TY + TX;
3005
+ io[WS(os, 9)] = TW + TT;
3006
+ io[WS(os, 3)] = TX - TY;
3009
+ E T18, T1a, T11, T19, TZ, T10;
3010
+ T18 = FNMS(KP587785252, T17, KP951056516 * T14);
3011
+ T1a = FMA(KP951056516, T17, KP587785252 * T14);
3012
+ TZ = FNMS(KP250000000, Tq, Tj);
3013
+ T10 = KP559016994 * (Tm - Tp);
3016
+ ro[WS(os, 2)] = T11 - T18;
3017
+ ro[WS(os, 6)] = T19 + T1a;
3018
+ ro[WS(os, 8)] = T11 + T18;
3019
+ ro[WS(os, 4)] = T19 - T1a;
3022
+ E T1d, T1l, T1k, T1m, T1i, T1j;
3023
+ T1d = FNMS(KP587785252, T1c, KP951056516 * T1b);
3024
+ T1l = FMA(KP951056516, T1c, KP587785252 * T1b);
3025
+ T1i = FNMS(KP250000000, T1h, T1e);
3026
+ T1j = KP559016994 * (T1f - T1g);
3029
+ io[WS(os, 2)] = T1d + T1k;
3030
+ io[WS(os, 6)] = T1m - T1l;
3031
+ io[WS(os, 8)] = T1k - T1d;
3032
+ io[WS(os, 4)] = T1l + T1m;
3038
+static const kdft_desc desc = { 10, "n1_10", {72, 12, 12, 0}, &GENUS, 0, 0, 0, 0 };
3040
+void X(codelet_n1_10) (planner *p) {
3041
+ X(kdft_register) (p, n1_10, &desc);
3044
+#endif /* HAVE_FMA */
3046
=== added file 'dft/scalar/codelets/n1_11.c'
3047
--- old/dft/scalar/codelets/n1_11.c 1970-01-01 00:00:00 +0000
3048
+++ new/dft/scalar/codelets/n1_11.c 2016-01-09 21:00:32 +0000
3051
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
3052
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
3054
+ * This program is free software; you can redistribute it and/or modify
3055
+ * it under the terms of the GNU General Public License as published by
3056
+ * the Free Software Foundation; either version 2 of the License, or
3057
+ * (at your option) any later version.
3059
+ * This program is distributed in the hope that it will be useful,
3060
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3061
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3062
+ * GNU General Public License for more details.
3064
+ * You should have received a copy of the GNU General Public License
3065
+ * along with this program; if not, write to the Free Software
3066
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3070
+/* This file was automatically generated --- DO NOT EDIT */
3071
+/* Generated on Sat Jan 9 16:00:29 EST 2016 */
3073
+#include "codelet-dft.h"
3077
+/* Generated by: ../../../genfft/gen_notw.native -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -n 11 -name n1_11 -include n.h */
3080
+ * This function contains 140 FP additions, 110 FP multiplications,
3081
+ * (or, 30 additions, 0 multiplications, 110 fused multiply/add),
3082
+ * 84 stack variables, 10 constants, and 44 memory accesses
3086
+static void n1_11(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
3088
+ DK(KP989821441, +0.989821441880932732376092037776718787376519372);
3089
+ DK(KP959492973, +0.959492973614497389890368057066327699062454848);
3090
+ DK(KP918985947, +0.918985947228994779780736114132655398124909697);
3091
+ DK(KP876768831, +0.876768831002589333891339807079336796764054852);
3092
+ DK(KP830830026, +0.830830026003772851058548298459246407048009821);
3093
+ DK(KP778434453, +0.778434453334651800608337670740821884709317477);
3094
+ DK(KP715370323, +0.715370323453429719112414662767260662417897278);
3095
+ DK(KP634356270, +0.634356270682424498893150776899916060542806975);
3096
+ DK(KP342584725, +0.342584725681637509502641509861112333758894680);
3097
+ DK(KP521108558, +0.521108558113202722944698153526659300680427422);
3100
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(44, is), MAKE_VOLATILE_STRIDE(44, os)) {
3101
+ E T1, TA, T1p, T1y, T19, T1d, T1a, T1e;
3103
+ E T1f, T1u, T4, T1q, Tg, T1t, T7, T1s, Ta, Td, T1r, TP, T1X, T26, Ti;
3104
+ E TG, T1O, T1w, TY, T1F, T17, To, T1i, T1k, T1h, Tr, T1j, Tu, T1g, Tx;
3105
+ E T21, TU, TL, TC, T1S, T1J, T1m, T12, T1z, T1b;
3109
+ E T1E, T16, Tb, Tc, Tv, Tw;
3112
+ T2 = ri[WS(is, 1)];
3113
+ T3 = ri[WS(is, 10)];
3114
+ Te = ri[WS(is, 5)];
3115
+ Tf = ri[WS(is, 6)];
3118
+ T5 = ri[WS(is, 2)];
3123
+ T6 = ri[WS(is, 9)];
3124
+ T8 = ri[WS(is, 3)];
3125
+ T9 = ri[WS(is, 8)];
3126
+ Tb = ri[WS(is, 4)];
3131
+ Tc = ri[WS(is, 7)];
3135
+ E T25, Th, T1W, TO;
3136
+ T25 = FMA(KP521108558, T1q, T1u);
3137
+ T1W = FMA(KP521108558, T1s, T1q);
3138
+ TO = FNMS(KP342584725, T4, Ta);
3139
+ Th = FNMS(KP342584725, Ta, T7);
3142
+ TP = FNMS(KP634356270, TO, Tg);
3143
+ T1X = FNMS(KP715370323, T1W, T1t);
3144
+ T26 = FMA(KP715370323, T25, T1r);
3146
+ E TF, T1N, T1v, TX;
3147
+ TF = FNMS(KP342584725, Td, T4);
3148
+ Ti = FNMS(KP634356270, Th, Td);
3149
+ T1N = FNMS(KP521108558, T1t, T1r);
3150
+ T1v = FNMS(KP521108558, T1u, T1t);
3151
+ TG = FNMS(KP634356270, TF, T7);
3152
+ TX = FNMS(KP342584725, T7, Tg);
3153
+ T1O = FMA(KP715370323, T1N, T1q);
3154
+ T1w = FNMS(KP715370323, T1v, T1s);
3155
+ T1E = FMA(KP521108558, T1r, T1s);
3156
+ TY = FNMS(KP634356270, TX, T4);
3157
+ T16 = FNMS(KP342584725, Tg, Td);
3162
+ Tm = ii[WS(is, 3)];
3163
+ T1F = FMA(KP715370323, T1E, T1u);
3164
+ Tn = ii[WS(is, 8)];
3165
+ T17 = FNMS(KP634356270, T16, Ta);
3166
+ Ty = ii[WS(is, 5)];
3167
+ Tz = ii[WS(is, 6)];
3172
+ Tp = ii[WS(is, 2)];
3175
+ Tq = ii[WS(is, 9)];
3176
+ Ts = ii[WS(is, 4)];
3177
+ Tt = ii[WS(is, 7)];
3178
+ Tv = ii[WS(is, 1)];
3183
+ Tw = ii[WS(is, 10)];
3187
+ E TB, T1R, T20, TK, TT, T1I, T1l;
3188
+ T20 = FNMS(KP342584725, T1i, T1h);
3189
+ TK = FMA(KP521108558, To, TA);
3190
+ TT = FNMS(KP521108558, Tr, Tu);
3193
+ T21 = FNMS(KP634356270, T20, T1j);
3194
+ TU = FMA(KP715370323, TT, TA);
3195
+ TL = FNMS(KP715370323, TK, Tr);
3196
+ TB = FMA(KP521108558, TA, Tx);
3197
+ T1R = FNMS(KP342584725, T1j, T1g);
3198
+ T1I = FNMS(KP342584725, T1g, T1i);
3199
+ T1l = FNMS(KP342584725, T1k, T1j);
3200
+ TC = FMA(KP715370323, TB, Tu);
3201
+ T1S = FNMS(KP634356270, T1R, T1h);
3202
+ T1J = FNMS(KP634356270, T1I, T1k);
3203
+ T1m = FNMS(KP634356270, T1l, T1i);
3204
+ T12 = FMA(KP521108558, Tu, To);
3205
+ T1z = FNMS(KP342584725, T1h, T1k);
3206
+ T1b = FNMS(KP521108558, Tx, Tr);
3210
+ E T13, T1A, T1c, T1Z, T1V, TH, TM, Tj, TD;
3211
+ ro[0] = T1 + T4 + T7 + Ta + Td + Tg;
3212
+ T13 = FMA(KP715370323, T12, Tx);
3213
+ T1A = FNMS(KP634356270, T1z, T1g);
3214
+ T1c = FNMS(KP715370323, T1b, To);
3215
+ io[0] = T1f + T1g + T1h + T1i + T1j + T1k;
3216
+ Tj = FNMS(KP778434453, Ti, T4);
3217
+ TD = FMA(KP830830026, TC, Tr);
3219
+ E TE, T23, T28, Tl, Tk, T22, T27;
3220
+ T22 = FNMS(KP778434453, T21, T1g);
3221
+ T27 = FMA(KP830830026, T26, T1t);
3222
+ Tk = FNMS(KP876768831, Tj, Tg);
3223
+ TE = FMA(KP918985947, TD, To);
3224
+ T23 = FNMS(KP876768831, T22, T1k);
3225
+ T28 = FMA(KP918985947, T27, T1s);
3226
+ Tl = FNMS(KP959492973, Tk, T1);
3228
+ E T1U, T1T, T24, T1Y;
3229
+ T1T = FNMS(KP778434453, T1S, T1k);
3230
+ T24 = FNMS(KP959492973, T23, T1f);
3231
+ T1Y = FMA(KP830830026, T1X, T1u);
3232
+ ro[WS(os, 1)] = FMA(KP989821441, TE, Tl);
3233
+ ro[WS(os, 10)] = FNMS(KP989821441, TE, Tl);
3234
+ T1U = FNMS(KP876768831, T1T, T1i);
3235
+ io[WS(os, 10)] = FNMS(KP989821441, T28, T24);
3236
+ io[WS(os, 1)] = FMA(KP989821441, T28, T24);
3237
+ T1Z = FNMS(KP918985947, T1Y, T1r);
3238
+ T1V = FNMS(KP959492973, T1U, T1f);
3240
+ TH = FNMS(KP778434453, TG, Tg);
3241
+ TM = FMA(KP830830026, TL, Tx);
3244
+ E T1M, TZ, T14, T1Q;
3246
+ E TN, TR, TV, TJ, TI, TQ, T1P;
3247
+ TQ = FNMS(KP778434453, TP, Td);
3248
+ io[WS(os, 9)] = FMA(KP989821441, T1Z, T1V);
3249
+ io[WS(os, 2)] = FNMS(KP989821441, T1Z, T1V);
3250
+ TI = FNMS(KP876768831, TH, Ta);
3251
+ TN = FNMS(KP918985947, TM, Tu);
3252
+ TR = FNMS(KP876768831, TQ, T7);
3253
+ TV = FNMS(KP830830026, TU, To);
3254
+ TJ = FNMS(KP959492973, TI, T1);
3256
+ E T1L, TS, TW, T1K;
3257
+ T1K = FNMS(KP778434453, T1J, T1j);
3258
+ TS = FNMS(KP959492973, TR, T1);
3259
+ TW = FNMS(KP918985947, TV, Tx);
3260
+ ro[WS(os, 9)] = FMA(KP989821441, TN, TJ);
3261
+ ro[WS(os, 2)] = FNMS(KP989821441, TN, TJ);
3262
+ T1L = FNMS(KP876768831, T1K, T1h);
3263
+ ro[WS(os, 3)] = FMA(KP989821441, TW, TS);
3264
+ ro[WS(os, 8)] = FNMS(KP989821441, TW, TS);
3265
+ T1P = FNMS(KP830830026, T1O, T1s);
3266
+ T1M = FNMS(KP959492973, T1L, T1f);
3268
+ TZ = FNMS(KP778434453, TY, Ta);
3269
+ T14 = FNMS(KP830830026, T13, TA);
3270
+ T1Q = FNMS(KP918985947, T1P, T1u);
3273
+ E T15, T11, T1C, T1G, T1B, T10;
3274
+ T1B = FNMS(KP778434453, T1A, T1i);
3275
+ T10 = FNMS(KP876768831, TZ, Td);
3276
+ T15 = FMA(KP918985947, T14, Tr);
3277
+ io[WS(os, 8)] = FNMS(KP989821441, T1Q, T1M);
3278
+ io[WS(os, 3)] = FMA(KP989821441, T1Q, T1M);
3279
+ T11 = FNMS(KP959492973, T10, T1);
3280
+ T1C = FNMS(KP876768831, T1B, T1j);
3281
+ T1G = FNMS(KP830830026, T1F, T1q);
3283
+ E T1D, T1H, T1o, T1x, T1n, T18;
3284
+ T1n = FNMS(KP778434453, T1m, T1h);
3285
+ ro[WS(os, 7)] = FMA(KP989821441, T15, T11);
3286
+ ro[WS(os, 4)] = FNMS(KP989821441, T15, T11);
3287
+ T1D = FNMS(KP959492973, T1C, T1f);
3288
+ T1H = FMA(KP918985947, T1G, T1t);
3289
+ T1o = FNMS(KP876768831, T1n, T1g);
3290
+ T1x = FNMS(KP830830026, T1w, T1r);
3291
+ T18 = FNMS(KP778434453, T17, T7);
3292
+ io[WS(os, 7)] = FMA(KP989821441, T1H, T1D);
3293
+ io[WS(os, 4)] = FNMS(KP989821441, T1H, T1D);
3294
+ T1p = FNMS(KP959492973, T1o, T1f);
3295
+ T1y = FNMS(KP918985947, T1x, T1q);
3296
+ T19 = FNMS(KP876768831, T18, T4);
3297
+ T1d = FNMS(KP830830026, T1c, Tu);
3303
+ io[WS(os, 6)] = FNMS(KP989821441, T1y, T1p);
3304
+ io[WS(os, 5)] = FMA(KP989821441, T1y, T1p);
3305
+ T1a = FNMS(KP959492973, T19, T1);
3306
+ T1e = FNMS(KP918985947, T1d, TA);
3307
+ ro[WS(os, 5)] = FMA(KP989821441, T1e, T1a);
3308
+ ro[WS(os, 6)] = FNMS(KP989821441, T1e, T1a);
3313
+static const kdft_desc desc = { 11, "n1_11", {30, 0, 110, 0}, &GENUS, 0, 0, 0, 0 };
3315
+void X(codelet_n1_11) (planner *p) {
3316
+ X(kdft_register) (p, n1_11, &desc);
3319
+#else /* HAVE_FMA */
3321
+/* Generated by: ../../../genfft/gen_notw.native -compact -variables 4 -pipeline-latency 4 -n 11 -name n1_11 -include n.h */
3324
+ * This function contains 140 FP additions, 100 FP multiplications,
3325
+ * (or, 60 additions, 20 multiplications, 80 fused multiply/add),
3326
+ * 41 stack variables, 10 constants, and 44 memory accesses
3330
+static void n1_11(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
3332
+ DK(KP654860733, +0.654860733945285064056925072466293553183791199);
3333
+ DK(KP142314838, +0.142314838273285140443792668616369668791051361);
3334
+ DK(KP959492973, +0.959492973614497389890368057066327699062454848);
3335
+ DK(KP415415013, +0.415415013001886425529274149229623203524004910);
3336
+ DK(KP841253532, +0.841253532831181168861811648919367717513292498);
3337
+ DK(KP989821441, +0.989821441880932732376092037776718787376519372);
3338
+ DK(KP909631995, +0.909631995354518371411715383079028460060241051);
3339
+ DK(KP281732556, +0.281732556841429697711417915346616899035777899);
3340
+ DK(KP540640817, +0.540640817455597582107635954318691695431770608);
3341
+ DK(KP755749574, +0.755749574354258283774035843972344420179717445);
3344
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(44, is), MAKE_VOLATILE_STRIDE(44, os)) {
3345
+ E T1, TM, T4, TG, Tk, TR, Tw, TN, T7, TK, Ta, TH, Tn, TQ, Td;
3346
+ E TJ, Tq, TO, Tt, TP, Tg, TI;
3351
+ T2 = ri[WS(is, 1)];
3352
+ T3 = ri[WS(is, 10)];
3355
+ Ti = ii[WS(is, 1)];
3356
+ Tj = ii[WS(is, 10)];
3361
+ Tu = ii[WS(is, 2)];
3362
+ Tv = ii[WS(is, 9)];
3365
+ T5 = ri[WS(is, 2)];
3366
+ T6 = ri[WS(is, 9)];
3373
+ T8 = ri[WS(is, 3)];
3374
+ T9 = ri[WS(is, 8)];
3379
+ Tl = ii[WS(is, 3)];
3380
+ Tm = ii[WS(is, 8)];
3383
+ Tb = ri[WS(is, 4)];
3384
+ Tc = ri[WS(is, 7)];
3388
+ To = ii[WS(is, 4)];
3389
+ Tp = ii[WS(is, 7)];
3394
+ Tr = ii[WS(is, 5)];
3395
+ Ts = ii[WS(is, 6)];
3398
+ Te = ri[WS(is, 5)];
3399
+ Tf = ri[WS(is, 6)];
3405
+ E Tx, Th, TZ, T10;
3406
+ ro[0] = T1 + T4 + T7 + Ta + Td + Tg;
3407
+ io[0] = TM + TR + TN + TQ + TO + TP;
3408
+ Tx = FMA(KP755749574, Tk, KP540640817 * Tn) + FNMS(KP909631995, Tt, KP281732556 * Tq) - (KP989821441 * Tw);
3409
+ Th = FMA(KP841253532, Ta, T1) + FNMS(KP959492973, Td, KP415415013 * Tg) + FNMA(KP142314838, T7, KP654860733 * T4);
3410
+ ro[WS(os, 7)] = Th - Tx;
3411
+ ro[WS(os, 4)] = Th + Tx;
3412
+ TZ = FMA(KP755749574, TG, KP540640817 * TH) + FNMS(KP909631995, TI, KP281732556 * TJ) - (KP989821441 * TK);
3413
+ T10 = FMA(KP841253532, TQ, TM) + FNMS(KP959492973, TO, KP415415013 * TP) + FNMA(KP142314838, TN, KP654860733 * TR);
3414
+ io[WS(os, 4)] = TZ + T10;
3415
+ io[WS(os, 7)] = T10 - TZ;
3418
+ TX = FMA(KP909631995, TG, KP755749574 * TK) + FNMA(KP540640817, TI, KP989821441 * TJ) - (KP281732556 * TH);
3419
+ TY = FMA(KP415415013, TR, TM) + FNMS(KP142314838, TO, KP841253532 * TP) + FNMA(KP959492973, TQ, KP654860733 * TN);
3420
+ io[WS(os, 2)] = TX + TY;
3421
+ io[WS(os, 9)] = TY - TX;
3422
+ Tz = FMA(KP909631995, Tk, KP755749574 * Tw) + FNMA(KP540640817, Tt, KP989821441 * Tq) - (KP281732556 * Tn);
3423
+ Ty = FMA(KP415415013, T4, T1) + FNMS(KP142314838, Td, KP841253532 * Tg) + FNMA(KP959492973, Ta, KP654860733 * T7);
3424
+ ro[WS(os, 9)] = Ty - Tz;
3425
+ ro[WS(os, 2)] = Ty + Tz;
3430
+ TB = FMA(KP540640817, Tk, KP909631995 * Tw) + FMA(KP989821441, Tn, KP755749574 * Tq) + (KP281732556 * Tt);
3431
+ TA = FMA(KP841253532, T4, T1) + FNMS(KP959492973, Tg, KP415415013 * T7) + FNMA(KP654860733, Td, KP142314838 * Ta);
3432
+ ro[WS(os, 10)] = TA - TB;
3433
+ ro[WS(os, 1)] = TA + TB;
3436
+ TV = FMA(KP540640817, TG, KP909631995 * TK) + FMA(KP989821441, TH, KP755749574 * TJ) + (KP281732556 * TI);
3437
+ TW = FMA(KP841253532, TR, TM) + FNMS(KP959492973, TP, KP415415013 * TN) + FNMA(KP654860733, TO, KP142314838 * TQ);
3438
+ io[WS(os, 1)] = TV + TW;
3439
+ io[WS(os, 10)] = TW - TV;
3440
+ TD = FMA(KP989821441, Tk, KP540640817 * Tq) + FNMS(KP909631995, Tn, KP755749574 * Tt) - (KP281732556 * Tw);
3441
+ TC = FMA(KP415415013, Ta, T1) + FNMS(KP654860733, Tg, KP841253532 * Td) + FNMA(KP959492973, T7, KP142314838 * T4);
3442
+ ro[WS(os, 8)] = TC - TD;
3443
+ ro[WS(os, 3)] = TC + TD;
3445
+ TT = FMA(KP989821441, TG, KP540640817 * TJ) + FNMS(KP909631995, TH, KP755749574 * TI) - (KP281732556 * TK);
3446
+ TU = FMA(KP415415013, TQ, TM) + FNMS(KP654860733, TP, KP841253532 * TO) + FNMA(KP959492973, TN, KP142314838 * TR);
3447
+ io[WS(os, 3)] = TT + TU;
3448
+ io[WS(os, 8)] = TU - TT;
3451
+ TL = FMA(KP281732556, TG, KP755749574 * TH) + FNMS(KP909631995, TJ, KP989821441 * TI) - (KP540640817 * TK);
3452
+ TS = FMA(KP841253532, TN, TM) + FNMS(KP142314838, TP, KP415415013 * TO) + FNMA(KP654860733, TQ, KP959492973 * TR);
3453
+ io[WS(os, 5)] = TL + TS;
3454
+ io[WS(os, 6)] = TS - TL;
3455
+ TF = FMA(KP281732556, Tk, KP755749574 * Tn) + FNMS(KP909631995, Tq, KP989821441 * Tt) - (KP540640817 * Tw);
3456
+ TE = FMA(KP841253532, T7, T1) + FNMS(KP142314838, Tg, KP415415013 * Td) + FNMA(KP654860733, Ta, KP959492973 * T4);
3457
+ ro[WS(os, 6)] = TE - TF;
3458
+ ro[WS(os, 5)] = TE + TF;
3465
+static const kdft_desc desc = { 11, "n1_11", {60, 20, 80, 0}, &GENUS, 0, 0, 0, 0 };
3467
+void X(codelet_n1_11) (planner *p) {
3468
+ X(kdft_register) (p, n1_11, &desc);
3471
+#endif /* HAVE_FMA */
3473
=== added file 'dft/scalar/codelets/n1_12.c'
3474
--- old/dft/scalar/codelets/n1_12.c 1970-01-01 00:00:00 +0000
3475
+++ new/dft/scalar/codelets/n1_12.c 2016-01-09 21:00:29 +0000
3478
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
3479
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
3481
+ * This program is free software; you can redistribute it and/or modify
3482
+ * it under the terms of the GNU General Public License as published by
3483
+ * the Free Software Foundation; either version 2 of the License, or
3484
+ * (at your option) any later version.
3486
+ * This program is distributed in the hope that it will be useful,
3487
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3488
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3489
+ * GNU General Public License for more details.
3491
+ * You should have received a copy of the GNU General Public License
3492
+ * along with this program; if not, write to the Free Software
3493
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3497
+/* This file was automatically generated --- DO NOT EDIT */
3498
+/* Generated on Sat Jan 9 16:00:29 EST 2016 */
3500
+#include "codelet-dft.h"
3504
+/* Generated by: ../../../genfft/gen_notw.native -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -n 12 -name n1_12 -include n.h */
3507
+ * This function contains 96 FP additions, 24 FP multiplications,
3508
+ * (or, 72 additions, 0 multiplications, 24 fused multiply/add),
3509
+ * 63 stack variables, 2 constants, and 48 memory accesses
3513
+static void n1_12(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
3515
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
3516
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
3519
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(48, is), MAKE_VOLATILE_STRIDE(48, os)) {
3520
+ E TT, TW, TF, T1q, TY, TQ, TX, T1n;
3522
+ E TA, TS, TR, T5, Ts, Tz, TD, TV, TU, Ta, Tx, TC, T1d, Th, TJ;
3523
+ E TG, Tg, T1u, T1c, T1f, TM, TN, Tk, T1i;
3525
+ E T6, Tt, Tu, Tv, T9;