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