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

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