annotate src/fftw-3.3.5/api/fftw3.f03.in @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents 7867fa7e1b6b
children
rev   line source
cannam@127 1 ! Generated automatically. DO NOT EDIT!
cannam@127 2
cannam@127 3 integer(C_INT), parameter :: FFTW_R2HC = 0
cannam@127 4 integer(C_INT), parameter :: FFTW_HC2R = 1
cannam@127 5 integer(C_INT), parameter :: FFTW_DHT = 2
cannam@127 6 integer(C_INT), parameter :: FFTW_REDFT00 = 3
cannam@127 7 integer(C_INT), parameter :: FFTW_REDFT01 = 4
cannam@127 8 integer(C_INT), parameter :: FFTW_REDFT10 = 5
cannam@127 9 integer(C_INT), parameter :: FFTW_REDFT11 = 6
cannam@127 10 integer(C_INT), parameter :: FFTW_RODFT00 = 7
cannam@127 11 integer(C_INT), parameter :: FFTW_RODFT01 = 8
cannam@127 12 integer(C_INT), parameter :: FFTW_RODFT10 = 9
cannam@127 13 integer(C_INT), parameter :: FFTW_RODFT11 = 10
cannam@127 14 integer(C_INT), parameter :: FFTW_FORWARD = -1
cannam@127 15 integer(C_INT), parameter :: FFTW_BACKWARD = +1
cannam@127 16 integer(C_INT), parameter :: FFTW_MEASURE = 0
cannam@127 17 integer(C_INT), parameter :: FFTW_DESTROY_INPUT = 1
cannam@127 18 integer(C_INT), parameter :: FFTW_UNALIGNED = 2
cannam@127 19 integer(C_INT), parameter :: FFTW_CONSERVE_MEMORY = 4
cannam@127 20 integer(C_INT), parameter :: FFTW_EXHAUSTIVE = 8
cannam@127 21 integer(C_INT), parameter :: FFTW_PRESERVE_INPUT = 16
cannam@127 22 integer(C_INT), parameter :: FFTW_PATIENT = 32
cannam@127 23 integer(C_INT), parameter :: FFTW_ESTIMATE = 64
cannam@127 24 integer(C_INT), parameter :: FFTW_WISDOM_ONLY = 2097152
cannam@127 25 integer(C_INT), parameter :: FFTW_ESTIMATE_PATIENT = 128
cannam@127 26 integer(C_INT), parameter :: FFTW_BELIEVE_PCOST = 256
cannam@127 27 integer(C_INT), parameter :: FFTW_NO_DFT_R2HC = 512
cannam@127 28 integer(C_INT), parameter :: FFTW_NO_NONTHREADED = 1024
cannam@127 29 integer(C_INT), parameter :: FFTW_NO_BUFFERING = 2048
cannam@127 30 integer(C_INT), parameter :: FFTW_NO_INDIRECT_OP = 4096
cannam@127 31 integer(C_INT), parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192
cannam@127 32 integer(C_INT), parameter :: FFTW_NO_RANK_SPLITS = 16384
cannam@127 33 integer(C_INT), parameter :: FFTW_NO_VRANK_SPLITS = 32768
cannam@127 34 integer(C_INT), parameter :: FFTW_NO_VRECURSE = 65536
cannam@127 35 integer(C_INT), parameter :: FFTW_NO_SIMD = 131072
cannam@127 36 integer(C_INT), parameter :: FFTW_NO_SLOW = 262144
cannam@127 37 integer(C_INT), parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288
cannam@127 38 integer(C_INT), parameter :: FFTW_ALLOW_PRUNING = 1048576
cannam@127 39
cannam@127 40 type, bind(C) :: fftw_iodim
cannam@127 41 integer(C_INT) n, is, os
cannam@127 42 end type fftw_iodim
cannam@127 43 type, bind(C) :: fftw_iodim64
cannam@127 44 integer(C_INTPTR_T) n, is, os
cannam@127 45 end type fftw_iodim64
cannam@127 46
cannam@127 47 interface
cannam@127 48 type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftw_plan_dft')
cannam@127 49 import
cannam@127 50 integer(C_INT), value :: rank
cannam@127 51 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 52 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 53 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 54 integer(C_INT), value :: sign
cannam@127 55 integer(C_INT), value :: flags
cannam@127 56 end function fftw_plan_dft
cannam@127 57
cannam@127 58 type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftw_plan_dft_1d')
cannam@127 59 import
cannam@127 60 integer(C_INT), value :: n
cannam@127 61 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 62 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 63 integer(C_INT), value :: sign
cannam@127 64 integer(C_INT), value :: flags
cannam@127 65 end function fftw_plan_dft_1d
cannam@127 66
cannam@127 67 type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftw_plan_dft_2d')
cannam@127 68 import
cannam@127 69 integer(C_INT), value :: n0
cannam@127 70 integer(C_INT), value :: n1
cannam@127 71 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 72 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 73 integer(C_INT), value :: sign
cannam@127 74 integer(C_INT), value :: flags
cannam@127 75 end function fftw_plan_dft_2d
cannam@127 76
cannam@127 77 type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftw_plan_dft_3d')
cannam@127 78 import
cannam@127 79 integer(C_INT), value :: n0
cannam@127 80 integer(C_INT), value :: n1
cannam@127 81 integer(C_INT), value :: n2
cannam@127 82 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 83 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 84 integer(C_INT), value :: sign
cannam@127 85 integer(C_INT), value :: flags
cannam@127 86 end function fftw_plan_dft_3d
cannam@127 87
cannam@127 88 type(C_PTR) function fftw_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
cannam@127 89 bind(C, name='fftw_plan_many_dft')
cannam@127 90 import
cannam@127 91 integer(C_INT), value :: rank
cannam@127 92 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 93 integer(C_INT), value :: howmany
cannam@127 94 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 95 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 96 integer(C_INT), value :: istride
cannam@127 97 integer(C_INT), value :: idist
cannam@127 98 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 99 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 100 integer(C_INT), value :: ostride
cannam@127 101 integer(C_INT), value :: odist
cannam@127 102 integer(C_INT), value :: sign
cannam@127 103 integer(C_INT), value :: flags
cannam@127 104 end function fftw_plan_many_dft
cannam@127 105
cannam@127 106 type(C_PTR) function fftw_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
cannam@127 107 bind(C, name='fftw_plan_guru_dft')
cannam@127 108 import
cannam@127 109 integer(C_INT), value :: rank
cannam@127 110 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 111 integer(C_INT), value :: howmany_rank
cannam@127 112 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 113 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 114 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 115 integer(C_INT), value :: sign
cannam@127 116 integer(C_INT), value :: flags
cannam@127 117 end function fftw_plan_guru_dft
cannam@127 118
cannam@127 119 type(C_PTR) function fftw_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
cannam@127 120 bind(C, name='fftw_plan_guru_split_dft')
cannam@127 121 import
cannam@127 122 integer(C_INT), value :: rank
cannam@127 123 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 124 integer(C_INT), value :: howmany_rank
cannam@127 125 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 126 real(C_DOUBLE), dimension(*), intent(out) :: ri
cannam@127 127 real(C_DOUBLE), dimension(*), intent(out) :: ii
cannam@127 128 real(C_DOUBLE), dimension(*), intent(out) :: ro
cannam@127 129 real(C_DOUBLE), dimension(*), intent(out) :: io
cannam@127 130 integer(C_INT), value :: flags
cannam@127 131 end function fftw_plan_guru_split_dft
cannam@127 132
cannam@127 133 type(C_PTR) function fftw_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
cannam@127 134 bind(C, name='fftw_plan_guru64_dft')
cannam@127 135 import
cannam@127 136 integer(C_INT), value :: rank
cannam@127 137 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 138 integer(C_INT), value :: howmany_rank
cannam@127 139 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 140 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 141 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 142 integer(C_INT), value :: sign
cannam@127 143 integer(C_INT), value :: flags
cannam@127 144 end function fftw_plan_guru64_dft
cannam@127 145
cannam@127 146 type(C_PTR) function fftw_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
cannam@127 147 bind(C, name='fftw_plan_guru64_split_dft')
cannam@127 148 import
cannam@127 149 integer(C_INT), value :: rank
cannam@127 150 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 151 integer(C_INT), value :: howmany_rank
cannam@127 152 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 153 real(C_DOUBLE), dimension(*), intent(out) :: ri
cannam@127 154 real(C_DOUBLE), dimension(*), intent(out) :: ii
cannam@127 155 real(C_DOUBLE), dimension(*), intent(out) :: ro
cannam@127 156 real(C_DOUBLE), dimension(*), intent(out) :: io
cannam@127 157 integer(C_INT), value :: flags
cannam@127 158 end function fftw_plan_guru64_split_dft
cannam@127 159
cannam@127 160 subroutine fftw_execute_dft(p,in,out) bind(C, name='fftw_execute_dft')
cannam@127 161 import
cannam@127 162 type(C_PTR), value :: p
cannam@127 163 complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
cannam@127 164 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 165 end subroutine fftw_execute_dft
cannam@127 166
cannam@127 167 subroutine fftw_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftw_execute_split_dft')
cannam@127 168 import
cannam@127 169 type(C_PTR), value :: p
cannam@127 170 real(C_DOUBLE), dimension(*), intent(inout) :: ri
cannam@127 171 real(C_DOUBLE), dimension(*), intent(inout) :: ii
cannam@127 172 real(C_DOUBLE), dimension(*), intent(out) :: ro
cannam@127 173 real(C_DOUBLE), dimension(*), intent(out) :: io
cannam@127 174 end subroutine fftw_execute_split_dft
cannam@127 175
cannam@127 176 type(C_PTR) function fftw_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
cannam@127 177 bind(C, name='fftw_plan_many_dft_r2c')
cannam@127 178 import
cannam@127 179 integer(C_INT), value :: rank
cannam@127 180 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 181 integer(C_INT), value :: howmany
cannam@127 182 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 183 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 184 integer(C_INT), value :: istride
cannam@127 185 integer(C_INT), value :: idist
cannam@127 186 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 187 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 188 integer(C_INT), value :: ostride
cannam@127 189 integer(C_INT), value :: odist
cannam@127 190 integer(C_INT), value :: flags
cannam@127 191 end function fftw_plan_many_dft_r2c
cannam@127 192
cannam@127 193 type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_r2c')
cannam@127 194 import
cannam@127 195 integer(C_INT), value :: rank
cannam@127 196 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 197 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 198 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 199 integer(C_INT), value :: flags
cannam@127 200 end function fftw_plan_dft_r2c
cannam@127 201
cannam@127 202 type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_r2c_1d')
cannam@127 203 import
cannam@127 204 integer(C_INT), value :: n
cannam@127 205 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 206 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 207 integer(C_INT), value :: flags
cannam@127 208 end function fftw_plan_dft_r2c_1d
cannam@127 209
cannam@127 210 type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_r2c_2d')
cannam@127 211 import
cannam@127 212 integer(C_INT), value :: n0
cannam@127 213 integer(C_INT), value :: n1
cannam@127 214 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 215 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 216 integer(C_INT), value :: flags
cannam@127 217 end function fftw_plan_dft_r2c_2d
cannam@127 218
cannam@127 219 type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_r2c_3d')
cannam@127 220 import
cannam@127 221 integer(C_INT), value :: n0
cannam@127 222 integer(C_INT), value :: n1
cannam@127 223 integer(C_INT), value :: n2
cannam@127 224 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 225 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 226 integer(C_INT), value :: flags
cannam@127 227 end function fftw_plan_dft_r2c_3d
cannam@127 228
cannam@127 229 type(C_PTR) function fftw_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
cannam@127 230 bind(C, name='fftw_plan_many_dft_c2r')
cannam@127 231 import
cannam@127 232 integer(C_INT), value :: rank
cannam@127 233 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 234 integer(C_INT), value :: howmany
cannam@127 235 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 236 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 237 integer(C_INT), value :: istride
cannam@127 238 integer(C_INT), value :: idist
cannam@127 239 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 240 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 241 integer(C_INT), value :: ostride
cannam@127 242 integer(C_INT), value :: odist
cannam@127 243 integer(C_INT), value :: flags
cannam@127 244 end function fftw_plan_many_dft_c2r
cannam@127 245
cannam@127 246 type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftw_plan_dft_c2r')
cannam@127 247 import
cannam@127 248 integer(C_INT), value :: rank
cannam@127 249 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 250 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 251 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 252 integer(C_INT), value :: flags
cannam@127 253 end function fftw_plan_dft_c2r
cannam@127 254
cannam@127 255 type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftw_plan_dft_c2r_1d')
cannam@127 256 import
cannam@127 257 integer(C_INT), value :: n
cannam@127 258 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 259 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 260 integer(C_INT), value :: flags
cannam@127 261 end function fftw_plan_dft_c2r_1d
cannam@127 262
cannam@127 263 type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftw_plan_dft_c2r_2d')
cannam@127 264 import
cannam@127 265 integer(C_INT), value :: n0
cannam@127 266 integer(C_INT), value :: n1
cannam@127 267 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 268 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 269 integer(C_INT), value :: flags
cannam@127 270 end function fftw_plan_dft_c2r_2d
cannam@127 271
cannam@127 272 type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftw_plan_dft_c2r_3d')
cannam@127 273 import
cannam@127 274 integer(C_INT), value :: n0
cannam@127 275 integer(C_INT), value :: n1
cannam@127 276 integer(C_INT), value :: n2
cannam@127 277 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 278 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 279 integer(C_INT), value :: flags
cannam@127 280 end function fftw_plan_dft_c2r_3d
cannam@127 281
cannam@127 282 type(C_PTR) function fftw_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 283 bind(C, name='fftw_plan_guru_dft_r2c')
cannam@127 284 import
cannam@127 285 integer(C_INT), value :: rank
cannam@127 286 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 287 integer(C_INT), value :: howmany_rank
cannam@127 288 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 289 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 290 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 291 integer(C_INT), value :: flags
cannam@127 292 end function fftw_plan_guru_dft_r2c
cannam@127 293
cannam@127 294 type(C_PTR) function fftw_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 295 bind(C, name='fftw_plan_guru_dft_c2r')
cannam@127 296 import
cannam@127 297 integer(C_INT), value :: rank
cannam@127 298 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 299 integer(C_INT), value :: howmany_rank
cannam@127 300 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 301 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 302 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 303 integer(C_INT), value :: flags
cannam@127 304 end function fftw_plan_guru_dft_c2r
cannam@127 305
cannam@127 306 type(C_PTR) function fftw_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
cannam@127 307 bind(C, name='fftw_plan_guru_split_dft_r2c')
cannam@127 308 import
cannam@127 309 integer(C_INT), value :: rank
cannam@127 310 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 311 integer(C_INT), value :: howmany_rank
cannam@127 312 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 313 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 314 real(C_DOUBLE), dimension(*), intent(out) :: ro
cannam@127 315 real(C_DOUBLE), dimension(*), intent(out) :: io
cannam@127 316 integer(C_INT), value :: flags
cannam@127 317 end function fftw_plan_guru_split_dft_r2c
cannam@127 318
cannam@127 319 type(C_PTR) function fftw_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
cannam@127 320 bind(C, name='fftw_plan_guru_split_dft_c2r')
cannam@127 321 import
cannam@127 322 integer(C_INT), value :: rank
cannam@127 323 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 324 integer(C_INT), value :: howmany_rank
cannam@127 325 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 326 real(C_DOUBLE), dimension(*), intent(out) :: ri
cannam@127 327 real(C_DOUBLE), dimension(*), intent(out) :: ii
cannam@127 328 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 329 integer(C_INT), value :: flags
cannam@127 330 end function fftw_plan_guru_split_dft_c2r
cannam@127 331
cannam@127 332 type(C_PTR) function fftw_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 333 bind(C, name='fftw_plan_guru64_dft_r2c')
cannam@127 334 import
cannam@127 335 integer(C_INT), value :: rank
cannam@127 336 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 337 integer(C_INT), value :: howmany_rank
cannam@127 338 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 339 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 340 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 341 integer(C_INT), value :: flags
cannam@127 342 end function fftw_plan_guru64_dft_r2c
cannam@127 343
cannam@127 344 type(C_PTR) function fftw_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 345 bind(C, name='fftw_plan_guru64_dft_c2r')
cannam@127 346 import
cannam@127 347 integer(C_INT), value :: rank
cannam@127 348 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 349 integer(C_INT), value :: howmany_rank
cannam@127 350 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 351 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: in
cannam@127 352 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 353 integer(C_INT), value :: flags
cannam@127 354 end function fftw_plan_guru64_dft_c2r
cannam@127 355
cannam@127 356 type(C_PTR) function fftw_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
cannam@127 357 bind(C, name='fftw_plan_guru64_split_dft_r2c')
cannam@127 358 import
cannam@127 359 integer(C_INT), value :: rank
cannam@127 360 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 361 integer(C_INT), value :: howmany_rank
cannam@127 362 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 363 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 364 real(C_DOUBLE), dimension(*), intent(out) :: ro
cannam@127 365 real(C_DOUBLE), dimension(*), intent(out) :: io
cannam@127 366 integer(C_INT), value :: flags
cannam@127 367 end function fftw_plan_guru64_split_dft_r2c
cannam@127 368
cannam@127 369 type(C_PTR) function fftw_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
cannam@127 370 bind(C, name='fftw_plan_guru64_split_dft_c2r')
cannam@127 371 import
cannam@127 372 integer(C_INT), value :: rank
cannam@127 373 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 374 integer(C_INT), value :: howmany_rank
cannam@127 375 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 376 real(C_DOUBLE), dimension(*), intent(out) :: ri
cannam@127 377 real(C_DOUBLE), dimension(*), intent(out) :: ii
cannam@127 378 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 379 integer(C_INT), value :: flags
cannam@127 380 end function fftw_plan_guru64_split_dft_c2r
cannam@127 381
cannam@127 382 subroutine fftw_execute_dft_r2c(p,in,out) bind(C, name='fftw_execute_dft_r2c')
cannam@127 383 import
cannam@127 384 type(C_PTR), value :: p
cannam@127 385 real(C_DOUBLE), dimension(*), intent(inout) :: in
cannam@127 386 complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out
cannam@127 387 end subroutine fftw_execute_dft_r2c
cannam@127 388
cannam@127 389 subroutine fftw_execute_dft_c2r(p,in,out) bind(C, name='fftw_execute_dft_c2r')
cannam@127 390 import
cannam@127 391 type(C_PTR), value :: p
cannam@127 392 complex(C_DOUBLE_COMPLEX), dimension(*), intent(inout) :: in
cannam@127 393 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 394 end subroutine fftw_execute_dft_c2r
cannam@127 395
cannam@127 396 subroutine fftw_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftw_execute_split_dft_r2c')
cannam@127 397 import
cannam@127 398 type(C_PTR), value :: p
cannam@127 399 real(C_DOUBLE), dimension(*), intent(inout) :: in
cannam@127 400 real(C_DOUBLE), dimension(*), intent(out) :: ro
cannam@127 401 real(C_DOUBLE), dimension(*), intent(out) :: io
cannam@127 402 end subroutine fftw_execute_split_dft_r2c
cannam@127 403
cannam@127 404 subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftw_execute_split_dft_c2r')
cannam@127 405 import
cannam@127 406 type(C_PTR), value :: p
cannam@127 407 real(C_DOUBLE), dimension(*), intent(inout) :: ri
cannam@127 408 real(C_DOUBLE), dimension(*), intent(inout) :: ii
cannam@127 409 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 410 end subroutine fftw_execute_split_dft_c2r
cannam@127 411
cannam@127 412 type(C_PTR) function fftw_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
cannam@127 413 bind(C, name='fftw_plan_many_r2r')
cannam@127 414 import
cannam@127 415 integer(C_INT), value :: rank
cannam@127 416 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 417 integer(C_INT), value :: howmany
cannam@127 418 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 419 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 420 integer(C_INT), value :: istride
cannam@127 421 integer(C_INT), value :: idist
cannam@127 422 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 423 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 424 integer(C_INT), value :: ostride
cannam@127 425 integer(C_INT), value :: odist
cannam@127 426 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 427 integer(C_INT), value :: flags
cannam@127 428 end function fftw_plan_many_r2r
cannam@127 429
cannam@127 430 type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftw_plan_r2r')
cannam@127 431 import
cannam@127 432 integer(C_INT), value :: rank
cannam@127 433 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 434 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 435 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 436 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 437 integer(C_INT), value :: flags
cannam@127 438 end function fftw_plan_r2r
cannam@127 439
cannam@127 440 type(C_PTR) function fftw_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftw_plan_r2r_1d')
cannam@127 441 import
cannam@127 442 integer(C_INT), value :: n
cannam@127 443 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 444 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 445 integer(C_FFTW_R2R_KIND), value :: kind
cannam@127 446 integer(C_INT), value :: flags
cannam@127 447 end function fftw_plan_r2r_1d
cannam@127 448
cannam@127 449 type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftw_plan_r2r_2d')
cannam@127 450 import
cannam@127 451 integer(C_INT), value :: n0
cannam@127 452 integer(C_INT), value :: n1
cannam@127 453 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 454 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 455 integer(C_FFTW_R2R_KIND), value :: kind0
cannam@127 456 integer(C_FFTW_R2R_KIND), value :: kind1
cannam@127 457 integer(C_INT), value :: flags
cannam@127 458 end function fftw_plan_r2r_2d
cannam@127 459
cannam@127 460 type(C_PTR) function fftw_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftw_plan_r2r_3d')
cannam@127 461 import
cannam@127 462 integer(C_INT), value :: n0
cannam@127 463 integer(C_INT), value :: n1
cannam@127 464 integer(C_INT), value :: n2
cannam@127 465 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 466 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 467 integer(C_FFTW_R2R_KIND), value :: kind0
cannam@127 468 integer(C_FFTW_R2R_KIND), value :: kind1
cannam@127 469 integer(C_FFTW_R2R_KIND), value :: kind2
cannam@127 470 integer(C_INT), value :: flags
cannam@127 471 end function fftw_plan_r2r_3d
cannam@127 472
cannam@127 473 type(C_PTR) function fftw_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
cannam@127 474 bind(C, name='fftw_plan_guru_r2r')
cannam@127 475 import
cannam@127 476 integer(C_INT), value :: rank
cannam@127 477 type(fftw_iodim), dimension(*), intent(in) :: dims
cannam@127 478 integer(C_INT), value :: howmany_rank
cannam@127 479 type(fftw_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 480 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 481 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 482 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 483 integer(C_INT), value :: flags
cannam@127 484 end function fftw_plan_guru_r2r
cannam@127 485
cannam@127 486 type(C_PTR) function fftw_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
cannam@127 487 bind(C, name='fftw_plan_guru64_r2r')
cannam@127 488 import
cannam@127 489 integer(C_INT), value :: rank
cannam@127 490 type(fftw_iodim64), dimension(*), intent(in) :: dims
cannam@127 491 integer(C_INT), value :: howmany_rank
cannam@127 492 type(fftw_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 493 real(C_DOUBLE), dimension(*), intent(out) :: in
cannam@127 494 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 495 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 496 integer(C_INT), value :: flags
cannam@127 497 end function fftw_plan_guru64_r2r
cannam@127 498
cannam@127 499 subroutine fftw_execute_r2r(p,in,out) bind(C, name='fftw_execute_r2r')
cannam@127 500 import
cannam@127 501 type(C_PTR), value :: p
cannam@127 502 real(C_DOUBLE), dimension(*), intent(inout) :: in
cannam@127 503 real(C_DOUBLE), dimension(*), intent(out) :: out
cannam@127 504 end subroutine fftw_execute_r2r
cannam@127 505
cannam@127 506 subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan')
cannam@127 507 import
cannam@127 508 type(C_PTR), value :: p
cannam@127 509 end subroutine fftw_destroy_plan
cannam@127 510
cannam@127 511 subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom')
cannam@127 512 import
cannam@127 513 end subroutine fftw_forget_wisdom
cannam@127 514
cannam@127 515 subroutine fftw_cleanup() bind(C, name='fftw_cleanup')
cannam@127 516 import
cannam@127 517 end subroutine fftw_cleanup
cannam@127 518
cannam@127 519 subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit')
cannam@127 520 import
cannam@127 521 real(C_DOUBLE), value :: t
cannam@127 522 end subroutine fftw_set_timelimit
cannam@127 523
cannam@127 524 subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads')
cannam@127 525 import
cannam@127 526 integer(C_INT), value :: nthreads
cannam@127 527 end subroutine fftw_plan_with_nthreads
cannam@127 528
cannam@127 529 integer(C_INT) function fftw_init_threads() bind(C, name='fftw_init_threads')
cannam@127 530 import
cannam@127 531 end function fftw_init_threads
cannam@127 532
cannam@127 533 subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads')
cannam@127 534 import
cannam@127 535 end subroutine fftw_cleanup_threads
cannam@127 536
cannam@127 537 subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe')
cannam@127 538 import
cannam@127 539 end subroutine fftw_make_planner_thread_safe
cannam@127 540
cannam@127 541 integer(C_INT) function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename')
cannam@127 542 import
cannam@127 543 character(C_CHAR), dimension(*), intent(in) :: filename
cannam@127 544 end function fftw_export_wisdom_to_filename
cannam@127 545
cannam@127 546 subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file')
cannam@127 547 import
cannam@127 548 type(C_PTR), value :: output_file
cannam@127 549 end subroutine fftw_export_wisdom_to_file
cannam@127 550
cannam@127 551 type(C_PTR) function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string')
cannam@127 552 import
cannam@127 553 end function fftw_export_wisdom_to_string
cannam@127 554
cannam@127 555 subroutine fftw_export_wisdom(write_char,data) bind(C, name='fftw_export_wisdom')
cannam@127 556 import
cannam@127 557 type(C_FUNPTR), value :: write_char
cannam@127 558 type(C_PTR), value :: data
cannam@127 559 end subroutine fftw_export_wisdom
cannam@127 560
cannam@127 561 integer(C_INT) function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom')
cannam@127 562 import
cannam@127 563 end function fftw_import_system_wisdom
cannam@127 564
cannam@127 565 integer(C_INT) function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename')
cannam@127 566 import
cannam@127 567 character(C_CHAR), dimension(*), intent(in) :: filename
cannam@127 568 end function fftw_import_wisdom_from_filename
cannam@127 569
cannam@127 570 integer(C_INT) function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file')
cannam@127 571 import
cannam@127 572 type(C_PTR), value :: input_file
cannam@127 573 end function fftw_import_wisdom_from_file
cannam@127 574
cannam@127 575 integer(C_INT) function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string')
cannam@127 576 import
cannam@127 577 character(C_CHAR), dimension(*), intent(in) :: input_string
cannam@127 578 end function fftw_import_wisdom_from_string
cannam@127 579
cannam@127 580 integer(C_INT) function fftw_import_wisdom(read_char,data) bind(C, name='fftw_import_wisdom')
cannam@127 581 import
cannam@127 582 type(C_FUNPTR), value :: read_char
cannam@127 583 type(C_PTR), value :: data
cannam@127 584 end function fftw_import_wisdom
cannam@127 585
cannam@127 586 subroutine fftw_fprint_plan(p,output_file) bind(C, name='fftw_fprint_plan')
cannam@127 587 import
cannam@127 588 type(C_PTR), value :: p
cannam@127 589 type(C_PTR), value :: output_file
cannam@127 590 end subroutine fftw_fprint_plan
cannam@127 591
cannam@127 592 subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan')
cannam@127 593 import
cannam@127 594 type(C_PTR), value :: p
cannam@127 595 end subroutine fftw_print_plan
cannam@127 596
cannam@127 597 type(C_PTR) function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan')
cannam@127 598 import
cannam@127 599 type(C_PTR), value :: p
cannam@127 600 end function fftw_sprint_plan
cannam@127 601
cannam@127 602 type(C_PTR) function fftw_malloc(n) bind(C, name='fftw_malloc')
cannam@127 603 import
cannam@127 604 integer(C_SIZE_T), value :: n
cannam@127 605 end function fftw_malloc
cannam@127 606
cannam@127 607 type(C_PTR) function fftw_alloc_real(n) bind(C, name='fftw_alloc_real')
cannam@127 608 import
cannam@127 609 integer(C_SIZE_T), value :: n
cannam@127 610 end function fftw_alloc_real
cannam@127 611
cannam@127 612 type(C_PTR) function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex')
cannam@127 613 import
cannam@127 614 integer(C_SIZE_T), value :: n
cannam@127 615 end function fftw_alloc_complex
cannam@127 616
cannam@127 617 subroutine fftw_free(p) bind(C, name='fftw_free')
cannam@127 618 import
cannam@127 619 type(C_PTR), value :: p
cannam@127 620 end subroutine fftw_free
cannam@127 621
cannam@127 622 subroutine fftw_flops(p,add,mul,fmas) bind(C, name='fftw_flops')
cannam@127 623 import
cannam@127 624 type(C_PTR), value :: p
cannam@127 625 real(C_DOUBLE), intent(out) :: add
cannam@127 626 real(C_DOUBLE), intent(out) :: mul
cannam@127 627 real(C_DOUBLE), intent(out) :: fmas
cannam@127 628 end subroutine fftw_flops
cannam@127 629
cannam@127 630 real(C_DOUBLE) function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost')
cannam@127 631 import
cannam@127 632 type(C_PTR), value :: p
cannam@127 633 end function fftw_estimate_cost
cannam@127 634
cannam@127 635 real(C_DOUBLE) function fftw_cost(p) bind(C, name='fftw_cost')
cannam@127 636 import
cannam@127 637 type(C_PTR), value :: p
cannam@127 638 end function fftw_cost
cannam@127 639
cannam@127 640 integer(C_INT) function fftw_alignment_of(p) bind(C, name='fftw_alignment_of')
cannam@127 641 import
cannam@127 642 real(C_DOUBLE), dimension(*), intent(out) :: p
cannam@127 643 end function fftw_alignment_of
cannam@127 644
cannam@127 645 end interface
cannam@127 646
cannam@127 647 type, bind(C) :: fftwf_iodim
cannam@127 648 integer(C_INT) n, is, os
cannam@127 649 end type fftwf_iodim
cannam@127 650 type, bind(C) :: fftwf_iodim64
cannam@127 651 integer(C_INTPTR_T) n, is, os
cannam@127 652 end type fftwf_iodim64
cannam@127 653
cannam@127 654 interface
cannam@127 655 type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwf_plan_dft')
cannam@127 656 import
cannam@127 657 integer(C_INT), value :: rank
cannam@127 658 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 659 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 660 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 661 integer(C_INT), value :: sign
cannam@127 662 integer(C_INT), value :: flags
cannam@127 663 end function fftwf_plan_dft
cannam@127 664
cannam@127 665 type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwf_plan_dft_1d')
cannam@127 666 import
cannam@127 667 integer(C_INT), value :: n
cannam@127 668 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 669 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 670 integer(C_INT), value :: sign
cannam@127 671 integer(C_INT), value :: flags
cannam@127 672 end function fftwf_plan_dft_1d
cannam@127 673
cannam@127 674 type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwf_plan_dft_2d')
cannam@127 675 import
cannam@127 676 integer(C_INT), value :: n0
cannam@127 677 integer(C_INT), value :: n1
cannam@127 678 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 679 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 680 integer(C_INT), value :: sign
cannam@127 681 integer(C_INT), value :: flags
cannam@127 682 end function fftwf_plan_dft_2d
cannam@127 683
cannam@127 684 type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwf_plan_dft_3d')
cannam@127 685 import
cannam@127 686 integer(C_INT), value :: n0
cannam@127 687 integer(C_INT), value :: n1
cannam@127 688 integer(C_INT), value :: n2
cannam@127 689 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 690 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 691 integer(C_INT), value :: sign
cannam@127 692 integer(C_INT), value :: flags
cannam@127 693 end function fftwf_plan_dft_3d
cannam@127 694
cannam@127 695 type(C_PTR) function fftwf_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
cannam@127 696 bind(C, name='fftwf_plan_many_dft')
cannam@127 697 import
cannam@127 698 integer(C_INT), value :: rank
cannam@127 699 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 700 integer(C_INT), value :: howmany
cannam@127 701 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 702 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 703 integer(C_INT), value :: istride
cannam@127 704 integer(C_INT), value :: idist
cannam@127 705 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 706 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 707 integer(C_INT), value :: ostride
cannam@127 708 integer(C_INT), value :: odist
cannam@127 709 integer(C_INT), value :: sign
cannam@127 710 integer(C_INT), value :: flags
cannam@127 711 end function fftwf_plan_many_dft
cannam@127 712
cannam@127 713 type(C_PTR) function fftwf_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
cannam@127 714 bind(C, name='fftwf_plan_guru_dft')
cannam@127 715 import
cannam@127 716 integer(C_INT), value :: rank
cannam@127 717 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 718 integer(C_INT), value :: howmany_rank
cannam@127 719 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 720 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 721 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 722 integer(C_INT), value :: sign
cannam@127 723 integer(C_INT), value :: flags
cannam@127 724 end function fftwf_plan_guru_dft
cannam@127 725
cannam@127 726 type(C_PTR) function fftwf_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
cannam@127 727 bind(C, name='fftwf_plan_guru_split_dft')
cannam@127 728 import
cannam@127 729 integer(C_INT), value :: rank
cannam@127 730 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 731 integer(C_INT), value :: howmany_rank
cannam@127 732 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 733 real(C_FLOAT), dimension(*), intent(out) :: ri
cannam@127 734 real(C_FLOAT), dimension(*), intent(out) :: ii
cannam@127 735 real(C_FLOAT), dimension(*), intent(out) :: ro
cannam@127 736 real(C_FLOAT), dimension(*), intent(out) :: io
cannam@127 737 integer(C_INT), value :: flags
cannam@127 738 end function fftwf_plan_guru_split_dft
cannam@127 739
cannam@127 740 type(C_PTR) function fftwf_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
cannam@127 741 bind(C, name='fftwf_plan_guru64_dft')
cannam@127 742 import
cannam@127 743 integer(C_INT), value :: rank
cannam@127 744 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 745 integer(C_INT), value :: howmany_rank
cannam@127 746 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 747 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 748 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 749 integer(C_INT), value :: sign
cannam@127 750 integer(C_INT), value :: flags
cannam@127 751 end function fftwf_plan_guru64_dft
cannam@127 752
cannam@127 753 type(C_PTR) function fftwf_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
cannam@127 754 bind(C, name='fftwf_plan_guru64_split_dft')
cannam@127 755 import
cannam@127 756 integer(C_INT), value :: rank
cannam@127 757 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 758 integer(C_INT), value :: howmany_rank
cannam@127 759 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 760 real(C_FLOAT), dimension(*), intent(out) :: ri
cannam@127 761 real(C_FLOAT), dimension(*), intent(out) :: ii
cannam@127 762 real(C_FLOAT), dimension(*), intent(out) :: ro
cannam@127 763 real(C_FLOAT), dimension(*), intent(out) :: io
cannam@127 764 integer(C_INT), value :: flags
cannam@127 765 end function fftwf_plan_guru64_split_dft
cannam@127 766
cannam@127 767 subroutine fftwf_execute_dft(p,in,out) bind(C, name='fftwf_execute_dft')
cannam@127 768 import
cannam@127 769 type(C_PTR), value :: p
cannam@127 770 complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
cannam@127 771 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 772 end subroutine fftwf_execute_dft
cannam@127 773
cannam@127 774 subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwf_execute_split_dft')
cannam@127 775 import
cannam@127 776 type(C_PTR), value :: p
cannam@127 777 real(C_FLOAT), dimension(*), intent(inout) :: ri
cannam@127 778 real(C_FLOAT), dimension(*), intent(inout) :: ii
cannam@127 779 real(C_FLOAT), dimension(*), intent(out) :: ro
cannam@127 780 real(C_FLOAT), dimension(*), intent(out) :: io
cannam@127 781 end subroutine fftwf_execute_split_dft
cannam@127 782
cannam@127 783 type(C_PTR) function fftwf_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
cannam@127 784 bind(C, name='fftwf_plan_many_dft_r2c')
cannam@127 785 import
cannam@127 786 integer(C_INT), value :: rank
cannam@127 787 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 788 integer(C_INT), value :: howmany
cannam@127 789 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 790 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 791 integer(C_INT), value :: istride
cannam@127 792 integer(C_INT), value :: idist
cannam@127 793 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 794 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 795 integer(C_INT), value :: ostride
cannam@127 796 integer(C_INT), value :: odist
cannam@127 797 integer(C_INT), value :: flags
cannam@127 798 end function fftwf_plan_many_dft_r2c
cannam@127 799
cannam@127 800 type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c')
cannam@127 801 import
cannam@127 802 integer(C_INT), value :: rank
cannam@127 803 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 804 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 805 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 806 integer(C_INT), value :: flags
cannam@127 807 end function fftwf_plan_dft_r2c
cannam@127 808
cannam@127 809 type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_1d')
cannam@127 810 import
cannam@127 811 integer(C_INT), value :: n
cannam@127 812 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 813 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 814 integer(C_INT), value :: flags
cannam@127 815 end function fftwf_plan_dft_r2c_1d
cannam@127 816
cannam@127 817 type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_2d')
cannam@127 818 import
cannam@127 819 integer(C_INT), value :: n0
cannam@127 820 integer(C_INT), value :: n1
cannam@127 821 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 822 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 823 integer(C_INT), value :: flags
cannam@127 824 end function fftwf_plan_dft_r2c_2d
cannam@127 825
cannam@127 826 type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_r2c_3d')
cannam@127 827 import
cannam@127 828 integer(C_INT), value :: n0
cannam@127 829 integer(C_INT), value :: n1
cannam@127 830 integer(C_INT), value :: n2
cannam@127 831 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 832 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 833 integer(C_INT), value :: flags
cannam@127 834 end function fftwf_plan_dft_r2c_3d
cannam@127 835
cannam@127 836 type(C_PTR) function fftwf_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
cannam@127 837 bind(C, name='fftwf_plan_many_dft_c2r')
cannam@127 838 import
cannam@127 839 integer(C_INT), value :: rank
cannam@127 840 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 841 integer(C_INT), value :: howmany
cannam@127 842 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 843 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 844 integer(C_INT), value :: istride
cannam@127 845 integer(C_INT), value :: idist
cannam@127 846 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 847 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 848 integer(C_INT), value :: ostride
cannam@127 849 integer(C_INT), value :: odist
cannam@127 850 integer(C_INT), value :: flags
cannam@127 851 end function fftwf_plan_many_dft_c2r
cannam@127 852
cannam@127 853 type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r')
cannam@127 854 import
cannam@127 855 integer(C_INT), value :: rank
cannam@127 856 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 857 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 858 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 859 integer(C_INT), value :: flags
cannam@127 860 end function fftwf_plan_dft_c2r
cannam@127 861
cannam@127 862 type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_1d')
cannam@127 863 import
cannam@127 864 integer(C_INT), value :: n
cannam@127 865 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 866 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 867 integer(C_INT), value :: flags
cannam@127 868 end function fftwf_plan_dft_c2r_1d
cannam@127 869
cannam@127 870 type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_2d')
cannam@127 871 import
cannam@127 872 integer(C_INT), value :: n0
cannam@127 873 integer(C_INT), value :: n1
cannam@127 874 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 875 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 876 integer(C_INT), value :: flags
cannam@127 877 end function fftwf_plan_dft_c2r_2d
cannam@127 878
cannam@127 879 type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwf_plan_dft_c2r_3d')
cannam@127 880 import
cannam@127 881 integer(C_INT), value :: n0
cannam@127 882 integer(C_INT), value :: n1
cannam@127 883 integer(C_INT), value :: n2
cannam@127 884 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 885 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 886 integer(C_INT), value :: flags
cannam@127 887 end function fftwf_plan_dft_c2r_3d
cannam@127 888
cannam@127 889 type(C_PTR) function fftwf_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 890 bind(C, name='fftwf_plan_guru_dft_r2c')
cannam@127 891 import
cannam@127 892 integer(C_INT), value :: rank
cannam@127 893 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 894 integer(C_INT), value :: howmany_rank
cannam@127 895 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 896 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 897 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 898 integer(C_INT), value :: flags
cannam@127 899 end function fftwf_plan_guru_dft_r2c
cannam@127 900
cannam@127 901 type(C_PTR) function fftwf_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 902 bind(C, name='fftwf_plan_guru_dft_c2r')
cannam@127 903 import
cannam@127 904 integer(C_INT), value :: rank
cannam@127 905 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 906 integer(C_INT), value :: howmany_rank
cannam@127 907 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 908 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 909 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 910 integer(C_INT), value :: flags
cannam@127 911 end function fftwf_plan_guru_dft_c2r
cannam@127 912
cannam@127 913 type(C_PTR) function fftwf_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
cannam@127 914 bind(C, name='fftwf_plan_guru_split_dft_r2c')
cannam@127 915 import
cannam@127 916 integer(C_INT), value :: rank
cannam@127 917 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 918 integer(C_INT), value :: howmany_rank
cannam@127 919 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 920 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 921 real(C_FLOAT), dimension(*), intent(out) :: ro
cannam@127 922 real(C_FLOAT), dimension(*), intent(out) :: io
cannam@127 923 integer(C_INT), value :: flags
cannam@127 924 end function fftwf_plan_guru_split_dft_r2c
cannam@127 925
cannam@127 926 type(C_PTR) function fftwf_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
cannam@127 927 bind(C, name='fftwf_plan_guru_split_dft_c2r')
cannam@127 928 import
cannam@127 929 integer(C_INT), value :: rank
cannam@127 930 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 931 integer(C_INT), value :: howmany_rank
cannam@127 932 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 933 real(C_FLOAT), dimension(*), intent(out) :: ri
cannam@127 934 real(C_FLOAT), dimension(*), intent(out) :: ii
cannam@127 935 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 936 integer(C_INT), value :: flags
cannam@127 937 end function fftwf_plan_guru_split_dft_c2r
cannam@127 938
cannam@127 939 type(C_PTR) function fftwf_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 940 bind(C, name='fftwf_plan_guru64_dft_r2c')
cannam@127 941 import
cannam@127 942 integer(C_INT), value :: rank
cannam@127 943 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 944 integer(C_INT), value :: howmany_rank
cannam@127 945 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 946 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 947 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 948 integer(C_INT), value :: flags
cannam@127 949 end function fftwf_plan_guru64_dft_r2c
cannam@127 950
cannam@127 951 type(C_PTR) function fftwf_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 952 bind(C, name='fftwf_plan_guru64_dft_c2r')
cannam@127 953 import
cannam@127 954 integer(C_INT), value :: rank
cannam@127 955 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 956 integer(C_INT), value :: howmany_rank
cannam@127 957 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 958 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: in
cannam@127 959 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 960 integer(C_INT), value :: flags
cannam@127 961 end function fftwf_plan_guru64_dft_c2r
cannam@127 962
cannam@127 963 type(C_PTR) function fftwf_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
cannam@127 964 bind(C, name='fftwf_plan_guru64_split_dft_r2c')
cannam@127 965 import
cannam@127 966 integer(C_INT), value :: rank
cannam@127 967 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 968 integer(C_INT), value :: howmany_rank
cannam@127 969 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 970 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 971 real(C_FLOAT), dimension(*), intent(out) :: ro
cannam@127 972 real(C_FLOAT), dimension(*), intent(out) :: io
cannam@127 973 integer(C_INT), value :: flags
cannam@127 974 end function fftwf_plan_guru64_split_dft_r2c
cannam@127 975
cannam@127 976 type(C_PTR) function fftwf_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
cannam@127 977 bind(C, name='fftwf_plan_guru64_split_dft_c2r')
cannam@127 978 import
cannam@127 979 integer(C_INT), value :: rank
cannam@127 980 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 981 integer(C_INT), value :: howmany_rank
cannam@127 982 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 983 real(C_FLOAT), dimension(*), intent(out) :: ri
cannam@127 984 real(C_FLOAT), dimension(*), intent(out) :: ii
cannam@127 985 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 986 integer(C_INT), value :: flags
cannam@127 987 end function fftwf_plan_guru64_split_dft_c2r
cannam@127 988
cannam@127 989 subroutine fftwf_execute_dft_r2c(p,in,out) bind(C, name='fftwf_execute_dft_r2c')
cannam@127 990 import
cannam@127 991 type(C_PTR), value :: p
cannam@127 992 real(C_FLOAT), dimension(*), intent(inout) :: in
cannam@127 993 complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out
cannam@127 994 end subroutine fftwf_execute_dft_r2c
cannam@127 995
cannam@127 996 subroutine fftwf_execute_dft_c2r(p,in,out) bind(C, name='fftwf_execute_dft_c2r')
cannam@127 997 import
cannam@127 998 type(C_PTR), value :: p
cannam@127 999 complex(C_FLOAT_COMPLEX), dimension(*), intent(inout) :: in
cannam@127 1000 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1001 end subroutine fftwf_execute_dft_c2r
cannam@127 1002
cannam@127 1003 subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwf_execute_split_dft_r2c')
cannam@127 1004 import
cannam@127 1005 type(C_PTR), value :: p
cannam@127 1006 real(C_FLOAT), dimension(*), intent(inout) :: in
cannam@127 1007 real(C_FLOAT), dimension(*), intent(out) :: ro
cannam@127 1008 real(C_FLOAT), dimension(*), intent(out) :: io
cannam@127 1009 end subroutine fftwf_execute_split_dft_r2c
cannam@127 1010
cannam@127 1011 subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwf_execute_split_dft_c2r')
cannam@127 1012 import
cannam@127 1013 type(C_PTR), value :: p
cannam@127 1014 real(C_FLOAT), dimension(*), intent(inout) :: ri
cannam@127 1015 real(C_FLOAT), dimension(*), intent(inout) :: ii
cannam@127 1016 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1017 end subroutine fftwf_execute_split_dft_c2r
cannam@127 1018
cannam@127 1019 type(C_PTR) function fftwf_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
cannam@127 1020 bind(C, name='fftwf_plan_many_r2r')
cannam@127 1021 import
cannam@127 1022 integer(C_INT), value :: rank
cannam@127 1023 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 1024 integer(C_INT), value :: howmany
cannam@127 1025 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1026 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 1027 integer(C_INT), value :: istride
cannam@127 1028 integer(C_INT), value :: idist
cannam@127 1029 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1030 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 1031 integer(C_INT), value :: ostride
cannam@127 1032 integer(C_INT), value :: odist
cannam@127 1033 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 1034 integer(C_INT), value :: flags
cannam@127 1035 end function fftwf_plan_many_r2r
cannam@127 1036
cannam@127 1037 type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r')
cannam@127 1038 import
cannam@127 1039 integer(C_INT), value :: rank
cannam@127 1040 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 1041 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1042 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1043 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 1044 integer(C_INT), value :: flags
cannam@127 1045 end function fftwf_plan_r2r
cannam@127 1046
cannam@127 1047 type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwf_plan_r2r_1d')
cannam@127 1048 import
cannam@127 1049 integer(C_INT), value :: n
cannam@127 1050 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1051 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1052 integer(C_FFTW_R2R_KIND), value :: kind
cannam@127 1053 integer(C_INT), value :: flags
cannam@127 1054 end function fftwf_plan_r2r_1d
cannam@127 1055
cannam@127 1056 type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwf_plan_r2r_2d')
cannam@127 1057 import
cannam@127 1058 integer(C_INT), value :: n0
cannam@127 1059 integer(C_INT), value :: n1
cannam@127 1060 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1061 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1062 integer(C_FFTW_R2R_KIND), value :: kind0
cannam@127 1063 integer(C_FFTW_R2R_KIND), value :: kind1
cannam@127 1064 integer(C_INT), value :: flags
cannam@127 1065 end function fftwf_plan_r2r_2d
cannam@127 1066
cannam@127 1067 type(C_PTR) function fftwf_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwf_plan_r2r_3d')
cannam@127 1068 import
cannam@127 1069 integer(C_INT), value :: n0
cannam@127 1070 integer(C_INT), value :: n1
cannam@127 1071 integer(C_INT), value :: n2
cannam@127 1072 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1073 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1074 integer(C_FFTW_R2R_KIND), value :: kind0
cannam@127 1075 integer(C_FFTW_R2R_KIND), value :: kind1
cannam@127 1076 integer(C_FFTW_R2R_KIND), value :: kind2
cannam@127 1077 integer(C_INT), value :: flags
cannam@127 1078 end function fftwf_plan_r2r_3d
cannam@127 1079
cannam@127 1080 type(C_PTR) function fftwf_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
cannam@127 1081 bind(C, name='fftwf_plan_guru_r2r')
cannam@127 1082 import
cannam@127 1083 integer(C_INT), value :: rank
cannam@127 1084 type(fftwf_iodim), dimension(*), intent(in) :: dims
cannam@127 1085 integer(C_INT), value :: howmany_rank
cannam@127 1086 type(fftwf_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 1087 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1088 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1089 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 1090 integer(C_INT), value :: flags
cannam@127 1091 end function fftwf_plan_guru_r2r
cannam@127 1092
cannam@127 1093 type(C_PTR) function fftwf_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
cannam@127 1094 bind(C, name='fftwf_plan_guru64_r2r')
cannam@127 1095 import
cannam@127 1096 integer(C_INT), value :: rank
cannam@127 1097 type(fftwf_iodim64), dimension(*), intent(in) :: dims
cannam@127 1098 integer(C_INT), value :: howmany_rank
cannam@127 1099 type(fftwf_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 1100 real(C_FLOAT), dimension(*), intent(out) :: in
cannam@127 1101 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1102 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 1103 integer(C_INT), value :: flags
cannam@127 1104 end function fftwf_plan_guru64_r2r
cannam@127 1105
cannam@127 1106 subroutine fftwf_execute_r2r(p,in,out) bind(C, name='fftwf_execute_r2r')
cannam@127 1107 import
cannam@127 1108 type(C_PTR), value :: p
cannam@127 1109 real(C_FLOAT), dimension(*), intent(inout) :: in
cannam@127 1110 real(C_FLOAT), dimension(*), intent(out) :: out
cannam@127 1111 end subroutine fftwf_execute_r2r
cannam@127 1112
cannam@127 1113 subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan')
cannam@127 1114 import
cannam@127 1115 type(C_PTR), value :: p
cannam@127 1116 end subroutine fftwf_destroy_plan
cannam@127 1117
cannam@127 1118 subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom')
cannam@127 1119 import
cannam@127 1120 end subroutine fftwf_forget_wisdom
cannam@127 1121
cannam@127 1122 subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup')
cannam@127 1123 import
cannam@127 1124 end subroutine fftwf_cleanup
cannam@127 1125
cannam@127 1126 subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit')
cannam@127 1127 import
cannam@127 1128 real(C_DOUBLE), value :: t
cannam@127 1129 end subroutine fftwf_set_timelimit
cannam@127 1130
cannam@127 1131 subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads')
cannam@127 1132 import
cannam@127 1133 integer(C_INT), value :: nthreads
cannam@127 1134 end subroutine fftwf_plan_with_nthreads
cannam@127 1135
cannam@127 1136 integer(C_INT) function fftwf_init_threads() bind(C, name='fftwf_init_threads')
cannam@127 1137 import
cannam@127 1138 end function fftwf_init_threads
cannam@127 1139
cannam@127 1140 subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads')
cannam@127 1141 import
cannam@127 1142 end subroutine fftwf_cleanup_threads
cannam@127 1143
cannam@127 1144 subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe')
cannam@127 1145 import
cannam@127 1146 end subroutine fftwf_make_planner_thread_safe
cannam@127 1147
cannam@127 1148 integer(C_INT) function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename')
cannam@127 1149 import
cannam@127 1150 character(C_CHAR), dimension(*), intent(in) :: filename
cannam@127 1151 end function fftwf_export_wisdom_to_filename
cannam@127 1152
cannam@127 1153 subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file')
cannam@127 1154 import
cannam@127 1155 type(C_PTR), value :: output_file
cannam@127 1156 end subroutine fftwf_export_wisdom_to_file
cannam@127 1157
cannam@127 1158 type(C_PTR) function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string')
cannam@127 1159 import
cannam@127 1160 end function fftwf_export_wisdom_to_string
cannam@127 1161
cannam@127 1162 subroutine fftwf_export_wisdom(write_char,data) bind(C, name='fftwf_export_wisdom')
cannam@127 1163 import
cannam@127 1164 type(C_FUNPTR), value :: write_char
cannam@127 1165 type(C_PTR), value :: data
cannam@127 1166 end subroutine fftwf_export_wisdom
cannam@127 1167
cannam@127 1168 integer(C_INT) function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom')
cannam@127 1169 import
cannam@127 1170 end function fftwf_import_system_wisdom
cannam@127 1171
cannam@127 1172 integer(C_INT) function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename')
cannam@127 1173 import
cannam@127 1174 character(C_CHAR), dimension(*), intent(in) :: filename
cannam@127 1175 end function fftwf_import_wisdom_from_filename
cannam@127 1176
cannam@127 1177 integer(C_INT) function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file')
cannam@127 1178 import
cannam@127 1179 type(C_PTR), value :: input_file
cannam@127 1180 end function fftwf_import_wisdom_from_file
cannam@127 1181
cannam@127 1182 integer(C_INT) function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string')
cannam@127 1183 import
cannam@127 1184 character(C_CHAR), dimension(*), intent(in) :: input_string
cannam@127 1185 end function fftwf_import_wisdom_from_string
cannam@127 1186
cannam@127 1187 integer(C_INT) function fftwf_import_wisdom(read_char,data) bind(C, name='fftwf_import_wisdom')
cannam@127 1188 import
cannam@127 1189 type(C_FUNPTR), value :: read_char
cannam@127 1190 type(C_PTR), value :: data
cannam@127 1191 end function fftwf_import_wisdom
cannam@127 1192
cannam@127 1193 subroutine fftwf_fprint_plan(p,output_file) bind(C, name='fftwf_fprint_plan')
cannam@127 1194 import
cannam@127 1195 type(C_PTR), value :: p
cannam@127 1196 type(C_PTR), value :: output_file
cannam@127 1197 end subroutine fftwf_fprint_plan
cannam@127 1198
cannam@127 1199 subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan')
cannam@127 1200 import
cannam@127 1201 type(C_PTR), value :: p
cannam@127 1202 end subroutine fftwf_print_plan
cannam@127 1203
cannam@127 1204 type(C_PTR) function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan')
cannam@127 1205 import
cannam@127 1206 type(C_PTR), value :: p
cannam@127 1207 end function fftwf_sprint_plan
cannam@127 1208
cannam@127 1209 type(C_PTR) function fftwf_malloc(n) bind(C, name='fftwf_malloc')
cannam@127 1210 import
cannam@127 1211 integer(C_SIZE_T), value :: n
cannam@127 1212 end function fftwf_malloc
cannam@127 1213
cannam@127 1214 type(C_PTR) function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real')
cannam@127 1215 import
cannam@127 1216 integer(C_SIZE_T), value :: n
cannam@127 1217 end function fftwf_alloc_real
cannam@127 1218
cannam@127 1219 type(C_PTR) function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex')
cannam@127 1220 import
cannam@127 1221 integer(C_SIZE_T), value :: n
cannam@127 1222 end function fftwf_alloc_complex
cannam@127 1223
cannam@127 1224 subroutine fftwf_free(p) bind(C, name='fftwf_free')
cannam@127 1225 import
cannam@127 1226 type(C_PTR), value :: p
cannam@127 1227 end subroutine fftwf_free
cannam@127 1228
cannam@127 1229 subroutine fftwf_flops(p,add,mul,fmas) bind(C, name='fftwf_flops')
cannam@127 1230 import
cannam@127 1231 type(C_PTR), value :: p
cannam@127 1232 real(C_DOUBLE), intent(out) :: add
cannam@127 1233 real(C_DOUBLE), intent(out) :: mul
cannam@127 1234 real(C_DOUBLE), intent(out) :: fmas
cannam@127 1235 end subroutine fftwf_flops
cannam@127 1236
cannam@127 1237 real(C_DOUBLE) function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost')
cannam@127 1238 import
cannam@127 1239 type(C_PTR), value :: p
cannam@127 1240 end function fftwf_estimate_cost
cannam@127 1241
cannam@127 1242 real(C_DOUBLE) function fftwf_cost(p) bind(C, name='fftwf_cost')
cannam@127 1243 import
cannam@127 1244 type(C_PTR), value :: p
cannam@127 1245 end function fftwf_cost
cannam@127 1246
cannam@127 1247 integer(C_INT) function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of')
cannam@127 1248 import
cannam@127 1249 real(C_FLOAT), dimension(*), intent(out) :: p
cannam@127 1250 end function fftwf_alignment_of
cannam@127 1251
cannam@127 1252 end interface