mkl_trig_transforms.f90 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. !===============================================================================
  2. ! Copyright 2006-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. ! Content:
  15. ! Intel(R) oneAPI Math Kernel Library (oneMKL) interface for TT routines
  16. !*******************************************************************************
  17. MODULE MKL_TT_TYPE
  18. ! Parameters definitions for the kind of the Trigonometric Transform
  19. INTEGER, PARAMETER :: MKL_SINE_TRANSFORM = 0
  20. INTEGER, PARAMETER :: MKL_COSINE_TRANSFORM = 1
  21. INTEGER, PARAMETER :: MKL_STAGGERED_COSINE_TRANSFORM = 2
  22. INTEGER, PARAMETER :: MKL_STAGGERED_SINE_TRANSFORM = 3
  23. INTEGER, PARAMETER :: MKL_STAGGERED2_COSINE_TRANSFORM = 4
  24. INTEGER, PARAMETER :: MKL_STAGGERED2_SINE_TRANSFORM = 5
  25. END MODULE MKL_TT_TYPE
  26. MODULE MKL_TRIG_TRANSFORMS
  27. USE MKL_TT_TYPE
  28. USE MKL_DFTI
  29. INTERFACE
  30. SUBROUTINE D_INIT_TRIG_TRANSFORM(n, tt_type, ipar,dpar, stat)
  31. USE MKL_DFT_TYPE
  32. !DEC$ ATTRIBUTES C, ALIAS: '_d_init_trig_transform' :: D_INIT_TRIG_TRANSFORM
  33. !MS$ATTRIBUTES REFERENCE :: n
  34. !MS$ATTRIBUTES REFERENCE :: tt_type
  35. !MS$ATTRIBUTES REFERENCE :: ipar
  36. !MS$ATTRIBUTES REFERENCE :: dpar
  37. !MS$ATTRIBUTES REFERENCE :: stat
  38. INTEGER, INTENT(IN) :: n, tt_type
  39. INTEGER, INTENT(INOUT) :: ipar(*)
  40. REAL(8), INTENT(INOUT) :: dpar(*)
  41. INTEGER, INTENT(OUT) :: stat
  42. END SUBROUTINE D_INIT_TRIG_TRANSFORM
  43. SUBROUTINE D_COMMIT_TRIG_TRANSFORM(f, handle, ipar,dpar, stat)
  44. USE MKL_DFT_TYPE
  45. !DEC$ ATTRIBUTES C, ALIAS: '_d_commit_trig_transform' :: D_COMMIT_TRIG_TRANSFORM
  46. !MS$ATTRIBUTES REFERENCE :: f
  47. !MS$ATTRIBUTES REFERENCE :: handle
  48. !MS$ATTRIBUTES REFERENCE :: ipar
  49. !MS$ATTRIBUTES REFERENCE :: dpar
  50. !MS$ATTRIBUTES REFERENCE :: stat
  51. REAL(8), INTENT(INOUT) :: f(*)
  52. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  53. INTEGER, INTENT(INOUT) :: ipar(*)
  54. REAL(8), INTENT(OUT) :: dpar(*)
  55. INTEGER, INTENT(OUT) :: stat
  56. END SUBROUTINE D_COMMIT_TRIG_TRANSFORM
  57. SUBROUTINE D_FORWARD_TRIG_TRANSFORM(f, handle, ipar,dpar, stat)
  58. USE MKL_DFT_TYPE
  59. !DEC$ ATTRIBUTES C, ALIAS: '_d_forward_trig_transform' :: D_FORWARD_TRIG_TRANSFORM
  60. !MS$ATTRIBUTES REFERENCE :: f
  61. !MS$ATTRIBUTES REFERENCE :: handle
  62. !MS$ATTRIBUTES REFERENCE :: ipar
  63. !MS$ATTRIBUTES REFERENCE :: dpar
  64. !MS$ATTRIBUTES REFERENCE :: stat
  65. REAL(8), INTENT(INOUT) :: f(*)
  66. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  67. INTEGER, INTENT(INOUT) :: ipar(*)
  68. REAL(8), INTENT(IN) :: dpar(*)
  69. INTEGER, INTENT(OUT) :: stat
  70. END SUBROUTINE D_FORWARD_TRIG_TRANSFORM
  71. SUBROUTINE D_BACKWARD_TRIG_TRANSFORM(f, handle, ipar,dpar, stat)
  72. USE MKL_DFT_TYPE
  73. !DEC$ ATTRIBUTES C, ALIAS: '_d_backward_trig_transform' :: D_BACKWARD_TRIG_TRANSFORM
  74. !MS$ATTRIBUTES REFERENCE :: f
  75. !MS$ATTRIBUTES REFERENCE :: handle
  76. !MS$ATTRIBUTES REFERENCE :: ipar
  77. !MS$ATTRIBUTES REFERENCE :: dpar
  78. !MS$ATTRIBUTES REFERENCE :: stat
  79. REAL(8), INTENT(INOUT) :: f(*)
  80. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  81. INTEGER, INTENT(INOUT) :: ipar(*)
  82. REAL(8), INTENT(IN) :: dpar(*)
  83. INTEGER, INTENT(OUT) :: stat
  84. END SUBROUTINE D_BACKWARD_TRIG_TRANSFORM
  85. SUBROUTINE S_INIT_TRIG_TRANSFORM(n, tt_type, ipar,spar, stat)
  86. USE MKL_DFT_TYPE
  87. !DEC$ ATTRIBUTES C, ALIAS: '_s_init_trig_transform' :: S_INIT_TRIG_TRANSFORM
  88. !MS$ATTRIBUTES REFERENCE :: n
  89. !MS$ATTRIBUTES REFERENCE :: tt_type
  90. !MS$ATTRIBUTES REFERENCE :: ipar
  91. !MS$ATTRIBUTES REFERENCE :: spar
  92. !MS$ATTRIBUTES REFERENCE :: stat
  93. INTEGER, INTENT(IN) :: n, tt_type
  94. INTEGER, INTENT(INOUT) :: ipar(*)
  95. REAL(4), INTENT(INOUT) :: spar(*)
  96. INTEGER, INTENT(OUT) :: stat
  97. END SUBROUTINE S_INIT_TRIG_TRANSFORM
  98. SUBROUTINE S_COMMIT_TRIG_TRANSFORM(f, handle, ipar,spar, stat)
  99. USE MKL_DFT_TYPE
  100. !DEC$ ATTRIBUTES C, ALIAS: '_s_commit_trig_transform' :: S_COMMIT_TRIG_TRANSFORM
  101. !MS$ATTRIBUTES REFERENCE :: f
  102. !MS$ATTRIBUTES REFERENCE :: handle
  103. !MS$ATTRIBUTES REFERENCE :: ipar
  104. !MS$ATTRIBUTES REFERENCE :: spar
  105. !MS$ATTRIBUTES REFERENCE :: stat
  106. REAL(4), INTENT(INOUT) :: f(*)
  107. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  108. INTEGER, INTENT(INOUT) :: ipar(*)
  109. REAL(4), INTENT(OUT) :: spar(*)
  110. INTEGER, INTENT(OUT) :: stat
  111. END SUBROUTINE S_COMMIT_TRIG_TRANSFORM
  112. SUBROUTINE S_FORWARD_TRIG_TRANSFORM(f, handle, ipar,spar, stat)
  113. USE MKL_DFT_TYPE
  114. !DEC$ ATTRIBUTES C, ALIAS: '_s_forward_trig_transform' :: S_FORWARD_TRIG_TRANSFORM
  115. !MS$ATTRIBUTES REFERENCE :: f
  116. !MS$ATTRIBUTES REFERENCE :: handle
  117. !MS$ATTRIBUTES REFERENCE :: ipar
  118. !MS$ATTRIBUTES REFERENCE :: spar
  119. !MS$ATTRIBUTES REFERENCE :: stat
  120. REAL(4), INTENT(INOUT) :: f(*)
  121. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  122. INTEGER, INTENT(INOUT) :: ipar(*)
  123. REAL(4), INTENT(IN) :: spar(*)
  124. INTEGER, INTENT(OUT) :: stat
  125. END SUBROUTINE S_FORWARD_TRIG_TRANSFORM
  126. SUBROUTINE S_BACKWARD_TRIG_TRANSFORM(f, handle, ipar,spar, stat)
  127. USE MKL_DFT_TYPE
  128. !DEC$ ATTRIBUTES C, ALIAS: '_s_backward_trig_transform' :: S_BACKWARD_TRIG_TRANSFORM
  129. !MS$ATTRIBUTES REFERENCE :: f
  130. !MS$ATTRIBUTES REFERENCE :: handle
  131. !MS$ATTRIBUTES REFERENCE :: ipar
  132. !MS$ATTRIBUTES REFERENCE :: spar
  133. !MS$ATTRIBUTES REFERENCE :: stat
  134. REAL(4), INTENT(INOUT) :: f(*)
  135. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  136. INTEGER, INTENT(INOUT) :: ipar(*)
  137. REAL(4), INTENT(IN) :: spar(*)
  138. INTEGER, INTENT(OUT) :: stat
  139. END SUBROUTINE S_BACKWARD_TRIG_TRANSFORM
  140. SUBROUTINE FREE_TRIG_TRANSFORM(handle, ipar,stat)
  141. USE MKL_DFT_TYPE
  142. !DEC$ ATTRIBUTES C, ALIAS: '_free_trig_transform' :: FREE_TRIG_TRANSFORM
  143. !MS$ATTRIBUTES REFERENCE :: handle
  144. !MS$ATTRIBUTES REFERENCE :: ipar
  145. !MS$ATTRIBUTES REFERENCE :: stat
  146. INTEGER, INTENT(INOUT) :: ipar(*)
  147. TYPE(DFTI_DESCRIPTOR), POINTER :: handle
  148. INTEGER, INTENT(OUT) :: stat
  149. END SUBROUTINE FREE_TRIG_TRANSFORM
  150. END INTERFACE
  151. END MODULE MKL_TRIG_TRANSFORMS