source: LMDZ5/trunk/libf/filtrez/mkl_dfti.f90 @ 1804

Last change on this file since 1804 was 1801, checked in by yann meurdesoif, 11 years ago

Add interface header for FFT-MKL required for compiling.
Intel give only .f90 file and not .mod for the module interface

YM

File size: 21.2 KB
Line 
1!*****************************************************************************
2! Copyright(C) 2002-2011 Intel Corporation. All Rights Reserved.
3!
4! The source code, information  and  material ("Material") contained herein is
5! owned  by Intel Corporation or its suppliers or licensors, and title to such
6! Material remains  with Intel Corporation  or its suppliers or licensors. The
7! Material  contains proprietary information  of  Intel or  its  suppliers and
8! licensors. The  Material is protected by worldwide copyright laws and treaty
9! provisions. No  part  of  the  Material  may  be  used,  copied, reproduced,
10! modified, published, uploaded, posted, transmitted, distributed or disclosed
11! in any way  without Intel's  prior  express written  permission. No  license
12! under  any patent, copyright  or  other intellectual property rights  in the
13! Material  is  granted  to  or  conferred  upon  you,  either  expressly,  by
14! implication, inducement,  estoppel or  otherwise.  Any  license  under  such
15! intellectual  property  rights must  be express  and  approved  by  Intel in
16! writing.
17!
18! *Third Party trademarks are the property of their respective owners.
19!
20! Unless otherwise  agreed  by Intel  in writing, you may not remove  or alter
21! this  notice or  any other notice embedded  in Materials by Intel or Intel's
22! suppliers or licensors in any way.
23!
24!*****************************************************************************
25! Content:
26!    Intel(R) Math Kernel Library (MKL)
27!    Discrete Fourier Transform Interface (DFTI)
28!*****************************************************************************
29
30
31MODULE MKL_DFTI
32
33  USE MKL_DFT_TYPE
34
35  INTERFACE DftiCreateDescriptor
36
37     FUNCTION dfti_create_descriptor_1d(desc, precision, domain, dim, length)
38       USE MKL_DFT_TYPE
39       !DEC$ ATTRIBUTES C :: dfti_create_descriptor_1d
40       !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_1d
41       INTEGER dfti_create_descriptor_1d
42       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
43       INTEGER, INTENT(IN) :: precision
44       INTEGER, INTENT(IN) :: domain
45       INTEGER, INTENT(IN) :: dim, length
46     END FUNCTION dfti_create_descriptor_1d
47
48     FUNCTION dfti_create_descriptor_highd(desc, precision, domain, dim,length)
49       USE MKL_DFT_TYPE
50       !DEC$ ATTRIBUTES C :: dfti_create_descriptor_highd
51       !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_highd
52       INTEGER dfti_create_descriptor_highd
53       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
54       INTEGER, INTENT(IN) :: precision
55       INTEGER, INTENT(IN) :: domain
56       INTEGER, INTENT(IN) :: dim
57       INTEGER, INTENT(IN), DIMENSION(*) :: length
58     END FUNCTION dfti_create_descriptor_highd
59
60     FUNCTION dfti_create_descriptor_s_1d(desc, s, dom, one, dim)
61       USE MKL_DFT_TYPE
62       !DEC$ ATTRIBUTES C :: dfti_create_descriptor_s_1d
63       !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_s_1d
64       INTEGER dfti_create_descriptor_s_1d
65       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
66       REAL(DFTI_SPKP), INTENT(IN) :: s
67       INTEGER, INTENT(IN) :: dom
68       INTEGER, INTENT(IN) :: one
69       INTEGER, INTENT(IN) :: dim
70     END FUNCTION dfti_create_descriptor_s_1d
71
72     FUNCTION dfti_create_descriptor_s_md(desc, s, dom, many, dims)
73       USE MKL_DFT_TYPE
74       !DEC$ ATTRIBUTES C :: dfti_create_descriptor_s_md
75       !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_s_md
76       INTEGER dfti_create_descriptor_s_md
77       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
78       REAL(DFTI_SPKP), INTENT(IN) :: s
79       INTEGER, INTENT(IN) :: dom
80       INTEGER, INTENT(IN) :: many
81       INTEGER, INTENT(IN), DIMENSION(*) :: dims
82     END FUNCTION dfti_create_descriptor_s_md
83
84     FUNCTION dfti_create_descriptor_d_1d(desc, d, dom, one, dim)
85       USE MKL_DFT_TYPE
86       !DEC$ ATTRIBUTES C :: dfti_create_descriptor_d_1d
87       !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_d_1d
88       INTEGER dfti_create_descriptor_d_1d
89       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
90       REAL(DFTI_DPKP), INTENT(IN) :: d
91       INTEGER, INTENT(IN) :: dom
92       INTEGER, INTENT(IN) :: one
93       INTEGER, INTENT(IN) :: dim
94     END FUNCTION dfti_create_descriptor_d_1d
95
96     FUNCTION dfti_create_descriptor_d_md(desc, d, dom, many, dims)
97       USE MKL_DFT_TYPE
98       !DEC$ ATTRIBUTES C :: dfti_create_descriptor_d_md
99       !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_d_md
100       INTEGER dfti_create_descriptor_d_md
101       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
102       REAL(DFTI_DPKP), INTENT(IN) :: d
103       INTEGER, INTENT(IN) :: dom
104       INTEGER, INTENT(IN) :: many
105       INTEGER, INTENT(IN), DIMENSION(*) :: dims
106     END FUNCTION dfti_create_descriptor_d_md
107
108  END INTERFACE
109
110  INTERFACE DftiCopyDescriptor
111
112     FUNCTION dfti_copy_descriptor_external(desc, new_desc)
113       USE MKL_DFT_TYPE
114       !DEC$ ATTRIBUTES C :: dfti_copy_descriptor_external
115       !DEC$ ATTRIBUTES REFERENCE :: dfti_copy_descriptor_external
116       INTEGER dfti_copy_descriptor_external
117       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
118       TYPE(DFTI_DESCRIPTOR), POINTER :: new_desc
119     END FUNCTION dfti_copy_descriptor_external
120
121  END INTERFACE
122
123  INTERFACE DftiCommitDescriptor
124
125     FUNCTION dfti_commit_descriptor_external(desc)
126       USE MKL_DFT_TYPE
127       !DEC$ ATTRIBUTES C :: dfti_commit_descriptor_external
128       !DEC$ ATTRIBUTES REFERENCE :: dfti_commit_descriptor_external
129       INTEGER dfti_commit_descriptor_external
130       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
131     END FUNCTION dfti_commit_descriptor_external
132
133  END INTERFACE
134
135  INTERFACE DftiSetValue
136
137     FUNCTION dfti_set_value_intval(desc, OptName, IntVal)
138       USE MKL_DFT_TYPE
139       !DEC$ ATTRIBUTES C :: dfti_set_value_intval
140       !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_intval
141       INTEGER dfti_set_value_intval
142       INTEGER, INTENT(IN) :: OptName
143       INTEGER, INTENT(IN) :: IntVal
144       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
145     END FUNCTION dfti_set_value_intval
146
147     FUNCTION dfti_set_value_sglval(desc, OptName, sglval)
148       USE MKL_DFT_TYPE
149       !DEC$ ATTRIBUTES C :: dfti_set_value_sglval
150       !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_sglval
151       INTEGER dfti_set_value_sglval
152       INTEGER, INTENT(IN) :: OptName
153       REAL(DFTI_SPKP), INTENT(IN) :: sglval
154       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
155     END FUNCTION dfti_set_value_sglval
156
157     FUNCTION dfti_set_value_dblval(desc, OptName, DblVal)
158       USE MKL_DFT_TYPE
159       !DEC$ ATTRIBUTES C :: dfti_set_value_dblval
160       !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_dblval
161       INTEGER dfti_set_value_dblval
162       INTEGER, INTENT(IN) :: OptName
163       REAL(DFTI_DPKP), INTENT(IN) :: DblVal
164       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
165     END FUNCTION dfti_set_value_dblval
166
167     FUNCTION dfti_set_value_intvec(desc, OptName, IntVec)
168       USE MKL_DFT_TYPE
169       !DEC$ ATTRIBUTES C :: dfti_set_value_intvec
170       !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_intvec
171       INTEGER dfti_set_value_intvec
172       INTEGER, INTENT(IN) :: OptName
173       INTEGER, INTENT(IN), DIMENSION(*) :: IntVec
174       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
175     END FUNCTION dfti_set_value_intvec
176
177     FUNCTION dfti_set_value_chars(desc, OptName, Chars)
178       USE MKL_DFT_TYPE
179       !DEC$ ATTRIBUTES C :: dfti_set_value_chars
180       !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_chars
181       INTEGER dfti_set_value_chars
182       INTEGER, INTENT(IN) :: OptName
183       CHARACTER(*), INTENT(IN) :: Chars
184       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
185     END FUNCTION dfti_set_value_chars
186
187  END INTERFACE
188
189  INTERFACE DftiGetValue
190
191     FUNCTION dfti_get_value_intval(desc, OptName, IntVal)
192       USE MKL_DFT_TYPE
193       !DEC$ ATTRIBUTES C :: dfti_get_value_intval
194       !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_intval
195       INTEGER dfti_get_value_intval
196       INTEGER, INTENT(IN) :: OptName
197       INTEGER, INTENT(OUT) :: IntVal
198       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
199     END FUNCTION dfti_get_value_intval
200
201     FUNCTION dfti_get_value_sglval(desc, OptName, sglval)
202       USE MKL_DFT_TYPE
203       !DEC$ ATTRIBUTES C :: dfti_get_value_sglval
204       !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_sglval
205       INTEGER dfti_get_value_sglval
206       INTEGER, INTENT(IN) :: OptName
207       REAL(DFTI_SPKP), INTENT(OUT) :: sglval
208       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
209     END FUNCTION dfti_get_value_sglval
210
211     FUNCTION dfti_get_value_dblval(desc, OptName, DblVal)
212       USE MKL_DFT_TYPE
213       !DEC$ ATTRIBUTES C :: dfti_get_value_dblval
214       !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_dblval
215       INTEGER dfti_get_value_dblval
216       INTEGER, INTENT(IN) :: OptName
217       REAL(DFTI_DPKP), INTENT(OUT) :: DblVal
218       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
219     END FUNCTION dfti_get_value_dblval
220
221     FUNCTION dfti_get_value_intvec(desc, OptName, IntVec)
222       USE MKL_DFT_TYPE
223       !DEC$ ATTRIBUTES C :: dfti_get_value_intvec
224       !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_intvec
225       INTEGER dfti_get_value_intvec
226       INTEGER, INTENT(IN) :: OptName
227       INTEGER, INTENT(OUT), DIMENSION(*) :: IntVec
228       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
229     END FUNCTION dfti_get_value_intvec
230
231     FUNCTION dfti_get_value_chars(desc, OptName, Chars)
232       USE MKL_DFT_TYPE
233       !DEC$ ATTRIBUTES C :: dfti_get_value_chars
234       !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_chars
235       INTEGER dfti_get_value_chars
236       INTEGER, INTENT(IN) :: OptName
237       CHARACTER(*), INTENT(OUT) :: Chars
238       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
239     END FUNCTION dfti_get_value_chars
240
241  END INTERFACE
242
243  INTERFACE DftiComputeForward
244
245     FUNCTION dfti_compute_forward_s(desc,sSrcDst)
246       USE MKL_DFT_TYPE
247       !DEC$ ATTRIBUTES C :: dfti_compute_forward_s
248       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_s
249       INTEGER dfti_compute_forward_s
250       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
251       REAL(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: sSrcDst
252     END FUNCTION dfti_compute_forward_s
253
254     FUNCTION dfti_compute_forward_c(desc,cSrcDst)
255       USE MKL_DFT_TYPE
256       !DEC$ ATTRIBUTES C :: dfti_compute_forward_c
257       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_c
258       INTEGER dfti_compute_forward_c
259       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
260       COMPLEX(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: cSrcDst
261     END FUNCTION dfti_compute_forward_c
262
263     FUNCTION dfti_compute_forward_ss(desc,sSrcDstRe,sSrcDstIm)
264       USE MKL_DFT_TYPE
265       !DEC$ ATTRIBUTES C :: dfti_compute_forward_ss
266       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_ss
267       INTEGER dfti_compute_forward_ss
268       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
269       REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstRe
270       REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstIm
271     END FUNCTION dfti_compute_forward_ss
272
273     FUNCTION dfti_compute_forward_sc(desc,sSrc,cDst)
274       USE MKL_DFT_TYPE
275       !DEC$ ATTRIBUTES C :: dfti_compute_forward_sc
276       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_sc
277       INTEGER dfti_compute_forward_sc
278       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
279       REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrc
280       COMPLEX(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: cDst
281     END FUNCTION dfti_compute_forward_sc
282
283     FUNCTION dfti_compute_forward_cc(desc,cSrc,cDst)
284       USE MKL_DFT_TYPE
285       !DEC$ ATTRIBUTES C :: dfti_compute_forward_cc
286       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_cc
287       INTEGER dfti_compute_forward_cc
288       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
289       COMPLEX(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: cSrc
290       COMPLEX(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: cDst
291     END FUNCTION dfti_compute_forward_cc
292
293     FUNCTION dfti_compute_forward_ssss(desc,sSrcRe,sSrcIm,sDstRe,sDstIm)
294       USE MKL_DFT_TYPE
295       !DEC$ ATTRIBUTES C :: dfti_compute_forward_ssss
296       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_ssss
297       INTEGER dfti_compute_forward_ssss
298       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
299       REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcRe
300       REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcIm
301       REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstRe
302       REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstIm
303     END FUNCTION dfti_compute_forward_ssss
304
305     FUNCTION dfti_compute_forward_d(desc,dSrcDst)
306       USE MKL_DFT_TYPE
307       !DEC$ ATTRIBUTES C :: dfti_compute_forward_d
308       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_d
309       INTEGER dfti_compute_forward_d
310       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
311       REAL(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: dSrcDst
312     END FUNCTION dfti_compute_forward_d
313
314     FUNCTION dfti_compute_forward_z(desc,zSrcDst)
315       USE MKL_DFT_TYPE
316       !DEC$ ATTRIBUTES C :: dfti_compute_forward_z
317       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_z
318       INTEGER dfti_compute_forward_z
319       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
320       COMPLEX(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: zSrcDst
321     END FUNCTION dfti_compute_forward_z
322
323     FUNCTION dfti_compute_forward_dd(desc,dSrcDstRe,dSrcDstIm)
324       USE MKL_DFT_TYPE
325       !DEC$ ATTRIBUTES C :: dfti_compute_forward_dd
326       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dd
327       INTEGER dfti_compute_forward_dd
328       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
329       REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstRe
330       REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstIm
331     END FUNCTION dfti_compute_forward_dd
332
333     FUNCTION dfti_compute_forward_dz(desc,dSrc,zDst)
334       USE MKL_DFT_TYPE
335       !DEC$ ATTRIBUTES C :: dfti_compute_forward_dz
336       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dz
337       INTEGER dfti_compute_forward_dz
338       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
339       REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrc
340       COMPLEX(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: zDst
341     END FUNCTION dfti_compute_forward_dz
342
343     FUNCTION dfti_compute_forward_zz(desc,zSrc,zDst)
344       USE MKL_DFT_TYPE
345       !DEC$ ATTRIBUTES C :: dfti_compute_forward_zz
346       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_zz
347       INTEGER dfti_compute_forward_zz
348       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
349       COMPLEX(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: zSrc
350       COMPLEX(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: zDst
351     END FUNCTION dfti_compute_forward_zz
352
353     FUNCTION dfti_compute_forward_dddd(desc,dSrcRe,dSrcIm,dDstRe,dDstIm)
354       USE MKL_DFT_TYPE
355       !DEC$ ATTRIBUTES C :: dfti_compute_forward_dddd
356       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dddd
357       INTEGER dfti_compute_forward_dddd
358       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
359       REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcRe
360       REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcIm
361       REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstRe
362       REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstIm
363     END FUNCTION dfti_compute_forward_dddd
364
365  END INTERFACE DftiComputeForward
366
367  INTERFACE DftiComputeBackward
368
369     FUNCTION dfti_compute_backward_s(desc,sSrcDst)
370       USE MKL_DFT_TYPE
371       !DEC$ ATTRIBUTES C :: dfti_compute_backward_s
372       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_s
373       INTEGER dfti_compute_backward_s
374       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
375       REAL(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: sSrcDst
376     END FUNCTION dfti_compute_backward_s
377
378     FUNCTION dfti_compute_backward_c(desc,cSrcDst)
379       USE MKL_DFT_TYPE
380       !DEC$ ATTRIBUTES C :: dfti_compute_backward_c
381       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_c
382       INTEGER dfti_compute_backward_c
383       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
384       COMPLEX(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: cSrcDst
385     END FUNCTION dfti_compute_backward_c
386
387     FUNCTION dfti_compute_backward_ss(desc,sSrcDstRe,sSrcDstIm)
388       USE MKL_DFT_TYPE
389       !DEC$ ATTRIBUTES C :: dfti_compute_backward_ss
390       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_ss
391       INTEGER dfti_compute_backward_ss
392       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
393       REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstRe
394       REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstIm
395     END FUNCTION dfti_compute_backward_ss
396
397     FUNCTION dfti_compute_backward_cs(desc,cSrc,sDst)
398       USE MKL_DFT_TYPE
399       !DEC$ ATTRIBUTES C :: dfti_compute_backward_cs
400       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_cs
401       INTEGER dfti_compute_backward_cs
402       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
403       COMPLEX(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: cSrc
404       REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDst
405     END FUNCTION dfti_compute_backward_cs
406
407     FUNCTION dfti_compute_backward_cc(desc,cSrc,cDst)
408       USE MKL_DFT_TYPE
409       !DEC$ ATTRIBUTES C :: dfti_compute_backward_cc
410       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_cc
411       INTEGER dfti_compute_backward_cc
412       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
413       COMPLEX(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: cSrc
414       COMPLEX(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: cDst
415     END FUNCTION dfti_compute_backward_cc
416
417     FUNCTION dfti_compute_backward_ssss(desc,sSrcRe,sSrcIm,sDstRe,sDstIm)
418       USE MKL_DFT_TYPE
419       !DEC$ ATTRIBUTES C :: dfti_compute_backward_ssss
420       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_ssss
421       INTEGER dfti_compute_backward_ssss
422       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
423       REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcRe
424       REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcIm
425       REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstRe
426       REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstIm
427     END FUNCTION dfti_compute_backward_ssss
428
429     FUNCTION dfti_compute_backward_d(desc,dSrcDst)
430       USE MKL_DFT_TYPE
431       !DEC$ ATTRIBUTES C :: dfti_compute_backward_d
432       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_d
433       INTEGER dfti_compute_backward_d
434       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
435       REAL(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: dSrcDst
436     END FUNCTION dfti_compute_backward_d
437
438     FUNCTION dfti_compute_backward_z(desc,zSrcDst)
439       USE MKL_DFT_TYPE
440       !DEC$ ATTRIBUTES C :: dfti_compute_backward_z
441       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_z
442       INTEGER dfti_compute_backward_z
443       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
444       COMPLEX(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: zSrcDst
445     END FUNCTION dfti_compute_backward_z
446
447     FUNCTION dfti_compute_backward_dd(desc,dSrcDstRe,dSrcDstIm)
448       USE MKL_DFT_TYPE
449       !DEC$ ATTRIBUTES C :: dfti_compute_backward_dd
450       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_dd
451       INTEGER dfti_compute_backward_dd
452       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
453       REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstRe
454       REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstIm
455     END FUNCTION dfti_compute_backward_dd
456
457     FUNCTION dfti_compute_backward_zd(desc,zSrc,dDst)
458       USE MKL_DFT_TYPE
459       !DEC$ ATTRIBUTES C :: dfti_compute_backward_zd
460       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_zd
461       INTEGER dfti_compute_backward_zd
462       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
463       COMPLEX(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: zSrc
464       REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDst
465     END FUNCTION dfti_compute_backward_zd
466
467     FUNCTION dfti_compute_backward_zz(desc,zSrc,zDst)
468       USE MKL_DFT_TYPE
469       !DEC$ ATTRIBUTES C :: dfti_compute_backward_zz
470       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_zz
471       INTEGER dfti_compute_backward_zz
472       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
473       COMPLEX(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: zSrc
474       COMPLEX(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: zDst
475     END FUNCTION dfti_compute_backward_zz
476
477     FUNCTION dfti_compute_backward_dddd(desc,dSrcRe,dSrcIm,dDstRe,dDstIm)
478       USE MKL_DFT_TYPE
479       !DEC$ ATTRIBUTES C :: dfti_compute_backward_dddd
480       !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_dddd
481       INTEGER dfti_compute_backward_dddd
482       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
483       REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcRe
484       REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcIm
485       REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstRe
486       REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstIm
487     END FUNCTION dfti_compute_backward_dddd
488
489  END INTERFACE DftiComputeBackward
490
491  INTERFACE DftiFreeDescriptor
492
493     FUNCTION dfti_free_descriptor_external(desc)
494       USE MKL_DFT_TYPE
495       !DEC$ ATTRIBUTES C :: dfti_free_descriptor_external
496       !DEC$ ATTRIBUTES REFERENCE :: dfti_free_descriptor_external
497       INTEGER dfti_free_descriptor_external
498       TYPE(DFTI_DESCRIPTOR), POINTER :: desc
499     END FUNCTION dfti_free_descriptor_external
500
501  END INTERFACE
502
503  INTERFACE DftiErrorClass
504
505     FUNCTION dfti_error_class_external(Status, ErrorClass)
506       USE MKL_DFT_TYPE
507       !DEC$ ATTRIBUTES C :: dfti_error_class_external
508       !DEC$ ATTRIBUTES REFERENCE :: dfti_error_class_external
509       LOGICAL dfti_error_class_external
510       INTEGER, INTENT(IN) :: Status
511       INTEGER, INTENT(IN) :: ErrorClass
512     END FUNCTION dfti_error_class_external
513
514  END INTERFACE
515
516  INTERFACE DftiErrorMessage
517
518     FUNCTION dfti_error_message_external(Status)
519       USE MKL_DFT_TYPE
520       !DEC$ ATTRIBUTES C :: dfti_error_message_external
521       !DEC$ ATTRIBUTES REFERENCE :: dfti_error_message_external
522       CHARACTER(LEN=DFTI_MAX_MESSAGE_LENGTH) :: dfti_error_message_external
523       INTEGER, INTENT(IN) :: Status
524     END FUNCTION dfti_error_message_external
525
526  END INTERFACE
527
528END MODULE MKL_DFTI
Note: See TracBrowser for help on using the repository browser.