annotate fft/fftw/fftw-3.3.4/api/fftw3.f03.in @ 40:223f770b5341 kissfft-double tip

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