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