LCOV - code coverage report
Current view: top level - /opt/intel/oneapi/mkl/2025.0/include - mkl_dfti.f90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 1 0
Test Date: 2026-09-21 22:40:37 Functions: 0.0 % 1 0

            Line data    Source code
       1              : !===============================================================================
       2              : ! Copyright 2002-2022 Intel Corporation.
       3              : !
       4              : ! This software and the related documents are Intel copyrighted  materials,  and
       5              : ! your use of  them is  governed by the  express license  under which  they were
       6              : ! provided to you (License).  Unless the License provides otherwise, you may not
       7              : ! use, modify, copy, publish, distribute,  disclose or transmit this software or
       8              : ! the related documents without Intel's prior written permission.
       9              : !
      10              : ! This software and the related documents  are provided as  is,  with no express
      11              : ! or implied  warranties,  other  than those  that are  expressly stated  in the
      12              : ! License.
      13              : !===============================================================================
      14              : 
      15              : ! Content:
      16              : !    Intel(R) oneAPI Math Kernel Library (oneMKL)
      17              : !    Discrete Fourier Transform Interface (DFTI)
      18              : !*****************************************************************************
      19              : 
      20              : MODULE MKL_DFT_TYPE
      21              : 
      22              :   TYPE, PUBLIC :: DFTI_DESCRIPTOR
      23              :      PRIVATE
      24              :      INTEGER :: dontuse
      25              :      ! Structure of this type is not used in Fortran code
      26              :      ! the pointer to this type is used only
      27              :   END TYPE DFTI_DESCRIPTOR
      28              : 
      29              :   !======================================================================
      30              :   ! These real type kind parameters are not for direct use
      31              :   !======================================================================
      32              : 
      33              :   INTEGER, PARAMETER :: DFTI_SPKP = SELECTED_REAL_KIND(6,37)
      34              :   INTEGER, PARAMETER :: DFTI_DPKP = SELECTED_REAL_KIND(15,307)
      35              : 
      36              :   !======================================================================
      37              :   ! Descriptor configuration parameters [default values in brackets]
      38              :   !======================================================================
      39              : 
      40              :   ! Domain for forward transform. No default value
      41              :   INTEGER, PARAMETER :: DFTI_FORWARD_DOMAIN = 0
      42              : 
      43              :   ! Dimensionality, or rank. No default value
      44              :   INTEGER, PARAMETER :: DFTI_DIMENSION = 1
      45              : 
      46              :   ! Length(s) of transform. No default value
      47              :   INTEGER, PARAMETER :: DFTI_LENGTHS = 2
      48              : 
      49              :   ! Floating point precision. No default value
      50              :   INTEGER, PARAMETER :: DFTI_PRECISION = 3
      51              : 
      52              :   ! Scale factor for forward transform [1.0]
      53              :   INTEGER, PARAMETER :: DFTI_FORWARD_SCALE = 4
      54              : 
      55              :   ! Scale factor for backward transform [1.0]
      56              :   INTEGER, PARAMETER :: DFTI_BACKWARD_SCALE = 5
      57              : 
      58              :   ! Exponent sign for forward transform [DFTI_NEGATIVE]
      59              :   ! INTEGER, PARAMETER :: DFTI_FORWARD_SIGN = 6 ! NOT IMPLEMENTED
      60              : 
      61              :   ! Number of data sets to be transformed [1]
      62              :   INTEGER, PARAMETER :: DFTI_NUMBER_OF_TRANSFORMS = 7
      63              : 
      64              :   ! Storage of finite complex-valued sequences in complex domain
      65              :   ! [DFTI_COMPLEX_COMPLEX]
      66              :   INTEGER, PARAMETER :: DFTI_COMPLEX_STORAGE = 8
      67              : 
      68              :   ! Storage of finite real-valued sequences in real domain
      69              :   ! [DFTI_REAL_REAL]
      70              :   INTEGER, PARAMETER :: DFTI_REAL_STORAGE = 9
      71              : 
      72              :   ! Storage of finite complex-valued sequences in conjugate-even
      73              :   ! domain [DFTI_COMPLEX_REAL]
      74              :   INTEGER, PARAMETER :: DFTI_CONJUGATE_EVEN_STORAGE = 10
      75              : 
      76              :   ! Placement of result [DFTI_INPLACE]
      77              :   INTEGER, PARAMETER :: DFTI_PLACEMENT = 11
      78              : 
      79              :   ! Generalized strides for input data layout
      80              :   ! [tight, col-major for Fortran]
      81              :   INTEGER, PARAMETER :: DFTI_INPUT_STRIDES = 12
      82              : 
      83              :   ! Generalized strides for output data layout
      84              :   ! [tight, col-major for Fortran]
      85              :   INTEGER, PARAMETER :: DFTI_OUTPUT_STRIDES = 13
      86              : 
      87              :   ! Distance between first input elements for multiple transforms [0]
      88              :   INTEGER, PARAMETER :: DFTI_INPUT_DISTANCE = 14
      89              : 
      90              :   ! Distance between first output elements for multiple transforms [0]
      91              :   INTEGER, PARAMETER :: DFTI_OUTPUT_DISTANCE = 15
      92              : 
      93              :   ! Effort spent in initialization [DFTI_MEDIUM]
      94              :   ! INTEGER, PARAMETER :: DFTI_INITIALIZATION_EFFORT = 16 ! NOT IMPLEMENTED
      95              : 
      96              :   ! Use of workspace during computation [DFTI_ALLOW]
      97              :   INTEGER, PARAMETER :: DFTI_WORKSPACE = 17
      98              : 
      99              :   ! Ordering of the result [DFTI_ORDERED]
     100              :   INTEGER, PARAMETER :: DFTI_ORDERING = 18
     101              : 
     102              :   ! Possible transposition of result [DFTI_NONE]
     103              :   INTEGER, PARAMETER :: DFTI_TRANSPOSE = 19
     104              : 
     105              :   ! User-settable descriptor name [""]
     106              :   INTEGER, PARAMETER :: DFTI_DESCRIPTOR_NAME = 20
     107              : 
     108              :   ! Packing format for DFTI_COMPLEX_REAL storage of finite
     109              :   ! conjugate-even sequences [DFTI_CCS_FORMAT]
     110              :   INTEGER, PARAMETER :: DFTI_PACKED_FORMAT = 21
     111              : 
     112              :   ! Commit status of the descriptor. Read-only parameter
     113              :   INTEGER, PARAMETER :: DFTI_COMMIT_STATUS = 22
     114              : 
     115              :   ! Version string for this DFTI implementation. Read-only parameter
     116              :   INTEGER, PARAMETER :: DFTI_VERSION = 23
     117              : 
     118              :   ! Ordering of the forward transform. Read-only parameter
     119              :   ! INTEGER, PARAMETER :: DFTI_FORWARD_ORDERING = 24 ! NOT IMPLEMENTED
     120              : 
     121              :   ! Ordering of the backward transform. Read-only parameter
     122              :   ! INTEGER, PARAMETER :: DFTI_BACKWARD_ORDERING = 25 ! NOT IMPLEMENTED
     123              : 
     124              :   ! Number of user threads that share the descriptor [1]
     125              :   INTEGER, PARAMETER :: DFTI_NUMBER_OF_USER_THREADS = 26
     126              : 
     127              :   ! Limit the number of threads used by this descriptor [0 = don't care]
     128              :   INTEGER, PARAMETER :: DFTI_THREAD_LIMIT = 27
     129              : 
     130              :   !======================================================================
     131              :   ! Values of the descriptor configuration parameters
     132              :   !======================================================================
     133              : 
     134              :   ! DFTI_COMMIT_STATUS
     135              :   INTEGER, PARAMETER :: DFTI_COMMITTED = 30
     136              :   INTEGER, PARAMETER :: DFTI_UNCOMMITTED = 31
     137              : 
     138              :   ! DFTI_FORWARD_DOMAIN
     139              :   INTEGER, PARAMETER :: DFTI_COMPLEX = 32
     140              :   INTEGER, PARAMETER :: DFTI_REAL = 33
     141              :   ! INTEGER, PARAMETER :: DFTI_CONJUGATE_EVEN = 34 ! NOT IMPLEMENTED
     142              : 
     143              :   ! DFTI_PRECISION
     144              :   INTEGER, PARAMETER :: DFTI_SINGLE = 35
     145              :   INTEGER, PARAMETER :: DFTI_DOUBLE = 36
     146              : 
     147              :   ! DFTI_PRECISION for reduced size of statically linked application.
     148              :   ! Recommended use: modify statement 'USE MKL_DFTI' in your program,
     149              :   ! so that it reads as either of:
     150              :   ! USE MKL_DFTI, FORGET=>DFTI_SINGLE, DFTI_SINGLE=>DFTI_SINGLE_R
     151              :   ! USE MKL_DFTI, FORGET=>DFTI_DOUBLE, DFTI_DOUBLE=>DFTI_DOUBLE_R
     152              :   ! where word 'FORGET' can be any name not used in the program.
     153              :   REAL(DFTI_SPKP), PARAMETER :: DFTI_SINGLE_R = REAL(35)
     154              :   REAL(DFTI_DPKP), PARAMETER :: DFTI_DOUBLE_R = REAL(36)
     155              : 
     156              :   ! DFTI_FORWARD_SIGN
     157              :   ! INTEGER, PARAMETER :: DFTI_NEGATIVE = 37 ! NOT IMPLEMENTED
     158              :   ! INTEGER, PARAMETER :: DFTI_POSITIVE = 38 ! NOT IMPLEMENTED
     159              : 
     160              :   ! DFTI_COMPLEX_STORAGE and DFTI_CONJUGATE_EVEN_STORAGE
     161              :   INTEGER, PARAMETER :: DFTI_COMPLEX_COMPLEX = 39
     162              :   INTEGER, PARAMETER :: DFTI_COMPLEX_REAL = 40
     163              : 
     164              :   ! DFTI_REAL_STORAGE
     165              :   INTEGER, PARAMETER :: DFTI_REAL_COMPLEX = 41
     166              :   INTEGER, PARAMETER :: DFTI_REAL_REAL = 42
     167              : 
     168              :   ! DFTI_PLACEMENT
     169              :   INTEGER, PARAMETER :: DFTI_INPLACE = 43 ! Result overwrites input
     170              :   INTEGER, PARAMETER :: DFTI_NOT_INPLACE  = 44 ! Have another place for result
     171              : 
     172              :   ! DFTI_INITIALIZATION_EFFORT
     173              :   ! INTEGER, PARAMETER :: DFTI_LOW = 45 ! NOT IMPLEMENTED
     174              :   ! INTEGER, PARAMETER :: DFTI_MEDIUM = 46 ! NOT IMPLEMENTED
     175              :   ! INTEGER, PARAMETER :: DFTI_HIGH = 47 ! NOT IMPLEMENTED
     176              : 
     177              :   ! DFTI_ORDERING
     178              :   INTEGER, PARAMETER :: DFTI_ORDERED = 48
     179              :   INTEGER, PARAMETER :: DFTI_BACKWARD_SCRAMBLED = 49
     180              :   ! INTEGER, PARAMETER :: DFTI_FORWARD_SCRAMBLED  = 50 ! NOT IMPLEMENTED
     181              : 
     182              :   ! Allow/avoid certain usages
     183              :   INTEGER, PARAMETER :: DFTI_ALLOW = 51 ! Allow transposition or workspace
     184              :   INTEGER, PARAMETER :: DFTI_AVOID = 52 ! Avoid auxiliary storage
     185              :   INTEGER, PARAMETER :: DFTI_NONE = 53
     186              : 
     187              :   ! DFTI_PACKED_FORMAT
     188              :   ! (for storing congugate-even finite sequence in real array)
     189              :   INTEGER, PARAMETER :: DFTI_CCS_FORMAT = 54  ! Complex conjugate-symmetric
     190              :   INTEGER, PARAMETER :: DFTI_PACK_FORMAT = 55 ! Pack format for real DFT
     191              :   INTEGER, PARAMETER :: DFTI_PERM_FORMAT = 56 ! Perm format for real DFT
     192              :   INTEGER, PARAMETER :: DFTI_CCE_FORMAT = 57  ! Complex conjugate-even
     193              : 
     194              :   !======================================================================
     195              :   ! Error classes
     196              :   !======================================================================
     197              :   INTEGER, PARAMETER :: DFTI_NO_ERROR = 0
     198              :   INTEGER, PARAMETER :: DFTI_MEMORY_ERROR = 1
     199              :   INTEGER, PARAMETER :: DFTI_INVALID_CONFIGURATION = 2
     200              :   INTEGER, PARAMETER :: DFTI_INCONSISTENT_CONFIGURATION = 3
     201              :   INTEGER, PARAMETER :: DFTI_MULTITHREADED_ERROR = 4
     202              :   INTEGER, PARAMETER :: DFTI_BAD_DESCRIPTOR = 5
     203              :   INTEGER, PARAMETER :: DFTI_UNIMPLEMENTED = 6
     204              :   INTEGER, PARAMETER :: DFTI_MKL_INTERNAL_ERROR = 7
     205              :   INTEGER, PARAMETER :: DFTI_NUMBER_OF_THREADS_ERROR = 8
     206              :   INTEGER, PARAMETER :: DFTI_1D_LENGTH_EXCEEDS_INT32 = 9
     207              :   INTEGER, PARAMETER :: DFTI_1D_MEMORY_EXCEEDS_INT32 = 9
     208              : 
     209              :   ! Maximum length of error string
     210              :   INTEGER, PARAMETER :: DFTI_MAX_MESSAGE_LENGTH = 80
     211              : 
     212              :   ! Maximum length of user-settable descriptor name
     213              :   INTEGER, PARAMETER :: DFTI_MAX_NAME_LENGTH = 10
     214              : 
     215              :   ! Maximum length of oneMKL version string
     216              :   INTEGER, PARAMETER :: DFTI_VERSION_LENGTH = 198
     217              : 
     218            0 : END MODULE MKL_DFT_TYPE
     219              : 
     220              : MODULE MKL_DFTI
     221              : 
     222              :   USE MKL_DFT_TYPE
     223              : 
     224              :   INTERFACE DftiCreateDescriptor
     225              : 
     226              :      ! overloading of DftiCreateDescriptor for 1D DFT
     227              :      FUNCTION dfti_create_descriptor_1d(desc, precision, domain, dim, length)
     228              :        USE MKL_DFT_TYPE
     229              :        !DEC$ ATTRIBUTES C :: dfti_create_descriptor_1d
     230              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_1d
     231              :        INTEGER dfti_create_descriptor_1d
     232              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     233              :        INTEGER, INTENT(IN) :: precision
     234              :        INTEGER, INTENT(IN) :: domain
     235              :        INTEGER, INTENT(IN) :: dim, length
     236              :      END FUNCTION dfti_create_descriptor_1d
     237              : 
     238              :      ! overloading of DftiCreateDescriptor for nD DFT
     239              :      FUNCTION dfti_create_descriptor_highd(desc, precision, domain, dim,length)
     240              :        USE MKL_DFT_TYPE
     241              :        !DEC$ ATTRIBUTES C :: dfti_create_descriptor_highd
     242              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_highd
     243              :        INTEGER dfti_create_descriptor_highd
     244              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     245              :        INTEGER, INTENT(IN) :: precision
     246              :        INTEGER, INTENT(IN) :: domain
     247              :        INTEGER, INTENT(IN) :: dim
     248              :        INTEGER, INTENT(IN), DIMENSION(*) :: length
     249              :      END FUNCTION dfti_create_descriptor_highd
     250              : 
     251              :      ! overloading of DftiCreateDescriptor for SP 1D DFT
     252              :      ! second parameter (precision) should be any REAL*4 value
     253              :      ! for dispatching during compile time
     254              :      FUNCTION dfti_create_descriptor_s_1d(desc, s, dom, one, dim)
     255              :        USE MKL_DFT_TYPE
     256              :        !DEC$ ATTRIBUTES C :: dfti_create_descriptor_s_1d
     257              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_s_1d
     258              :        INTEGER dfti_create_descriptor_s_1d
     259              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     260              :        REAL(DFTI_SPKP), INTENT(IN) :: s
     261              :        INTEGER, INTENT(IN) :: dom
     262              :        INTEGER, INTENT(IN) :: one
     263              :        INTEGER, INTENT(IN) :: dim
     264              :      END FUNCTION dfti_create_descriptor_s_1d
     265              : 
     266              :      ! overloading of DftiCreateDescriptor for SP nD DFT
     267              :      ! second parameter (precision) should be any REAL*4 value
     268              :      ! for dispatching during compile time
     269              :      FUNCTION dfti_create_descriptor_s_md(desc, s, dom, many, dims)
     270              :        USE MKL_DFT_TYPE
     271              :        !DEC$ ATTRIBUTES C :: dfti_create_descriptor_s_md
     272              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_s_md
     273              :        INTEGER dfti_create_descriptor_s_md
     274              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     275              :        REAL(DFTI_SPKP), INTENT(IN) :: s
     276              :        INTEGER, INTENT(IN) :: dom
     277              :        INTEGER, INTENT(IN) :: many
     278              :        INTEGER, INTENT(IN), DIMENSION(*) :: dims
     279              :      END FUNCTION dfti_create_descriptor_s_md
     280              : 
     281              :      ! overloading of DftiCreateDescriptor for DP 1D DFT
     282              :      ! second parameter (precision) should be any REAL*8 value
     283              :      ! for dispatching during compile time
     284              :      FUNCTION dfti_create_descriptor_d_1d(desc, d, dom, one, dim)
     285              :        USE MKL_DFT_TYPE
     286              :        !DEC$ ATTRIBUTES C :: dfti_create_descriptor_d_1d
     287              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_d_1d
     288              :        INTEGER dfti_create_descriptor_d_1d
     289              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     290              :        REAL(DFTI_DPKP), INTENT(IN) :: d
     291              :        INTEGER, INTENT(IN) :: dom
     292              :        INTEGER, INTENT(IN) :: one
     293              :        INTEGER, INTENT(IN) :: dim
     294              :      END FUNCTION dfti_create_descriptor_d_1d
     295              : 
     296              :      ! overloading of DftiCreateDescriptor for DP nD DFT
     297              :      ! second parameter (precision) should be any REAL*8 value
     298              :      ! for dispatching during compile time
     299              :      FUNCTION dfti_create_descriptor_d_md(desc, d, dom, many, dims)
     300              :        USE MKL_DFT_TYPE
     301              :        !DEC$ ATTRIBUTES C :: dfti_create_descriptor_d_md
     302              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_create_descriptor_d_md
     303              :        INTEGER dfti_create_descriptor_d_md
     304              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     305              :        REAL(DFTI_DPKP), INTENT(IN) :: d
     306              :        INTEGER, INTENT(IN) :: dom
     307              :        INTEGER, INTENT(IN) :: many
     308              :        INTEGER, INTENT(IN), DIMENSION(*) :: dims
     309              :      END FUNCTION dfti_create_descriptor_d_md
     310              : 
     311              :   END INTERFACE
     312              : 
     313              :   INTERFACE DftiCopyDescriptor
     314              : 
     315              :      FUNCTION dfti_copy_descriptor_external(desc, new_desc)
     316              :        USE MKL_DFT_TYPE
     317              :        !DEC$ ATTRIBUTES C :: dfti_copy_descriptor_external
     318              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_copy_descriptor_external
     319              :        INTEGER dfti_copy_descriptor_external
     320              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     321              :        TYPE(DFTI_DESCRIPTOR), POINTER :: new_desc
     322              :      END FUNCTION dfti_copy_descriptor_external
     323              : 
     324              :   END INTERFACE
     325              : 
     326              :   INTERFACE DftiCommitDescriptor
     327              : 
     328              :      FUNCTION dfti_commit_descriptor_external(desc)
     329              :        USE MKL_DFT_TYPE
     330              :        !DEC$ ATTRIBUTES C :: dfti_commit_descriptor_external
     331              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_commit_descriptor_external
     332              :        INTEGER dfti_commit_descriptor_external
     333              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     334              :      END FUNCTION dfti_commit_descriptor_external
     335              : 
     336              :   END INTERFACE
     337              : 
     338              :   INTERFACE DftiSetValue
     339              : 
     340              :      ! overloading of DftiSetValue for integer value
     341              :      FUNCTION dfti_set_value_intval(desc, OptName, IntVal)
     342              :        USE MKL_DFT_TYPE
     343              :        !DEC$ ATTRIBUTES C :: dfti_set_value_intval
     344              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_intval
     345              :        INTEGER dfti_set_value_intval
     346              :        INTEGER, INTENT(IN) :: OptName
     347              :        INTEGER, INTENT(IN) :: IntVal
     348              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     349              :      END FUNCTION dfti_set_value_intval
     350              : 
     351              :      ! overloading of DftiSetValue for SP value
     352              :      FUNCTION dfti_set_value_sglval(desc, OptName, sglval)
     353              :        USE MKL_DFT_TYPE
     354              :        !DEC$ ATTRIBUTES C :: dfti_set_value_sglval
     355              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_sglval
     356              :        INTEGER dfti_set_value_sglval
     357              :        INTEGER, INTENT(IN) :: OptName
     358              :        REAL(DFTI_SPKP), INTENT(IN) :: sglval
     359              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     360              :      END FUNCTION dfti_set_value_sglval
     361              : 
     362              :      ! overloading of DftiSetValue for DP value
     363              :      FUNCTION dfti_set_value_dblval(desc, OptName, DblVal)
     364              :        USE MKL_DFT_TYPE
     365              :        !DEC$ ATTRIBUTES C :: dfti_set_value_dblval
     366              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_dblval
     367              :        INTEGER dfti_set_value_dblval
     368              :        INTEGER, INTENT(IN) :: OptName
     369              :        REAL(DFTI_DPKP), INTENT(IN) :: DblVal
     370              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     371              :      END FUNCTION dfti_set_value_dblval
     372              : 
     373              :      ! overloading of DftiSetValue for integer vector
     374              :      FUNCTION dfti_set_value_intvec(desc, OptName, IntVec)
     375              :        USE MKL_DFT_TYPE
     376              :        !DEC$ ATTRIBUTES C :: dfti_set_value_intvec
     377              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_intvec
     378              :        INTEGER dfti_set_value_intvec
     379              :        INTEGER, INTENT(IN) :: OptName
     380              :        INTEGER, INTENT(IN), DIMENSION(*) :: IntVec
     381              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     382              :      END FUNCTION dfti_set_value_intvec
     383              : 
     384              :      ! overloading of DftiSetValue for char vector
     385              :      FUNCTION dfti_set_value_chars(desc, OptName, Chars)
     386              :        USE MKL_DFT_TYPE
     387              :        !DEC$ ATTRIBUTES C :: dfti_set_value_chars
     388              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_set_value_chars
     389              :        INTEGER dfti_set_value_chars
     390              :        INTEGER, INTENT(IN) :: OptName
     391              :        CHARACTER(*), INTENT(IN) :: Chars
     392              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     393              :      END FUNCTION dfti_set_value_chars
     394              : 
     395              :   END INTERFACE
     396              : 
     397              :   INTERFACE DftiGetValue
     398              : 
     399              :      ! overloading of DftiGetValue for integer value
     400              :      FUNCTION dfti_get_value_intval(desc, OptName, IntVal)
     401              :        USE MKL_DFT_TYPE
     402              :        !DEC$ ATTRIBUTES C :: dfti_get_value_intval
     403              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_intval
     404              :        INTEGER dfti_get_value_intval
     405              :        INTEGER, INTENT(IN) :: OptName
     406              :        INTEGER, INTENT(OUT) :: IntVal
     407              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     408              :      END FUNCTION dfti_get_value_intval
     409              : 
     410              :      ! overloading of DftiGetValue for SP value
     411              :      FUNCTION dfti_get_value_sglval(desc, OptName, sglval)
     412              :        USE MKL_DFT_TYPE
     413              :        !DEC$ ATTRIBUTES C :: dfti_get_value_sglval
     414              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_sglval
     415              :        INTEGER dfti_get_value_sglval
     416              :        INTEGER, INTENT(IN) :: OptName
     417              :        REAL(DFTI_SPKP), INTENT(OUT) :: sglval
     418              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     419              :      END FUNCTION dfti_get_value_sglval
     420              : 
     421              :      ! overloading of DftiGetValue for DP value
     422              :      FUNCTION dfti_get_value_dblval(desc, OptName, DblVal)
     423              :        USE MKL_DFT_TYPE
     424              :        !DEC$ ATTRIBUTES C :: dfti_get_value_dblval
     425              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_dblval
     426              :        INTEGER dfti_get_value_dblval
     427              :        INTEGER, INTENT(IN) :: OptName
     428              :        REAL(DFTI_DPKP), INTENT(OUT) :: DblVal
     429              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     430              :      END FUNCTION dfti_get_value_dblval
     431              : 
     432              :      ! overloading of DftiGetValue for integer vector
     433              :      FUNCTION dfti_get_value_intvec(desc, OptName, IntVec)
     434              :        USE MKL_DFT_TYPE
     435              :        !DEC$ ATTRIBUTES C :: dfti_get_value_intvec
     436              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_intvec
     437              :        INTEGER dfti_get_value_intvec
     438              :        INTEGER, INTENT(IN) :: OptName
     439              :        INTEGER, INTENT(OUT), DIMENSION(*) :: IntVec
     440              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     441              :      END FUNCTION dfti_get_value_intvec
     442              : 
     443              :      ! overloading of DftiGetValue for char vector
     444              :      FUNCTION dfti_get_value_chars(desc, OptName, Chars)
     445              :        USE MKL_DFT_TYPE
     446              :        !DEC$ ATTRIBUTES C :: dfti_get_value_chars
     447              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_get_value_chars
     448              :        INTEGER dfti_get_value_chars
     449              :        INTEGER, INTENT(IN) :: OptName
     450              :        CHARACTER(*), INTENT(OUT) :: Chars
     451              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     452              :      END FUNCTION dfti_get_value_chars
     453              : 
     454              :   END INTERFACE
     455              : 
     456              :   INTERFACE DftiComputeForward
     457              : 
     458              :      ! overloading of DftiComputeForward for SP R2C DFT (inplace)
     459              :      FUNCTION dfti_compute_forward_s(desc,sSrcDst)
     460              :        USE MKL_DFT_TYPE
     461              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_s
     462              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_s
     463              :        INTEGER dfti_compute_forward_s
     464              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     465              :        REAL(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: sSrcDst
     466              :      END FUNCTION dfti_compute_forward_s
     467              : 
     468              :      ! overloading of DftiComputeForward for SP C2C DFT (inplace)
     469              :      FUNCTION dfti_compute_forward_c(desc,cSrcDst)
     470              :        USE MKL_DFT_TYPE
     471              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_c
     472              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_c
     473              :        INTEGER dfti_compute_forward_c
     474              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     475              :        COMPLEX(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: cSrcDst
     476              :      END FUNCTION dfti_compute_forward_c
     477              : 
     478              :      ! overloading of DftiComputeForward for SP C2C DFT (inplace, split complex)
     479              :      FUNCTION dfti_compute_forward_ss(desc,sSrcDstRe,sSrcDstIm)
     480              :        USE MKL_DFT_TYPE
     481              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_ss
     482              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_ss
     483              :        INTEGER dfti_compute_forward_ss
     484              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     485              :        REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstRe
     486              :        REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstIm
     487              :      END FUNCTION dfti_compute_forward_ss
     488              : 
     489              :      ! overloading of DftiComputeForward for SP R2C DFT (out-of-place)
     490              :      FUNCTION dfti_compute_forward_sc(desc,sSrc,cDst)
     491              :        USE MKL_DFT_TYPE
     492              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_sc
     493              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_sc
     494              :        INTEGER dfti_compute_forward_sc
     495              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     496              :        REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrc
     497              :        COMPLEX(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: cDst
     498              :      END FUNCTION dfti_compute_forward_sc
     499              : 
     500              :      ! overloading of DftiComputeForward for SP C2C DFT (out-of-place)
     501              :      FUNCTION dfti_compute_forward_cc(desc,cSrc,cDst)
     502              :        USE MKL_DFT_TYPE
     503              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_cc
     504              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_cc
     505              :        INTEGER dfti_compute_forward_cc
     506              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     507              :        COMPLEX(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: cSrc
     508              :        COMPLEX(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: cDst
     509              :      END FUNCTION dfti_compute_forward_cc
     510              : 
     511              :      ! overloading of DftiComputeForward for SP C2C DFT (out-of-place, split
     512              :      ! complex)
     513              :      FUNCTION dfti_compute_forward_ssss(desc,sSrcRe,sSrcIm,sDstRe,sDstIm)
     514              :        USE MKL_DFT_TYPE
     515              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_ssss
     516              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_ssss
     517              :        INTEGER dfti_compute_forward_ssss
     518              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     519              :        REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcRe
     520              :        REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcIm
     521              :        REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstRe
     522              :        REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstIm
     523              :      END FUNCTION dfti_compute_forward_ssss
     524              : 
     525              :      ! overloading of DftiComputeForward for DP R2C DFT (inplace)
     526              :      FUNCTION dfti_compute_forward_d(desc,dSrcDst)
     527              :        USE MKL_DFT_TYPE
     528              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_d
     529              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_d
     530              :        INTEGER dfti_compute_forward_d
     531              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     532              :        REAL(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: dSrcDst
     533              :      END FUNCTION dfti_compute_forward_d
     534              : 
     535              :      ! overloading of DftiComputeForward for DP C2C DFT (inplace)
     536              :      FUNCTION dfti_compute_forward_z(desc,zSrcDst)
     537              :        USE MKL_DFT_TYPE
     538              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_z
     539              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_z
     540              :        INTEGER dfti_compute_forward_z
     541              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     542              :        COMPLEX(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: zSrcDst
     543              :      END FUNCTION dfti_compute_forward_z
     544              : 
     545              :      ! overloading of DftiComputeForward for DP C2C DFT (inplace, split complex)
     546              :      FUNCTION dfti_compute_forward_dd(desc,dSrcDstRe,dSrcDstIm)
     547              :        USE MKL_DFT_TYPE
     548              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_dd
     549              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dd
     550              :        INTEGER dfti_compute_forward_dd
     551              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     552              :        REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstRe
     553              :        REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstIm
     554              :      END FUNCTION dfti_compute_forward_dd
     555              : 
     556              :      ! overloading of DftiComputeForward for DP R2C DFT (out-of-place)
     557              :      FUNCTION dfti_compute_forward_dz(desc,dSrc,zDst)
     558              :        USE MKL_DFT_TYPE
     559              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_dz
     560              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dz
     561              :        INTEGER dfti_compute_forward_dz
     562              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     563              :        REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrc
     564              :        COMPLEX(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: zDst
     565              :      END FUNCTION dfti_compute_forward_dz
     566              : 
     567              :      ! overloading of DftiComputeForward for DP C2C DFT (out-of-place)
     568              :      FUNCTION dfti_compute_forward_zz(desc,zSrc,zDst)
     569              :        USE MKL_DFT_TYPE
     570              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_zz
     571              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_zz
     572              :        INTEGER dfti_compute_forward_zz
     573              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     574              :        COMPLEX(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: zSrc
     575              :        COMPLEX(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: zDst
     576              :      END FUNCTION dfti_compute_forward_zz
     577              : 
     578              :      ! overloading of DftiComputeForward for DP C2C DFT (out-of-place, split
     579              :      ! complex)
     580              :      FUNCTION dfti_compute_forward_dddd(desc,dSrcRe,dSrcIm,dDstRe,dDstIm)
     581              :        USE MKL_DFT_TYPE
     582              :        !DEC$ ATTRIBUTES C :: dfti_compute_forward_dddd
     583              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_forward_dddd
     584              :        INTEGER dfti_compute_forward_dddd
     585              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     586              :        REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcRe
     587              :        REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcIm
     588              :        REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstRe
     589              :        REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstIm
     590              :      END FUNCTION dfti_compute_forward_dddd
     591              : 
     592              :   END INTERFACE DftiComputeForward
     593              : 
     594              :   INTERFACE DftiComputeBackward
     595              : 
     596              : 
     597              :      ! overloading of DftiComputeBackward for SP C2R DFT (inplace)
     598              :      FUNCTION dfti_compute_backward_s(desc,sSrcDst)
     599              :        USE MKL_DFT_TYPE
     600              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_s
     601              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_s
     602              :        INTEGER dfti_compute_backward_s
     603              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     604              :        REAL(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: sSrcDst
     605              :      END FUNCTION dfti_compute_backward_s
     606              : 
     607              :      ! overloading of DftiComputeBackward for SP C2C DFT (inplace)
     608              :      FUNCTION dfti_compute_backward_c(desc,cSrcDst)
     609              :        USE MKL_DFT_TYPE
     610              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_c
     611              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_c
     612              :        INTEGER dfti_compute_backward_c
     613              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     614              :        COMPLEX(DFTI_SPKP), INTENT(INOUT), DIMENSION(*) :: cSrcDst
     615              :      END FUNCTION dfti_compute_backward_c
     616              : 
     617              :      ! overloading of DftiComputeBackward for SP C2C DFT (inplace, split complex)
     618              :      FUNCTION dfti_compute_backward_ss(desc,sSrcDstRe,sSrcDstIm)
     619              :        USE MKL_DFT_TYPE
     620              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_ss
     621              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_ss
     622              :        INTEGER dfti_compute_backward_ss
     623              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     624              :        REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstRe
     625              :        REAL(DFTI_SPKP), DIMENSION(*) :: sSrcDstIm
     626              :      END FUNCTION dfti_compute_backward_ss
     627              : 
     628              :      ! overloading of DftiComputeBackward for SP C2R DFT (out-of-place)
     629              :      FUNCTION dfti_compute_backward_cs(desc,cSrc,sDst)
     630              :        USE MKL_DFT_TYPE
     631              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_cs
     632              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_cs
     633              :        INTEGER dfti_compute_backward_cs
     634              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     635              :        COMPLEX(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: cSrc
     636              :        REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDst
     637              :      END FUNCTION dfti_compute_backward_cs
     638              : 
     639              :      ! overloading of DftiComputeBackward for SP C2C DFT (out-of-place)
     640              :      FUNCTION dfti_compute_backward_cc(desc,cSrc,cDst)
     641              :        USE MKL_DFT_TYPE
     642              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_cc
     643              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_cc
     644              :        INTEGER dfti_compute_backward_cc
     645              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     646              :        COMPLEX(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: cSrc
     647              :        COMPLEX(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: cDst
     648              :      END FUNCTION dfti_compute_backward_cc
     649              : 
     650              :      ! overloading of DftiComputeBackward for SP C2C DFT (out-of-place, split
     651              :      ! complex)
     652              :      FUNCTION dfti_compute_backward_ssss(desc,sSrcRe,sSrcIm,sDstRe,sDstIm)
     653              :        USE MKL_DFT_TYPE
     654              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_ssss
     655              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_ssss
     656              :        INTEGER dfti_compute_backward_ssss
     657              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     658              :        REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcRe
     659              :        REAL(DFTI_SPKP), INTENT(IN), DIMENSION(*) :: sSrcIm
     660              :        REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstRe
     661              :        REAL(DFTI_SPKP), INTENT(OUT), DIMENSION(*) :: sDstIm
     662              :      END FUNCTION dfti_compute_backward_ssss
     663              : 
     664              :      ! overloading of DftiComputeBackward for DP C2R DFT (inplace)
     665              :      FUNCTION dfti_compute_backward_d(desc,dSrcDst)
     666              :        USE MKL_DFT_TYPE
     667              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_d
     668              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_d
     669              :        INTEGER dfti_compute_backward_d
     670              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     671              :        REAL(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: dSrcDst
     672              :      END FUNCTION dfti_compute_backward_d
     673              : 
     674              :      ! overloading of DftiComputeBackward for DP C2C DFT (inplace)
     675              :      FUNCTION dfti_compute_backward_z(desc,zSrcDst)
     676              :        USE MKL_DFT_TYPE
     677              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_z
     678              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_z
     679              :        INTEGER dfti_compute_backward_z
     680              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     681              :        COMPLEX(DFTI_DPKP), INTENT(INOUT), DIMENSION(*) :: zSrcDst
     682              :      END FUNCTION dfti_compute_backward_z
     683              : 
     684              :      ! overloading of DftiComputeBackward for DP C2C DFT (inplace, split complex)
     685              :      FUNCTION dfti_compute_backward_dd(desc,dSrcDstRe,dSrcDstIm)
     686              :        USE MKL_DFT_TYPE
     687              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_dd
     688              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_dd
     689              :        INTEGER dfti_compute_backward_dd
     690              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     691              :        REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstRe
     692              :        REAL(DFTI_DPKP), DIMENSION(*) :: dSrcDstIm
     693              :      END FUNCTION dfti_compute_backward_dd
     694              : 
     695              :      ! overloading of DftiComputeBackward for DP C2R DFT (out-of-place)
     696              :      FUNCTION dfti_compute_backward_zd(desc,zSrc,dDst)
     697              :        USE MKL_DFT_TYPE
     698              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_zd
     699              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_zd
     700              :        INTEGER dfti_compute_backward_zd
     701              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     702              :        COMPLEX(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: zSrc
     703              :        REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDst
     704              :      END FUNCTION dfti_compute_backward_zd
     705              : 
     706              :      ! overloading of DftiComputeBackward for DP C2C DFT (out-of-place)
     707              :      FUNCTION dfti_compute_backward_zz(desc,zSrc,zDst)
     708              :        USE MKL_DFT_TYPE
     709              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_zz
     710              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_zz
     711              :        INTEGER dfti_compute_backward_zz
     712              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     713              :        COMPLEX(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: zSrc
     714              :        COMPLEX(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: zDst
     715              :      END FUNCTION dfti_compute_backward_zz
     716              : 
     717              :      ! overloading of DftiComputeBackward for DP C2C DFT (out-of-place, split
     718              :      ! complex)
     719              :      FUNCTION dfti_compute_backward_dddd(desc,dSrcRe,dSrcIm,dDstRe,dDstIm)
     720              :        USE MKL_DFT_TYPE
     721              :        !DEC$ ATTRIBUTES C :: dfti_compute_backward_dddd
     722              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_compute_backward_dddd
     723              :        INTEGER dfti_compute_backward_dddd
     724              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     725              :        REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcRe
     726              :        REAL(DFTI_DPKP), INTENT(IN), DIMENSION(*) :: dSrcIm
     727              :        REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstRe
     728              :        REAL(DFTI_DPKP), INTENT(OUT), DIMENSION(*) :: dDstIm
     729              :      END FUNCTION dfti_compute_backward_dddd
     730              : 
     731              :   END INTERFACE DftiComputeBackward
     732              : 
     733              :   INTERFACE DftiFreeDescriptor
     734              : 
     735              :      FUNCTION dfti_free_descriptor_external(desc)
     736              :        USE MKL_DFT_TYPE
     737              :        !DEC$ ATTRIBUTES C :: dfti_free_descriptor_external
     738              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_free_descriptor_external
     739              :        INTEGER dfti_free_descriptor_external
     740              :        TYPE(DFTI_DESCRIPTOR), POINTER :: desc
     741              :      END FUNCTION dfti_free_descriptor_external
     742              : 
     743              :   END INTERFACE
     744              : 
     745              :   INTERFACE DftiErrorClass
     746              : 
     747              :      FUNCTION dfti_error_class_external(Status, ErrorClass)
     748              :        USE MKL_DFT_TYPE
     749              :        !DEC$ ATTRIBUTES C :: dfti_error_class_external
     750              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_error_class_external
     751              :        LOGICAL dfti_error_class_external
     752              :        INTEGER, INTENT(IN) :: Status
     753              :        INTEGER, INTENT(IN) :: ErrorClass
     754              :      END FUNCTION dfti_error_class_external
     755              : 
     756              :   END INTERFACE
     757              : 
     758              :   INTERFACE DftiErrorMessage
     759              : 
     760              :      FUNCTION dfti_error_message_external(Status)
     761              :        USE MKL_DFT_TYPE
     762              :        !DEC$ ATTRIBUTES C :: dfti_error_message_external
     763              :        !DEC$ ATTRIBUTES REFERENCE :: dfti_error_message_external
     764              :        CHARACTER(LEN=DFTI_MAX_MESSAGE_LENGTH) :: dfti_error_message_external
     765              :        INTEGER, INTENT(IN) :: Status
     766              :      END FUNCTION dfti_error_message_external
     767              : 
     768              :   END INTERFACE
     769              : 
     770              : END MODULE MKL_DFTI
        

Generated by: LCOV version 2.3-1