~dobey/fftw3/packaging-dailies

« back to all changes in this revision

Viewing changes to patches/fftw3-pregenfft.patch

  • Committer: Rodney Dawes
  • Date: 2016-01-10 03:29:06 UTC
  • Revision ID: dobey@wayofthemonkey.com-20160110032906-9g4ia2sqccnqix0u
Import some generated files to avoid ocmal dep.
Cheat and build the docs even without maintainer-mode.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
4
@@ -0,0 +1,72 @@
 
5
+      INTEGER FFTW_R2HC
 
6
+      PARAMETER (FFTW_R2HC=0)
 
7
+      INTEGER FFTW_HC2R
 
8
+      PARAMETER (FFTW_HC2R=1)
 
9
+      INTEGER FFTW_DHT
 
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)
 
77
 
 
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
 
81
@@ -0,0 +1,1252 @@
 
82
+! Generated automatically.  DO NOT EDIT!
 
83
+
 
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
 
120
+
 
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
 
127
+
 
128
+  interface
 
129
+    type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftw_plan_dft')
 
130
+      import
 
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
 
138
+    
 
139
+    type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d')
 
140
+      import
 
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
 
147
+    
 
148
+    type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftw_plan_dft_2d')
 
149
+      import
 
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
 
157
+    
 
158
+    type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftw_plan_dft_3d')
 
159
+      import
 
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
 
168
+    
 
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')
 
171
+      import
 
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
 
186
+    
 
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')
 
189
+      import
 
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
 
199
+    
 
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')
 
202
+      import
 
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
 
213
+    
 
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')
 
216
+      import
 
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
 
226
+    
 
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')
 
229
+      import
 
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
 
240
+    
 
241
+    subroutine fftw_execute_dft(p,in,out) bind(C, name='fftw_execute_dft')
 
242
+      import
 
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
 
247
+    
 
248
+    subroutine fftw_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftw_execute_split_dft')
 
249
+      import
 
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
 
256
+    
 
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')
 
259
+      import
 
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
 
273
+    
 
274
+    type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_r2c')
 
275
+      import
 
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
 
282
+    
 
283
+    type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_r2c_1d')
 
284
+      import
 
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
 
290
+    
 
291
+    type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_r2c_2d')
 
292
+      import
 
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
 
299
+    
 
300
+    type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_r2c_3d')
 
301
+      import
 
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
 
309
+    
 
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')
 
312
+      import
 
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
 
326
+    
 
327
+    type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_c2r')
 
328
+      import
 
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
 
335
+    
 
336
+    type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_c2r_1d')
 
337
+      import
 
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
 
343
+    
 
344
+    type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_c2r_2d')
 
345
+      import
 
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
 
352
+    
 
353
+    type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_c2r_3d')
 
354
+      import
 
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
 
362
+    
 
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')
 
365
+      import
 
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
 
374
+    
 
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')
 
377
+      import
 
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
 
386
+    
 
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')
 
389
+      import
 
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
 
399
+    
 
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')
 
402
+      import
 
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
 
412
+    
 
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')
 
415
+      import
 
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
 
424
+    
 
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')
 
427
+      import
 
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
 
436
+    
 
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')
 
439
+      import
 
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
 
449
+    
 
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')
 
452
+      import
 
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
 
462
+    
 
463
+    subroutine fftw_execute_dft_r2c(p,in,out) bind(C, name='fftw_execute_dft_r2c')
 
464
+      import
 
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
 
469
+    
 
470
+    subroutine fftw_execute_dft_c2r(p,in,out) bind(C, name='fftw_execute_dft_c2r')
 
471
+      import
 
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
 
476
+    
 
477
+    subroutine fftw_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftw_execute_split_dft_r2c')
 
478
+      import
 
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
 
484
+    
 
485
+    subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftw_execute_split_dft_c2r')
 
486
+      import
 
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
 
492
+    
 
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')
 
495
+      import
 
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
 
510
+    
 
511
+    type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftw_plan_r2r')
 
512
+      import
 
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
 
520
+    
 
521
+    type(C_PTR) function fftw_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftw_plan_r2r_1d')
 
522
+      import
 
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
 
529
+    
 
530
+    type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftw_plan_r2r_2d')
 
531
+      import
 
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
 
540
+    
 
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')
 
542
+      import
 
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
 
553
+    
 
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')
 
556
+      import
 
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
 
566
+    
 
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')
 
569
+      import
 
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
 
579
+    
 
580
+    subroutine fftw_execute_r2r(p,in,out) bind(C, name='fftw_execute_r2r')
 
581
+      import
 
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
 
586
+    
 
587
+    subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan')
 
588
+      import
 
589
+      type(C_PTR), value :: p
 
590
+    end subroutine fftw_destroy_plan
 
591
+    
 
592
+    subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom')
 
593
+      import
 
594
+    end subroutine fftw_forget_wisdom
 
595
+    
 
596
+    subroutine fftw_cleanup() bind(C, name='fftw_cleanup')
 
597
+      import
 
598
+    end subroutine fftw_cleanup
 
599
+    
 
600
+    subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit')
 
601
+      import
 
602
+      real(C_DOUBLE), value :: t
 
603
+    end subroutine fftw_set_timelimit
 
604
+    
 
605
+    subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads')
 
606
+      import
 
607
+      integer(C_INT), value :: nthreads
 
608
+    end subroutine fftw_plan_with_nthreads
 
609
+    
 
610
+    integer(C_INT) function fftw_init_threads() bind(C, name='fftw_init_threads')
 
611
+      import
 
612
+    end function fftw_init_threads
 
613
+    
 
614
+    subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads')
 
615
+      import
 
616
+    end subroutine fftw_cleanup_threads
 
617
+    
 
618
+    subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe')
 
619
+      import
 
620
+    end subroutine fftw_make_planner_thread_safe
 
621
+    
 
622
+    integer(C_INT) function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename')
 
623
+      import
 
624
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
625
+    end function fftw_export_wisdom_to_filename
 
626
+    
 
627
+    subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file')
 
628
+      import
 
629
+      type(C_PTR), value :: output_file
 
630
+    end subroutine fftw_export_wisdom_to_file
 
631
+    
 
632
+    type(C_PTR) function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string')
 
633
+      import
 
634
+    end function fftw_export_wisdom_to_string
 
635
+    
 
636
+    subroutine fftw_export_wisdom(write_char,data) bind(C, name='fftw_export_wisdom')
 
637
+      import
 
638
+      type(C_FUNPTR), value :: write_char
 
639
+      type(C_PTR), value :: data
 
640
+    end subroutine fftw_export_wisdom
 
641
+    
 
642
+    integer(C_INT) function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom')
 
643
+      import
 
644
+    end function fftw_import_system_wisdom
 
645
+    
 
646
+    integer(C_INT) function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename')
 
647
+      import
 
648
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
649
+    end function fftw_import_wisdom_from_filename
 
650
+    
 
651
+    integer(C_INT) function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file')
 
652
+      import
 
653
+      type(C_PTR), value :: input_file
 
654
+    end function fftw_import_wisdom_from_file
 
655
+    
 
656
+    integer(C_INT) function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string')
 
657
+      import
 
658
+      character(C_CHAR), dimension(*), intent(in) :: input_string
 
659
+    end function fftw_import_wisdom_from_string
 
660
+    
 
661
+    integer(C_INT) function fftw_import_wisdom(read_char,data) bind(C, name='fftw_import_wisdom')
 
662
+      import
 
663
+      type(C_FUNPTR), value :: read_char
 
664
+      type(C_PTR), value :: data
 
665
+    end function fftw_import_wisdom
 
666
+    
 
667
+    subroutine fftw_fprint_plan(p,output_file) bind(C, name='fftw_fprint_plan')
 
668
+      import
 
669
+      type(C_PTR), value :: p
 
670
+      type(C_PTR), value :: output_file
 
671
+    end subroutine fftw_fprint_plan
 
672
+    
 
673
+    subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan')
 
674
+      import
 
675
+      type(C_PTR), value :: p
 
676
+    end subroutine fftw_print_plan
 
677
+    
 
678
+    type(C_PTR) function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan')
 
679
+      import
 
680
+      type(C_PTR), value :: p
 
681
+    end function fftw_sprint_plan
 
682
+    
 
683
+    type(C_PTR) function fftw_malloc(n) bind(C, name='fftw_malloc')
 
684
+      import
 
685
+      integer(C_SIZE_T), value :: n
 
686
+    end function fftw_malloc
 
687
+    
 
688
+    type(C_PTR) function fftw_alloc_real(n) bind(C, name='fftw_alloc_real')
 
689
+      import
 
690
+      integer(C_SIZE_T), value :: n
 
691
+    end function fftw_alloc_real
 
692
+    
 
693
+    type(C_PTR) function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex')
 
694
+      import
 
695
+      integer(C_SIZE_T), value :: n
 
696
+    end function fftw_alloc_complex
 
697
+    
 
698
+    subroutine fftw_free(p) bind(C, name='fftw_free')
 
699
+      import
 
700
+      type(C_PTR), value :: p
 
701
+    end subroutine fftw_free
 
702
+    
 
703
+    subroutine fftw_flops(p,add,mul,fmas) bind(C, name='fftw_flops')
 
704
+      import
 
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
 
710
+    
 
711
+    real(C_DOUBLE) function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost')
 
712
+      import
 
713
+      type(C_PTR), value :: p
 
714
+    end function fftw_estimate_cost
 
715
+    
 
716
+    real(C_DOUBLE) function fftw_cost(p) bind(C, name='fftw_cost')
 
717
+      import
 
718
+      type(C_PTR), value :: p
 
719
+    end function fftw_cost
 
720
+    
 
721
+    integer(C_INT) function fftw_alignment_of(p) bind(C, name='fftw_alignment_of')
 
722
+      import
 
723
+      real(C_DOUBLE), dimension(*), intent(out) :: p
 
724
+    end function fftw_alignment_of
 
725
+    
 
726
+  end interface
 
727
+
 
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
 
734
+
 
735
+  interface
 
736
+    type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwf_plan_dft')
 
737
+      import
 
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
 
745
+    
 
746
+    type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwf_plan_dft_1d')
 
747
+      import
 
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
 
754
+    
 
755
+    type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwf_plan_dft_2d')
 
756
+      import
 
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
 
764
+    
 
765
+    type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwf_plan_dft_3d')
 
766
+      import
 
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
 
775
+    
 
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')
 
778
+      import
 
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
 
793
+    
 
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')
 
796
+      import
 
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
 
806
+    
 
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')
 
809
+      import
 
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
 
820
+    
 
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')
 
823
+      import
 
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
 
833
+    
 
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')
 
836
+      import
 
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
 
847
+    
 
848
+    subroutine fftwf_execute_dft(p,in,out) bind(C, name='fftwf_execute_dft')
 
849
+      import
 
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
 
854
+    
 
855
+    subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwf_execute_split_dft')
 
856
+      import
 
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
 
863
+    
 
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')
 
866
+      import
 
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
 
880
+    
 
881
+    type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c')
 
882
+      import
 
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
 
889
+    
 
890
+    type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_1d')
 
891
+      import
 
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
 
897
+    
 
898
+    type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_2d')
 
899
+      import
 
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
 
906
+    
 
907
+    type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_3d')
 
908
+      import
 
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
 
916
+    
 
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')
 
919
+      import
 
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
 
933
+    
 
934
+    type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r')
 
935
+      import
 
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
 
942
+    
 
943
+    type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_1d')
 
944
+      import
 
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
 
950
+    
 
951
+    type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_2d')
 
952
+      import
 
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
 
959
+    
 
960
+    type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_3d')
 
961
+      import
 
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
 
969
+    
 
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')
 
972
+      import
 
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
 
981
+    
 
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')
 
984
+      import
 
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
 
993
+    
 
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')
 
996
+      import
 
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
 
1006
+    
 
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')
 
1009
+      import
 
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
 
1019
+    
 
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')
 
1022
+      import
 
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
 
1031
+    
 
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')
 
1034
+      import
 
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
 
1043
+    
 
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')
 
1046
+      import
 
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
 
1056
+    
 
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')
 
1059
+      import
 
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
 
1069
+    
 
1070
+    subroutine fftwf_execute_dft_r2c(p,in,out) bind(C, name='fftwf_execute_dft_r2c')
 
1071
+      import
 
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
 
1076
+    
 
1077
+    subroutine fftwf_execute_dft_c2r(p,in,out) bind(C, name='fftwf_execute_dft_c2r')
 
1078
+      import
 
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
 
1083
+    
 
1084
+    subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwf_execute_split_dft_r2c')
 
1085
+      import
 
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
 
1091
+    
 
1092
+    subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwf_execute_split_dft_c2r')
 
1093
+      import
 
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
 
1099
+    
 
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')
 
1102
+      import
 
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
 
1117
+    
 
1118
+    type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r')
 
1119
+      import
 
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
 
1127
+    
 
1128
+    type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r_1d')
 
1129
+      import
 
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
 
1136
+    
 
1137
+    type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwf_plan_r2r_2d')
 
1138
+      import
 
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
 
1147
+    
 
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')
 
1149
+      import
 
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
 
1160
+    
 
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')
 
1163
+      import
 
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
 
1173
+    
 
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')
 
1176
+      import
 
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
 
1186
+    
 
1187
+    subroutine fftwf_execute_r2r(p,in,out) bind(C, name='fftwf_execute_r2r')
 
1188
+      import
 
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
 
1193
+    
 
1194
+    subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan')
 
1195
+      import
 
1196
+      type(C_PTR), value :: p
 
1197
+    end subroutine fftwf_destroy_plan
 
1198
+    
 
1199
+    subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom')
 
1200
+      import
 
1201
+    end subroutine fftwf_forget_wisdom
 
1202
+    
 
1203
+    subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup')
 
1204
+      import
 
1205
+    end subroutine fftwf_cleanup
 
1206
+    
 
1207
+    subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit')
 
1208
+      import
 
1209
+      real(C_DOUBLE), value :: t
 
1210
+    end subroutine fftwf_set_timelimit
 
1211
+    
 
1212
+    subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads')
 
1213
+      import
 
1214
+      integer(C_INT), value :: nthreads
 
1215
+    end subroutine fftwf_plan_with_nthreads
 
1216
+    
 
1217
+    integer(C_INT) function fftwf_init_threads() bind(C, name='fftwf_init_threads')
 
1218
+      import
 
1219
+    end function fftwf_init_threads
 
1220
+    
 
1221
+    subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads')
 
1222
+      import
 
1223
+    end subroutine fftwf_cleanup_threads
 
1224
+    
 
1225
+    subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe')
 
1226
+      import
 
1227
+    end subroutine fftwf_make_planner_thread_safe
 
1228
+    
 
1229
+    integer(C_INT) function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename')
 
1230
+      import
 
1231
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
1232
+    end function fftwf_export_wisdom_to_filename
 
1233
+    
 
1234
+    subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file')
 
1235
+      import
 
1236
+      type(C_PTR), value :: output_file
 
1237
+    end subroutine fftwf_export_wisdom_to_file
 
1238
+    
 
1239
+    type(C_PTR) function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string')
 
1240
+      import
 
1241
+    end function fftwf_export_wisdom_to_string
 
1242
+    
 
1243
+    subroutine fftwf_export_wisdom(write_char,data) bind(C, name='fftwf_export_wisdom')
 
1244
+      import
 
1245
+      type(C_FUNPTR), value :: write_char
 
1246
+      type(C_PTR), value :: data
 
1247
+    end subroutine fftwf_export_wisdom
 
1248
+    
 
1249
+    integer(C_INT) function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom')
 
1250
+      import
 
1251
+    end function fftwf_import_system_wisdom
 
1252
+    
 
1253
+    integer(C_INT) function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename')
 
1254
+      import
 
1255
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
1256
+    end function fftwf_import_wisdom_from_filename
 
1257
+    
 
1258
+    integer(C_INT) function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file')
 
1259
+      import
 
1260
+      type(C_PTR), value :: input_file
 
1261
+    end function fftwf_import_wisdom_from_file
 
1262
+    
 
1263
+    integer(C_INT) function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string')
 
1264
+      import
 
1265
+      character(C_CHAR), dimension(*), intent(in) :: input_string
 
1266
+    end function fftwf_import_wisdom_from_string
 
1267
+    
 
1268
+    integer(C_INT) function fftwf_import_wisdom(read_char,data) bind(C, name='fftwf_import_wisdom')
 
1269
+      import
 
1270
+      type(C_FUNPTR), value :: read_char
 
1271
+      type(C_PTR), value :: data
 
1272
+    end function fftwf_import_wisdom
 
1273
+    
 
1274
+    subroutine fftwf_fprint_plan(p,output_file) bind(C, name='fftwf_fprint_plan')
 
1275
+      import
 
1276
+      type(C_PTR), value :: p
 
1277
+      type(C_PTR), value :: output_file
 
1278
+    end subroutine fftwf_fprint_plan
 
1279
+    
 
1280
+    subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan')
 
1281
+      import
 
1282
+      type(C_PTR), value :: p
 
1283
+    end subroutine fftwf_print_plan
 
1284
+    
 
1285
+    type(C_PTR) function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan')
 
1286
+      import
 
1287
+      type(C_PTR), value :: p
 
1288
+    end function fftwf_sprint_plan
 
1289
+    
 
1290
+    type(C_PTR) function fftwf_malloc(n) bind(C, name='fftwf_malloc')
 
1291
+      import
 
1292
+      integer(C_SIZE_T), value :: n
 
1293
+    end function fftwf_malloc
 
1294
+    
 
1295
+    type(C_PTR) function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real')
 
1296
+      import
 
1297
+      integer(C_SIZE_T), value :: n
 
1298
+    end function fftwf_alloc_real
 
1299
+    
 
1300
+    type(C_PTR) function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex')
 
1301
+      import
 
1302
+      integer(C_SIZE_T), value :: n
 
1303
+    end function fftwf_alloc_complex
 
1304
+    
 
1305
+    subroutine fftwf_free(p) bind(C, name='fftwf_free')
 
1306
+      import
 
1307
+      type(C_PTR), value :: p
 
1308
+    end subroutine fftwf_free
 
1309
+    
 
1310
+    subroutine fftwf_flops(p,add,mul,fmas) bind(C, name='fftwf_flops')
 
1311
+      import
 
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
 
1317
+    
 
1318
+    real(C_DOUBLE) function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost')
 
1319
+      import
 
1320
+      type(C_PTR), value :: p
 
1321
+    end function fftwf_estimate_cost
 
1322
+    
 
1323
+    real(C_DOUBLE) function fftwf_cost(p) bind(C, name='fftwf_cost')
 
1324
+      import
 
1325
+      type(C_PTR), value :: p
 
1326
+    end function fftwf_cost
 
1327
+    
 
1328
+    integer(C_INT) function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of')
 
1329
+      import
 
1330
+      real(C_FLOAT), dimension(*), intent(out) :: p
 
1331
+    end function fftwf_alignment_of
 
1332
+    
 
1333
+  end interface
 
1334
 
 
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
 
1338
@@ -0,0 +1,609 @@
 
1339
+! Generated automatically.  DO NOT EDIT!
 
1340
+
 
1341
+
 
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
 
1348
+
 
1349
+  interface
 
1350
+    type(C_PTR) function fftwl_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwl_plan_dft')
 
1351
+      import
 
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
 
1359
+    
 
1360
+    type(C_PTR) function fftwl_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwl_plan_dft_1d')
 
1361
+      import
 
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
 
1368
+    
 
1369
+    type(C_PTR) function fftwl_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwl_plan_dft_2d')
 
1370
+      import
 
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
 
1378
+    
 
1379
+    type(C_PTR) function fftwl_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwl_plan_dft_3d')
 
1380
+      import
 
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
 
1389
+    
 
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')
 
1392
+      import
 
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
 
1407
+    
 
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')
 
1410
+      import
 
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
 
1420
+    
 
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')
 
1423
+      import
 
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
 
1434
+    
 
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')
 
1437
+      import
 
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
 
1447
+    
 
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')
 
1450
+      import
 
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
 
1461
+    
 
1462
+    subroutine fftwl_execute_dft(p,in,out) bind(C, name='fftwl_execute_dft')
 
1463
+      import
 
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
 
1468
+    
 
1469
+    subroutine fftwl_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwl_execute_split_dft')
 
1470
+      import
 
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
 
1477
+    
 
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')
 
1480
+      import
 
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
 
1494
+    
 
1495
+    type(C_PTR) function fftwl_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwl_plan_dft_r2c')
 
1496
+      import
 
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
 
1503
+    
 
1504
+    type(C_PTR) function fftwl_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_1d')
 
1505
+      import
 
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
 
1511
+    
 
1512
+    type(C_PTR) function fftwl_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_2d')
 
1513
+      import
 
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
 
1520
+    
 
1521
+    type(C_PTR) function fftwl_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwl_plan_dft_r2c_3d')
 
1522
+      import
 
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
 
1530
+    
 
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')
 
1533
+      import
 
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
 
1547
+    
 
1548
+    type(C_PTR) function fftwl_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwl_plan_dft_c2r')
 
1549
+      import
 
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
 
1556
+    
 
1557
+    type(C_PTR) function fftwl_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_1d')
 
1558
+      import
 
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
 
1564
+    
 
1565
+    type(C_PTR) function fftwl_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_2d')
 
1566
+      import
 
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
 
1573
+    
 
1574
+    type(C_PTR) function fftwl_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwl_plan_dft_c2r_3d')
 
1575
+      import
 
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
 
1583
+    
 
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')
 
1586
+      import
 
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
 
1595
+    
 
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')
 
1598
+      import
 
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
 
1607
+    
 
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')
 
1610
+      import
 
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
 
1620
+    
 
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')
 
1623
+      import
 
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
 
1633
+    
 
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')
 
1636
+      import
 
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
 
1645
+    
 
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')
 
1648
+      import
 
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
 
1657
+    
 
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')
 
1660
+      import
 
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
 
1670
+    
 
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')
 
1673
+      import
 
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
 
1683
+    
 
1684
+    subroutine fftwl_execute_dft_r2c(p,in,out) bind(C, name='fftwl_execute_dft_r2c')
 
1685
+      import
 
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
 
1690
+    
 
1691
+    subroutine fftwl_execute_dft_c2r(p,in,out) bind(C, name='fftwl_execute_dft_c2r')
 
1692
+      import
 
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
 
1697
+    
 
1698
+    subroutine fftwl_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwl_execute_split_dft_r2c')
 
1699
+      import
 
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
 
1705
+    
 
1706
+    subroutine fftwl_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwl_execute_split_dft_c2r')
 
1707
+      import
 
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
 
1713
+    
 
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')
 
1716
+      import
 
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
 
1731
+    
 
1732
+    type(C_PTR) function fftwl_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwl_plan_r2r')
 
1733
+      import
 
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
 
1741
+    
 
1742
+    type(C_PTR) function fftwl_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwl_plan_r2r_1d')
 
1743
+      import
 
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
 
1750
+    
 
1751
+    type(C_PTR) function fftwl_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwl_plan_r2r_2d')
 
1752
+      import
 
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
 
1761
+    
 
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')
 
1763
+      import
 
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
 
1774
+    
 
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')
 
1777
+      import
 
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
 
1787
+    
 
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')
 
1790
+      import
 
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
 
1800
+    
 
1801
+    subroutine fftwl_execute_r2r(p,in,out) bind(C, name='fftwl_execute_r2r')
 
1802
+      import
 
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
 
1807
+    
 
1808
+    subroutine fftwl_destroy_plan(p) bind(C, name='fftwl_destroy_plan')
 
1809
+      import
 
1810
+      type(C_PTR), value :: p
 
1811
+    end subroutine fftwl_destroy_plan
 
1812
+    
 
1813
+    subroutine fftwl_forget_wisdom() bind(C, name='fftwl_forget_wisdom')
 
1814
+      import
 
1815
+    end subroutine fftwl_forget_wisdom
 
1816
+    
 
1817
+    subroutine fftwl_cleanup() bind(C, name='fftwl_cleanup')
 
1818
+      import
 
1819
+    end subroutine fftwl_cleanup
 
1820
+    
 
1821
+    subroutine fftwl_set_timelimit(t) bind(C, name='fftwl_set_timelimit')
 
1822
+      import
 
1823
+      real(C_DOUBLE), value :: t
 
1824
+    end subroutine fftwl_set_timelimit
 
1825
+    
 
1826
+    subroutine fftwl_plan_with_nthreads(nthreads) bind(C, name='fftwl_plan_with_nthreads')
 
1827
+      import
 
1828
+      integer(C_INT), value :: nthreads
 
1829
+    end subroutine fftwl_plan_with_nthreads
 
1830
+    
 
1831
+    integer(C_INT) function fftwl_init_threads() bind(C, name='fftwl_init_threads')
 
1832
+      import
 
1833
+    end function fftwl_init_threads
 
1834
+    
 
1835
+    subroutine fftwl_cleanup_threads() bind(C, name='fftwl_cleanup_threads')
 
1836
+      import
 
1837
+    end subroutine fftwl_cleanup_threads
 
1838
+    
 
1839
+    subroutine fftwl_make_planner_thread_safe() bind(C, name='fftwl_make_planner_thread_safe')
 
1840
+      import
 
1841
+    end subroutine fftwl_make_planner_thread_safe
 
1842
+    
 
1843
+    integer(C_INT) function fftwl_export_wisdom_to_filename(filename) bind(C, name='fftwl_export_wisdom_to_filename')
 
1844
+      import
 
1845
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
1846
+    end function fftwl_export_wisdom_to_filename
 
1847
+    
 
1848
+    subroutine fftwl_export_wisdom_to_file(output_file) bind(C, name='fftwl_export_wisdom_to_file')
 
1849
+      import
 
1850
+      type(C_PTR), value :: output_file
 
1851
+    end subroutine fftwl_export_wisdom_to_file
 
1852
+    
 
1853
+    type(C_PTR) function fftwl_export_wisdom_to_string() bind(C, name='fftwl_export_wisdom_to_string')
 
1854
+      import
 
1855
+    end function fftwl_export_wisdom_to_string
 
1856
+    
 
1857
+    subroutine fftwl_export_wisdom(write_char,data) bind(C, name='fftwl_export_wisdom')
 
1858
+      import
 
1859
+      type(C_FUNPTR), value :: write_char
 
1860
+      type(C_PTR), value :: data
 
1861
+    end subroutine fftwl_export_wisdom
 
1862
+    
 
1863
+    integer(C_INT) function fftwl_import_system_wisdom() bind(C, name='fftwl_import_system_wisdom')
 
1864
+      import
 
1865
+    end function fftwl_import_system_wisdom
 
1866
+    
 
1867
+    integer(C_INT) function fftwl_import_wisdom_from_filename(filename) bind(C, name='fftwl_import_wisdom_from_filename')
 
1868
+      import
 
1869
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
1870
+    end function fftwl_import_wisdom_from_filename
 
1871
+    
 
1872
+    integer(C_INT) function fftwl_import_wisdom_from_file(input_file) bind(C, name='fftwl_import_wisdom_from_file')
 
1873
+      import
 
1874
+      type(C_PTR), value :: input_file
 
1875
+    end function fftwl_import_wisdom_from_file
 
1876
+    
 
1877
+    integer(C_INT) function fftwl_import_wisdom_from_string(input_string) bind(C, name='fftwl_import_wisdom_from_string')
 
1878
+      import
 
1879
+      character(C_CHAR), dimension(*), intent(in) :: input_string
 
1880
+    end function fftwl_import_wisdom_from_string
 
1881
+    
 
1882
+    integer(C_INT) function fftwl_import_wisdom(read_char,data) bind(C, name='fftwl_import_wisdom')
 
1883
+      import
 
1884
+      type(C_FUNPTR), value :: read_char
 
1885
+      type(C_PTR), value :: data
 
1886
+    end function fftwl_import_wisdom
 
1887
+    
 
1888
+    subroutine fftwl_fprint_plan(p,output_file) bind(C, name='fftwl_fprint_plan')
 
1889
+      import
 
1890
+      type(C_PTR), value :: p
 
1891
+      type(C_PTR), value :: output_file
 
1892
+    end subroutine fftwl_fprint_plan
 
1893
+    
 
1894
+    subroutine fftwl_print_plan(p) bind(C, name='fftwl_print_plan')
 
1895
+      import
 
1896
+      type(C_PTR), value :: p
 
1897
+    end subroutine fftwl_print_plan
 
1898
+    
 
1899
+    type(C_PTR) function fftwl_sprint_plan(p) bind(C, name='fftwl_sprint_plan')
 
1900
+      import
 
1901
+      type(C_PTR), value :: p
 
1902
+    end function fftwl_sprint_plan
 
1903
+    
 
1904
+    type(C_PTR) function fftwl_malloc(n) bind(C, name='fftwl_malloc')
 
1905
+      import
 
1906
+      integer(C_SIZE_T), value :: n
 
1907
+    end function fftwl_malloc
 
1908
+    
 
1909
+    type(C_PTR) function fftwl_alloc_real(n) bind(C, name='fftwl_alloc_real')
 
1910
+      import
 
1911
+      integer(C_SIZE_T), value :: n
 
1912
+    end function fftwl_alloc_real
 
1913
+    
 
1914
+    type(C_PTR) function fftwl_alloc_complex(n) bind(C, name='fftwl_alloc_complex')
 
1915
+      import
 
1916
+      integer(C_SIZE_T), value :: n
 
1917
+    end function fftwl_alloc_complex
 
1918
+    
 
1919
+    subroutine fftwl_free(p) bind(C, name='fftwl_free')
 
1920
+      import
 
1921
+      type(C_PTR), value :: p
 
1922
+    end subroutine fftwl_free
 
1923
+    
 
1924
+    subroutine fftwl_flops(p,add,mul,fmas) bind(C, name='fftwl_flops')
 
1925
+      import
 
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
 
1931
+    
 
1932
+    real(C_DOUBLE) function fftwl_estimate_cost(p) bind(C, name='fftwl_estimate_cost')
 
1933
+      import
 
1934
+      type(C_PTR), value :: p
 
1935
+    end function fftwl_estimate_cost
 
1936
+    
 
1937
+    real(C_DOUBLE) function fftwl_cost(p) bind(C, name='fftwl_cost')
 
1938
+      import
 
1939
+      type(C_PTR), value :: p
 
1940
+    end function fftwl_cost
 
1941
+    
 
1942
+    integer(C_INT) function fftwl_alignment_of(p) bind(C, name='fftwl_alignment_of')
 
1943
+      import
 
1944
+      real(C_LONG_DOUBLE), dimension(*), intent(out) :: p
 
1945
+    end function fftwl_alignment_of
 
1946
+    
 
1947
+  end interface
 
1948
 
 
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
 
1952
@@ -0,0 +1,609 @@
 
1953
+! Generated automatically.  DO NOT EDIT!
 
1954
+
 
1955
+
 
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
 
1962
+
 
1963
+  interface
 
1964
+    type(C_PTR) function fftwq_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwq_plan_dft')
 
1965
+      import
 
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
 
1973
+    
 
1974
+    type(C_PTR) function fftwq_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwq_plan_dft_1d')
 
1975
+      import
 
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
 
1982
+    
 
1983
+    type(C_PTR) function fftwq_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwq_plan_dft_2d')
 
1984
+      import
 
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
 
1992
+    
 
1993
+    type(C_PTR) function fftwq_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwq_plan_dft_3d')
 
1994
+      import
 
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
 
2003
+    
 
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')
 
2006
+      import
 
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
 
2021
+    
 
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')
 
2024
+      import
 
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
 
2034
+    
 
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')
 
2037
+      import
 
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
 
2048
+    
 
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')
 
2051
+      import
 
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
 
2061
+    
 
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')
 
2064
+      import
 
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
 
2075
+    
 
2076
+    subroutine fftwq_execute_dft(p,in,out) bind(C, name='fftwq_execute_dft')
 
2077
+      import
 
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
 
2082
+    
 
2083
+    subroutine fftwq_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwq_execute_split_dft')
 
2084
+      import
 
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
 
2091
+    
 
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')
 
2094
+      import
 
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
 
2108
+    
 
2109
+    type(C_PTR) function fftwq_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c')
 
2110
+      import
 
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
 
2117
+    
 
2118
+    type(C_PTR) function fftwq_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_1d')
 
2119
+      import
 
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
 
2125
+    
 
2126
+    type(C_PTR) function fftwq_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_2d')
 
2127
+      import
 
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
 
2134
+    
 
2135
+    type(C_PTR) function fftwq_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_3d')
 
2136
+      import
 
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
 
2144
+    
 
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')
 
2147
+      import
 
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
 
2161
+    
 
2162
+    type(C_PTR) function fftwq_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r')
 
2163
+      import
 
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
 
2170
+    
 
2171
+    type(C_PTR) function fftwq_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_1d')
 
2172
+      import
 
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
 
2178
+    
 
2179
+    type(C_PTR) function fftwq_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_2d')
 
2180
+      import
 
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
 
2187
+    
 
2188
+    type(C_PTR) function fftwq_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_3d')
 
2189
+      import
 
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
 
2197
+    
 
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')
 
2200
+      import
 
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
 
2209
+    
 
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')
 
2212
+      import
 
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
 
2221
+    
 
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')
 
2224
+      import
 
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
 
2234
+    
 
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')
 
2237
+      import
 
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
 
2247
+    
 
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')
 
2250
+      import
 
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
 
2259
+    
 
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')
 
2262
+      import
 
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
 
2271
+    
 
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')
 
2274
+      import
 
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
 
2284
+    
 
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')
 
2287
+      import
 
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
 
2297
+    
 
2298
+    subroutine fftwq_execute_dft_r2c(p,in,out) bind(C, name='fftwq_execute_dft_r2c')
 
2299
+      import
 
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
 
2304
+    
 
2305
+    subroutine fftwq_execute_dft_c2r(p,in,out) bind(C, name='fftwq_execute_dft_c2r')
 
2306
+      import
 
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
 
2311
+    
 
2312
+    subroutine fftwq_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwq_execute_split_dft_r2c')
 
2313
+      import
 
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
 
2319
+    
 
2320
+    subroutine fftwq_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwq_execute_split_dft_c2r')
 
2321
+      import
 
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
 
2327
+    
 
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')
 
2330
+      import
 
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
 
2345
+    
 
2346
+    type(C_PTR) function fftwq_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r')
 
2347
+      import
 
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
 
2355
+    
 
2356
+    type(C_PTR) function fftwq_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r_1d')
 
2357
+      import
 
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
 
2364
+    
 
2365
+    type(C_PTR) function fftwq_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwq_plan_r2r_2d')
 
2366
+      import
 
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
 
2375
+    
 
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')
 
2377
+      import
 
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
 
2388
+    
 
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')
 
2391
+      import
 
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
 
2401
+    
 
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')
 
2404
+      import
 
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
 
2414
+    
 
2415
+    subroutine fftwq_execute_r2r(p,in,out) bind(C, name='fftwq_execute_r2r')
 
2416
+      import
 
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
 
2421
+    
 
2422
+    subroutine fftwq_destroy_plan(p) bind(C, name='fftwq_destroy_plan')
 
2423
+      import
 
2424
+      type(C_PTR), value :: p
 
2425
+    end subroutine fftwq_destroy_plan
 
2426
+    
 
2427
+    subroutine fftwq_forget_wisdom() bind(C, name='fftwq_forget_wisdom')
 
2428
+      import
 
2429
+    end subroutine fftwq_forget_wisdom
 
2430
+    
 
2431
+    subroutine fftwq_cleanup() bind(C, name='fftwq_cleanup')
 
2432
+      import
 
2433
+    end subroutine fftwq_cleanup
 
2434
+    
 
2435
+    subroutine fftwq_set_timelimit(t) bind(C, name='fftwq_set_timelimit')
 
2436
+      import
 
2437
+      real(C_DOUBLE), value :: t
 
2438
+    end subroutine fftwq_set_timelimit
 
2439
+    
 
2440
+    subroutine fftwq_plan_with_nthreads(nthreads) bind(C, name='fftwq_plan_with_nthreads')
 
2441
+      import
 
2442
+      integer(C_INT), value :: nthreads
 
2443
+    end subroutine fftwq_plan_with_nthreads
 
2444
+    
 
2445
+    integer(C_INT) function fftwq_init_threads() bind(C, name='fftwq_init_threads')
 
2446
+      import
 
2447
+    end function fftwq_init_threads
 
2448
+    
 
2449
+    subroutine fftwq_cleanup_threads() bind(C, name='fftwq_cleanup_threads')
 
2450
+      import
 
2451
+    end subroutine fftwq_cleanup_threads
 
2452
+    
 
2453
+    subroutine fftwq_make_planner_thread_safe() bind(C, name='fftwq_make_planner_thread_safe')
 
2454
+      import
 
2455
+    end subroutine fftwq_make_planner_thread_safe
 
2456
+    
 
2457
+    integer(C_INT) function fftwq_export_wisdom_to_filename(filename) bind(C, name='fftwq_export_wisdom_to_filename')
 
2458
+      import
 
2459
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
2460
+    end function fftwq_export_wisdom_to_filename
 
2461
+    
 
2462
+    subroutine fftwq_export_wisdom_to_file(output_file) bind(C, name='fftwq_export_wisdom_to_file')
 
2463
+      import
 
2464
+      type(C_PTR), value :: output_file
 
2465
+    end subroutine fftwq_export_wisdom_to_file
 
2466
+    
 
2467
+    type(C_PTR) function fftwq_export_wisdom_to_string() bind(C, name='fftwq_export_wisdom_to_string')
 
2468
+      import
 
2469
+    end function fftwq_export_wisdom_to_string
 
2470
+    
 
2471
+    subroutine fftwq_export_wisdom(write_char,data) bind(C, name='fftwq_export_wisdom')
 
2472
+      import
 
2473
+      type(C_FUNPTR), value :: write_char
 
2474
+      type(C_PTR), value :: data
 
2475
+    end subroutine fftwq_export_wisdom
 
2476
+    
 
2477
+    integer(C_INT) function fftwq_import_system_wisdom() bind(C, name='fftwq_import_system_wisdom')
 
2478
+      import
 
2479
+    end function fftwq_import_system_wisdom
 
2480
+    
 
2481
+    integer(C_INT) function fftwq_import_wisdom_from_filename(filename) bind(C, name='fftwq_import_wisdom_from_filename')
 
2482
+      import
 
2483
+      character(C_CHAR), dimension(*), intent(in) :: filename
 
2484
+    end function fftwq_import_wisdom_from_filename
 
2485
+    
 
2486
+    integer(C_INT) function fftwq_import_wisdom_from_file(input_file) bind(C, name='fftwq_import_wisdom_from_file')
 
2487
+      import
 
2488
+      type(C_PTR), value :: input_file
 
2489
+    end function fftwq_import_wisdom_from_file
 
2490
+    
 
2491
+    integer(C_INT) function fftwq_import_wisdom_from_string(input_string) bind(C, name='fftwq_import_wisdom_from_string')
 
2492
+      import
 
2493
+      character(C_CHAR), dimension(*), intent(in) :: input_string
 
2494
+    end function fftwq_import_wisdom_from_string
 
2495
+    
 
2496
+    integer(C_INT) function fftwq_import_wisdom(read_char,data) bind(C, name='fftwq_import_wisdom')
 
2497
+      import
 
2498
+      type(C_FUNPTR), value :: read_char
 
2499
+      type(C_PTR), value :: data
 
2500
+    end function fftwq_import_wisdom
 
2501
+    
 
2502
+    subroutine fftwq_fprint_plan(p,output_file) bind(C, name='fftwq_fprint_plan')
 
2503
+      import
 
2504
+      type(C_PTR), value :: p
 
2505
+      type(C_PTR), value :: output_file
 
2506
+    end subroutine fftwq_fprint_plan
 
2507
+    
 
2508
+    subroutine fftwq_print_plan(p) bind(C, name='fftwq_print_plan')
 
2509
+      import
 
2510
+      type(C_PTR), value :: p
 
2511
+    end subroutine fftwq_print_plan
 
2512
+    
 
2513
+    type(C_PTR) function fftwq_sprint_plan(p) bind(C, name='fftwq_sprint_plan')
 
2514
+      import
 
2515
+      type(C_PTR), value :: p
 
2516
+    end function fftwq_sprint_plan
 
2517
+    
 
2518
+    type(C_PTR) function fftwq_malloc(n) bind(C, name='fftwq_malloc')
 
2519
+      import
 
2520
+      integer(C_SIZE_T), value :: n
 
2521
+    end function fftwq_malloc
 
2522
+    
 
2523
+    type(C_PTR) function fftwq_alloc_real(n) bind(C, name='fftwq_alloc_real')
 
2524
+      import
 
2525
+      integer(C_SIZE_T), value :: n
 
2526
+    end function fftwq_alloc_real
 
2527
+    
 
2528
+    type(C_PTR) function fftwq_alloc_complex(n) bind(C, name='fftwq_alloc_complex')
 
2529
+      import
 
2530
+      integer(C_SIZE_T), value :: n
 
2531
+    end function fftwq_alloc_complex
 
2532
+    
 
2533
+    subroutine fftwq_free(p) bind(C, name='fftwq_free')
 
2534
+      import
 
2535
+      type(C_PTR), value :: p
 
2536
+    end subroutine fftwq_free
 
2537
+    
 
2538
+    subroutine fftwq_flops(p,add,mul,fmas) bind(C, name='fftwq_flops')
 
2539
+      import
 
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
 
2545
+    
 
2546
+    real(C_DOUBLE) function fftwq_estimate_cost(p) bind(C, name='fftwq_estimate_cost')
 
2547
+      import
 
2548
+      type(C_PTR), value :: p
 
2549
+    end function fftwq_estimate_cost
 
2550
+    
 
2551
+    real(C_DOUBLE) function fftwq_cost(p) bind(C, name='fftwq_cost')
 
2552
+      import
 
2553
+      type(C_PTR), value :: p
 
2554
+    end function fftwq_cost
 
2555
+    
 
2556
+    integer(C_INT) function fftwq_alignment_of(p) bind(C, name='fftwq_alignment_of')
 
2557
+      import
 
2558
+      real(16), dimension(*), intent(out) :: p
 
2559
+    end function fftwq_alignment_of
 
2560
+    
 
2561
+  end interface
 
2562
 
 
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
 
2566
@@ -0,0 +1,109 @@
 
2567
+#include "ifftw.h"
 
2568
+
 
2569
+
 
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 *);
 
2620
+
 
2621
+
 
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)),
 
2674
+   SOLVTAB_END
 
2675
+};
 
2676
 
 
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
 
2680
@@ -0,0 +1,364 @@
 
2681
+/*
 
2682
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
 
2683
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
 
2684
+ *
 
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.
 
2689
+ *
 
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.
 
2694
+ *
 
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
 
2698
+ *
 
2699
+ */
 
2700
+
 
2701
+/* This file was automatically generated --- DO NOT EDIT */
 
2702
+/* Generated on Sat Jan  9 16:00:29 EST 2016 */
 
2703
+
 
2704
+#include "codelet-dft.h"
 
2705
+
 
2706
+#ifdef HAVE_FMA
 
2707
+
 
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 */
 
2709
+
 
2710
+/*
 
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
 
2714
+ */
 
2715
+#include "n.h"
 
2716
+
 
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)
 
2718
+{
 
2719
+     DK(KP951056516, +0.951056516295153572116439333379382143405698634);
 
2720
+     DK(KP559016994, +0.559016994374947424102293417182819058860154590);
 
2721
+     DK(KP250000000, +0.250000000000000000000000000000000000000000000);
 
2722
+     DK(KP618033988, +0.618033988749894848204586834365638117720309180);
 
2723
+     {
 
2724
+         INT i;
 
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;
 
2727
+              {
 
2728
+                   E Tj, T3, T1b, TN, T1j, TU, T1i, TV, Tq, T10, Ti, Ts, Tw, T15, Tx;
 
2729
+                   E T13, TG, Ty, TB, TC;
 
2730
+                   {
 
2731
+                        E T1, T2, TL, TM;
 
2732
+                        T1 = ri[0];
 
2733
+                        T2 = ri[WS(is, 5)];
 
2734
+                        TL = ii[0];
 
2735
+                        TM = ii[WS(is, 5)];
 
2736
+                        {
 
2737
+                             E T7, Tk, T6, To, Tg, T8, Tb, Tc;
 
2738
+                             {
 
2739
+                                  E T4, T5, Te, Tf;
 
2740
+                                  T4 = ri[WS(is, 2)];
 
2741
+                                  Tj = T1 + T2;
 
2742
+                                  T3 = T1 - T2;
 
2743
+                                  T1b = TL + TM;
 
2744
+                                  TN = TL - TM;
 
2745
+                                  T5 = ri[WS(is, 7)];
 
2746
+                                  Te = ri[WS(is, 6)];
 
2747
+                                  Tf = ri[WS(is, 1)];
 
2748
+                                  T7 = ri[WS(is, 8)];
 
2749
+                                  Tk = T4 + T5;
 
2750
+                                  T6 = T4 - T5;
 
2751
+                                  To = Te + Tf;
 
2752
+                                  Tg = Te - Tf;
 
2753
+                                  T8 = ri[WS(is, 3)];
 
2754
+                                  Tb = ri[WS(is, 4)];
 
2755
+                                  Tc = ri[WS(is, 9)];
 
2756
+                             }
 
2757
+                             {
 
2758
+                                  E TE, TF, Tu, Tv;
 
2759
+                                  {
 
2760
+                                       E Ta, Th, Tl, T9;
 
2761
+                                       Tu = ii[WS(is, 2)];
 
2762
+                                       Tl = T7 + T8;
 
2763
+                                       T9 = T7 - T8;
 
2764
+                                       {
 
2765
+                                            E Tn, Td, Tm, Tp;
 
2766
+                                            Tn = Tb + Tc;
 
2767
+                                            Td = Tb - Tc;
 
2768
+                                            Tm = Tk + Tl;
 
2769
+                                            T1j = Tk - Tl;
 
2770
+                                            Ta = T6 + T9;
 
2771
+                                            TU = T6 - T9;
 
2772
+                                            Tp = Tn + To;
 
2773
+                                            T1i = Tn - To;
 
2774
+                                            Th = Td + Tg;
 
2775
+                                            TV = Td - Tg;
 
2776
+                                            Tq = Tm + Tp;
 
2777
+                                            T10 = Tm - Tp;
 
2778
+                                            Tv = ii[WS(is, 7)];
 
2779
+                                       }
 
2780
+                                       Ti = Ta + Th;
 
2781
+                                       Ts = Ta - Th;
 
2782
+                                  }
 
2783
+                                  TE = ii[WS(is, 6)];
 
2784
+                                  TF = ii[WS(is, 1)];
 
2785
+                                  Tw = Tu - Tv;
 
2786
+                                  T15 = Tu + Tv;
 
2787
+                                  Tx = ii[WS(is, 8)];
 
2788
+                                  T13 = TE + TF;
 
2789
+                                  TG = TE - TF;
 
2790
+                                  Ty = ii[WS(is, 3)];
 
2791
+                                  TB = ii[WS(is, 4)];
 
2792
+                                  TC = ii[WS(is, 9)];
 
2793
+                             }
 
2794
+                        }
 
2795
+                   }
 
2796
+                   {
 
2797
+                        E T17, TA, T14, TH, T1e, TQ, TS;
 
2798
+                        {
 
2799
+                             E TO, TP, T16, Tz;
 
2800
+                             ro[WS(os, 5)] = T3 + Ti;
 
2801
+                             T16 = Tx + Ty;
 
2802
+                             Tz = Tx - Ty;
 
2803
+                             {
 
2804
+                                  E T12, TD, T1c, T1d;
 
2805
+                                  T12 = TB + TC;
 
2806
+                                  TD = TB - TC;
 
2807
+                                  T1c = T15 + T16;
 
2808
+                                  T17 = T15 - T16;
 
2809
+                                  TO = Tw + Tz;
 
2810
+                                  TA = Tw - Tz;
 
2811
+                                  T1d = T12 + T13;
 
2812
+                                  T14 = T12 - T13;
 
2813
+                                  TP = TD + TG;
 
2814
+                                  TH = TD - TG;
 
2815
+                                  T1e = T1c + T1d;
 
2816
+                                  T1g = T1c - T1d;
 
2817
+                             }
 
2818
+                             ro[0] = Tj + Tq;
 
2819
+                             TQ = TO + TP;
 
2820
+                             TS = TO - TP;
 
2821
+                        }
 
2822
+                        {
 
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);
 
2852
+                        }
 
2853
+                   }
 
2854
+              }
 
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);
 
2865
+         }
 
2866
+     }
 
2867
+}
 
2868
+
 
2869
+static const kdft_desc desc = { 10, "n1_10", {48, 0, 36, 0}, &GENUS, 0, 0, 0, 0 };
 
2870
+
 
2871
+void X(codelet_n1_10) (planner *p) {
 
2872
+     X(kdft_register) (p, n1_10, &desc);
 
2873
+}
 
2874
+
 
2875
+#else                          /* HAVE_FMA */
 
2876
+
 
2877
+/* Generated by: ../../../genfft/gen_notw.native -compact -variables 4 -pipeline-latency 4 -n 10 -name n1_10 -include n.h */
 
2878
+
 
2879
+/*
 
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
 
2883
+ */
 
2884
+#include "n.h"
 
2885
+
 
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)
 
2887
+{
 
2888
+     DK(KP250000000, +0.250000000000000000000000000000000000000000000);
 
2889
+     DK(KP559016994, +0.559016994374947424102293417182819058860154590);
 
2890
+     DK(KP587785252, +0.587785252292473129168705954639072768597652438);
 
2891
+     DK(KP951056516, +0.951056516295153572116439333379382143405698634);
 
2892
+     {
 
2893
+         INT i;
 
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;
 
2897
+              {
 
2898
+                   E T1, T2, TO, TP;
 
2899
+                   T1 = ri[0];
 
2900
+                   T2 = ri[WS(is, 5)];
 
2901
+                   T3 = T1 - T2;
 
2902
+                   Tj = T1 + T2;
 
2903
+                   TO = ii[0];
 
2904
+                   TP = ii[WS(is, 5)];
 
2905
+                   TQ = TO - TP;
 
2906
+                   T1e = TO + TP;
 
2907
+              }
 
2908
+              {
 
2909
+                   E T6, Tk, Tg, To, T9, Tl, Td, Tn;
 
2910
+                   {
 
2911
+                        E T4, T5, Te, Tf;
 
2912
+                        T4 = ri[WS(is, 2)];
 
2913
+                        T5 = ri[WS(is, 7)];
 
2914
+                        T6 = T4 - T5;
 
2915
+                        Tk = T4 + T5;
 
2916
+                        Te = ri[WS(is, 6)];
 
2917
+                        Tf = ri[WS(is, 1)];
 
2918
+                        Tg = Te - Tf;
 
2919
+                        To = Te + Tf;
 
2920
+                   }
 
2921
+                   {
 
2922
+                        E T7, T8, Tb, Tc;
 
2923
+                        T7 = ri[WS(is, 8)];
 
2924
+                        T8 = ri[WS(is, 3)];
 
2925
+                        T9 = T7 - T8;
 
2926
+                        Tl = T7 + T8;
 
2927
+                        Tb = ri[WS(is, 4)];
 
2928
+                        Tc = ri[WS(is, 9)];
 
2929
+                        Td = Tb - Tc;
 
2930
+                        Tn = Tb + Tc;
 
2931
+                   }
 
2932
+                   TU = T6 - T9;
 
2933
+                   TV = Td - Tg;
 
2934
+                   T1c = Tk - Tl;
 
2935
+                   T1b = Tn - To;
 
2936
+                   Tm = Tk + Tl;
 
2937
+                   Tp = Tn + To;
 
2938
+                   Tq = Tm + Tp;
 
2939
+                   Ta = T6 + T9;
 
2940
+                   Th = Td + Tg;
 
2941
+                   Ti = Ta + Th;
 
2942
+              }
 
2943
+              {
 
2944
+                   E Tw, T15, TG, T13, Tz, T16, TD, T12;
 
2945
+                   {
 
2946
+                        E Tu, Tv, TE, TF;
 
2947
+                        Tu = ii[WS(is, 2)];
 
2948
+                        Tv = ii[WS(is, 7)];
 
2949
+                        Tw = Tu - Tv;
 
2950
+                        T15 = Tu + Tv;
 
2951
+                        TE = ii[WS(is, 6)];
 
2952
+                        TF = ii[WS(is, 1)];
 
2953
+                        TG = TE - TF;
 
2954
+                        T13 = TE + TF;
 
2955
+                   }
 
2956
+                   {
 
2957
+                        E Tx, Ty, TB, TC;
 
2958
+                        Tx = ii[WS(is, 8)];
 
2959
+                        Ty = ii[WS(is, 3)];
 
2960
+                        Tz = Tx - Ty;
 
2961
+                        T16 = Tx + Ty;
 
2962
+                        TB = ii[WS(is, 4)];
 
2963
+                        TC = ii[WS(is, 9)];
 
2964
+                        TD = TB - TC;
 
2965
+                        T12 = TB + TC;
 
2966
+                   }
 
2967
+                   TA = Tw - Tz;
 
2968
+                   TH = TD - TG;
 
2969
+                   T17 = T15 - T16;
 
2970
+                   T14 = T12 - T13;
 
2971
+                   T1f = T15 + T16;
 
2972
+                   T1g = T12 + T13;
 
2973
+                   T1h = T1f + T1g;
 
2974
+                   TL = Tw + Tz;
 
2975
+                   TM = TD + TG;
 
2976
+                   TR = TL + TM;
 
2977
+              }
 
2978
+              ro[WS(os, 5)] = T3 + Ti;
 
2979
+              io[WS(os, 5)] = TQ + TR;
 
2980
+              ro[0] = Tj + Tq;
 
2981
+              io[0] = T1e + T1h;
 
2982
+              {
 
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);
 
2988
+                   Tt = Tr + Ts;
 
2989
+                   TJ = Ts - Tr;
 
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;
 
2994
+              }
 
2995
+              {
 
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);
 
3001
+                   TT = TN + TS;
 
3002
+                   TX = TS - TN;
 
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;
 
3007
+              }
 
3008
+              {
 
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);
 
3014
+                   T11 = TZ - T10;
 
3015
+                   T19 = T10 + TZ;
 
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;
 
3020
+              }
 
3021
+              {
 
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);
 
3027
+                   T1k = T1i - T1j;
 
3028
+                   T1m = T1j + T1i;
 
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;
 
3033
+              }
 
3034
+         }
 
3035
+     }
 
3036
+}
 
3037
+
 
3038
+static const kdft_desc desc = { 10, "n1_10", {72, 12, 12, 0}, &GENUS, 0, 0, 0, 0 };
 
3039
+
 
3040
+void X(codelet_n1_10) (planner *p) {
 
3041
+     X(kdft_register) (p, n1_10, &desc);
 
3042
+}
 
3043
+
 
3044
+#endif                         /* HAVE_FMA */
 
3045
 
 
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
 
3049
@@ -0,0 +1,422 @@
 
3050
+/*
 
3051
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
 
3052
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
 
3053
+ *
 
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.
 
3058
+ *
 
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.
 
3063
+ *
 
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
 
3067
+ *
 
3068
+ */
 
3069
+
 
3070
+/* This file was automatically generated --- DO NOT EDIT */
 
3071
+/* Generated on Sat Jan  9 16:00:29 EST 2016 */
 
3072
+
 
3073
+#include "codelet-dft.h"
 
3074
+
 
3075
+#ifdef HAVE_FMA
 
3076
+
 
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 */
 
3078
+
 
3079
+/*
 
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
 
3083
+ */
 
3084
+#include "n.h"
 
3085
+
 
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)
 
3087
+{
 
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);
 
3098
+     {
 
3099
+         INT i;
 
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;
 
3102
+              {
 
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;
 
3106
+                   T1 = ri[0];
 
3107
+                   T1f = ii[0];
 
3108
+                   {
 
3109
+                        E T1E, T16, Tb, Tc, Tv, Tw;
 
3110
+                        {
 
3111
+                             E T2, T3, Te, Tf;
 
3112
+                             T2 = ri[WS(is, 1)];
 
3113
+                             T3 = ri[WS(is, 10)];
 
3114
+                             Te = ri[WS(is, 5)];
 
3115
+                             Tf = ri[WS(is, 6)];
 
3116
+                             {
 
3117
+                                  E T5, T6, T8, T9;
 
3118
+                                  T5 = ri[WS(is, 2)];
 
3119
+                                  T1u = T3 - T2;
 
3120
+                                  T4 = T2 + T3;
 
3121
+                                  T1q = Tf - Te;
 
3122
+                                  Tg = Te + Tf;
 
3123
+                                  T6 = ri[WS(is, 9)];
 
3124
+                                  T8 = ri[WS(is, 3)];
 
3125
+                                  T9 = ri[WS(is, 8)];
 
3126
+                                  Tb = ri[WS(is, 4)];
 
3127
+                                  T1t = T6 - T5;
 
3128
+                                  T7 = T5 + T6;
 
3129
+                                  T1s = T9 - T8;
 
3130
+                                  Ta = T8 + T9;
 
3131
+                                  Tc = ri[WS(is, 7)];
 
3132
+                             }
 
3133
+                        }
 
3134
+                        {
 
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);
 
3140
+                             Td = Tb + Tc;
 
3141
+                             T1r = Tc - Tb;
 
3142
+                             TP = FNMS(KP634356270, TO, Tg);
 
3143
+                             T1X = FNMS(KP715370323, T1W, T1t);
 
3144
+                             T26 = FMA(KP715370323, T25, T1r);
 
3145
+                             {
 
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);
 
3158
+                             }
 
3159
+                        }
 
3160
+                        {
 
3161
+                             E Ty, Tz, Tm, Tn;
 
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)];
 
3168
+                             To = Tm - Tn;
 
3169
+                             T1i = Tm + Tn;
 
3170
+                             {
 
3171
+                                  E Tp, Tq, Ts, Tt;
 
3172
+                                  Tp = ii[WS(is, 2)];
 
3173
+                                  T1k = Ty + Tz;
 
3174
+                                  TA = Ty - Tz;
 
3175
+                                  Tq = ii[WS(is, 9)];
 
3176
+                                  Ts = ii[WS(is, 4)];
 
3177
+                                  Tt = ii[WS(is, 7)];
 
3178
+                                  Tv = ii[WS(is, 1)];
 
3179
+                                  T1h = Tp + Tq;
 
3180
+                                  Tr = Tp - Tq;
 
3181
+                                  T1j = Ts + Tt;
 
3182
+                                  Tu = Ts - Tt;
 
3183
+                                  Tw = ii[WS(is, 10)];
 
3184
+                             }
 
3185
+                        }
 
3186
+                        {
 
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);
 
3191
+                             T1g = Tv + Tw;
 
3192
+                             Tx = Tv - Tw;
 
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);
 
3207
+                        }
 
3208
+                   }
 
3209
+                   {
 
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);
 
3218
+                        {
 
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);
 
3227
+                             {
 
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);
 
3239
+                             }
 
3240
+                             TH = FNMS(KP778434453, TG, Tg);
 
3241
+                             TM = FMA(KP830830026, TL, Tx);
 
3242
+                        }
 
3243
+                        {
 
3244
+                             E T1M, TZ, T14, T1Q;
 
3245
+                             {
 
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);
 
3255
+                                  {
 
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);
 
3267
+                                  }
 
3268
+                                  TZ = FNMS(KP778434453, TY, Ta);
 
3269
+                                  T14 = FNMS(KP830830026, T13, TA);
 
3270
+                                  T1Q = FNMS(KP918985947, T1P, T1u);
 
3271
+                             }
 
3272
+                             {
 
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);
 
3282
+                                  {
 
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);
 
3298
+                                  }
 
3299
+                             }
 
3300
+                        }
 
3301
+                   }
 
3302
+              }
 
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);
 
3309
+         }
 
3310
+     }
 
3311
+}
 
3312
+
 
3313
+static const kdft_desc desc = { 11, "n1_11", {30, 0, 110, 0}, &GENUS, 0, 0, 0, 0 };
 
3314
+
 
3315
+void X(codelet_n1_11) (planner *p) {
 
3316
+     X(kdft_register) (p, n1_11, &desc);
 
3317
+}
 
3318
+
 
3319
+#else                          /* HAVE_FMA */
 
3320
+
 
3321
+/* Generated by: ../../../genfft/gen_notw.native -compact -variables 4 -pipeline-latency 4 -n 11 -name n1_11 -include n.h */
 
3322
+
 
3323
+/*
 
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
 
3327
+ */
 
3328
+#include "n.h"
 
3329
+
 
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)
 
3331
+{
 
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);
 
3342
+     {
 
3343
+         INT i;
 
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;
 
3347
+              {
 
3348
+                   E T2, T3, Ti, Tj;
 
3349
+                   T1 = ri[0];
 
3350
+                   TM = ii[0];
 
3351
+                   T2 = ri[WS(is, 1)];
 
3352
+                   T3 = ri[WS(is, 10)];
 
3353
+                   T4 = T2 + T3;
 
3354
+                   TG = T3 - T2;
 
3355
+                   Ti = ii[WS(is, 1)];
 
3356
+                   Tj = ii[WS(is, 10)];
 
3357
+                   Tk = Ti - Tj;
 
3358
+                   TR = Ti + Tj;
 
3359
+                   {
 
3360
+                        E Tu, Tv, T5, T6;
 
3361
+                        Tu = ii[WS(is, 2)];
 
3362
+                        Tv = ii[WS(is, 9)];
 
3363
+                        Tw = Tu - Tv;
 
3364
+                        TN = Tu + Tv;
 
3365
+                        T5 = ri[WS(is, 2)];
 
3366
+                        T6 = ri[WS(is, 9)];
 
3367
+                        T7 = T5 + T6;
 
3368
+                        TK = T6 - T5;
 
3369
+                   }
 
3370
+              }
 
3371
+              {
 
3372
+                   E T8, T9, To, Tp;
 
3373
+                   T8 = ri[WS(is, 3)];
 
3374
+                   T9 = ri[WS(is, 8)];
 
3375
+                   Ta = T8 + T9;
 
3376
+                   TH = T9 - T8;
 
3377
+                   {
 
3378
+                        E Tl, Tm, Tb, Tc;
 
3379
+                        Tl = ii[WS(is, 3)];
 
3380
+                        Tm = ii[WS(is, 8)];
 
3381
+                        Tn = Tl - Tm;
 
3382
+                        TQ = Tl + Tm;
 
3383
+                        Tb = ri[WS(is, 4)];
 
3384
+                        Tc = ri[WS(is, 7)];
 
3385
+                        Td = Tb + Tc;
 
3386
+                        TJ = Tc - Tb;
 
3387
+                   }
 
3388
+                   To = ii[WS(is, 4)];
 
3389
+                   Tp = ii[WS(is, 7)];
 
3390
+                   Tq = To - Tp;
 
3391
+                   TO = To + Tp;
 
3392
+                   {
 
3393
+                        E Tr, Ts, Te, Tf;
 
3394
+                        Tr = ii[WS(is, 5)];
 
3395
+                        Ts = ii[WS(is, 6)];
 
3396
+                        Tt = Tr - Ts;
 
3397
+                        TP = Tr + Ts;
 
3398
+                        Te = ri[WS(is, 5)];
 
3399
+                        Tf = ri[WS(is, 6)];
 
3400
+                        Tg = Te + Tf;
 
3401
+                        TI = Tf - Te;
 
3402
+                   }
 
3403
+              }
 
3404
+              {
 
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;
 
3416
+                   {
 
3417
+                        E TX, TY, Tz, Ty;
 
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;
 
3426
+                   }
 
3427
+              }
 
3428
+              {
 
3429
+                   E TB, TA, TT, TU;
 
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;
 
3434
+                   {
 
3435
+                        E TV, TW, TD, TC;
 
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;
 
3444
+                   }
 
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;
 
3449
+                   {
 
3450
+                        E TL, TS, TF, TE;
 
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;
 
3459
+                   }
 
3460
+              }
 
3461
+         }
 
3462
+     }
 
3463
+}
 
3464
+
 
3465
+static const kdft_desc desc = { 11, "n1_11", {60, 20, 80, 0}, &GENUS, 0, 0, 0, 0 };
 
3466
+
 
3467
+void X(codelet_n1_11) (planner *p) {
 
3468
+     X(kdft_register) (p, n1_11, &desc);
 
3469
+}
 
3470
+
 
3471
+#endif                         /* HAVE_FMA */
 
3472
 
 
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
 
3476
@@ -0,0 +1,401 @@
 
3477
+/*
 
3478
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
 
3479
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
 
3480
+ *
 
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.
 
3485
+ *
 
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.
 
3490
+ *
 
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
 
3494
+ *
 
3495
+ */
 
3496
+
 
3497
+/* This file was automatically generated --- DO NOT EDIT */
 
3498
+/* Generated on Sat Jan  9 16:00:29 EST 2016 */
 
3499
+
 
3500
+#include "codelet-dft.h"
 
3501
+
 
3502
+#ifdef HAVE_FMA
 
3503
+
 
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 */
 
3505
+
 
3506
+/*
 
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
 
3510
+ */
 
3511
+#include "n.h"
 
3512
+
 
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)
 
3514
+{
 
3515
+     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
 
3516
+     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
 
3517
+     {
 
3518
+         INT i;
 
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;
 
3521
+              {
 
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;
 
3524
+                   {
 
3525
+                        E T6, Tt, Tu, Tv, T9;
 
3526
+                        {