annotate src/fftw-3.3.3/api/fftw3.f03.in @ 83:ae30d91d2ffe

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