annotate src/fftw-3.3.5/api/fftw3q.f03 @ 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 7867fa7e1b6b
children
rev   line source
cannam@127 1 ! Generated automatically. DO NOT EDIT!
cannam@127 2
cannam@127 3
cannam@127 4 type, bind(C) :: fftwq_iodim
cannam@127 5 integer(C_INT) n, is, os
cannam@127 6 end type fftwq_iodim
cannam@127 7 type, bind(C) :: fftwq_iodim64
cannam@127 8 integer(C_INTPTR_T) n, is, os
cannam@127 9 end type fftwq_iodim64
cannam@127 10
cannam@127 11 interface
cannam@127 12 type(C_PTR) function fftwq_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwq_plan_dft')
cannam@127 13 import
cannam@127 14 integer(C_INT), value :: rank
cannam@127 15 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 16 complex(16), dimension(*), intent(out) :: in
cannam@127 17 complex(16), dimension(*), intent(out) :: out
cannam@127 18 integer(C_INT), value :: sign
cannam@127 19 integer(C_INT), value :: flags
cannam@127 20 end function fftwq_plan_dft
cannam@127 21
cannam@127 22 type(C_PTR) function fftwq_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwq_plan_dft_1d')
cannam@127 23 import
cannam@127 24 integer(C_INT), value :: n
cannam@127 25 complex(16), dimension(*), intent(out) :: in
cannam@127 26 complex(16), dimension(*), intent(out) :: out
cannam@127 27 integer(C_INT), value :: sign
cannam@127 28 integer(C_INT), value :: flags
cannam@127 29 end function fftwq_plan_dft_1d
cannam@127 30
cannam@127 31 type(C_PTR) function fftwq_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwq_plan_dft_2d')
cannam@127 32 import
cannam@127 33 integer(C_INT), value :: n0
cannam@127 34 integer(C_INT), value :: n1
cannam@127 35 complex(16), dimension(*), intent(out) :: in
cannam@127 36 complex(16), dimension(*), intent(out) :: out
cannam@127 37 integer(C_INT), value :: sign
cannam@127 38 integer(C_INT), value :: flags
cannam@127 39 end function fftwq_plan_dft_2d
cannam@127 40
cannam@127 41 type(C_PTR) function fftwq_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwq_plan_dft_3d')
cannam@127 42 import
cannam@127 43 integer(C_INT), value :: n0
cannam@127 44 integer(C_INT), value :: n1
cannam@127 45 integer(C_INT), value :: n2
cannam@127 46 complex(16), dimension(*), intent(out) :: in
cannam@127 47 complex(16), dimension(*), intent(out) :: out
cannam@127 48 integer(C_INT), value :: sign
cannam@127 49 integer(C_INT), value :: flags
cannam@127 50 end function fftwq_plan_dft_3d
cannam@127 51
cannam@127 52 type(C_PTR) function fftwq_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
cannam@127 53 bind(C, name='fftwq_plan_many_dft')
cannam@127 54 import
cannam@127 55 integer(C_INT), value :: rank
cannam@127 56 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 57 integer(C_INT), value :: howmany
cannam@127 58 complex(16), dimension(*), intent(out) :: in
cannam@127 59 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 60 integer(C_INT), value :: istride
cannam@127 61 integer(C_INT), value :: idist
cannam@127 62 complex(16), dimension(*), intent(out) :: out
cannam@127 63 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 64 integer(C_INT), value :: ostride
cannam@127 65 integer(C_INT), value :: odist
cannam@127 66 integer(C_INT), value :: sign
cannam@127 67 integer(C_INT), value :: flags
cannam@127 68 end function fftwq_plan_many_dft
cannam@127 69
cannam@127 70 type(C_PTR) function fftwq_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
cannam@127 71 bind(C, name='fftwq_plan_guru_dft')
cannam@127 72 import
cannam@127 73 integer(C_INT), value :: rank
cannam@127 74 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 75 integer(C_INT), value :: howmany_rank
cannam@127 76 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 77 complex(16), dimension(*), intent(out) :: in
cannam@127 78 complex(16), dimension(*), intent(out) :: out
cannam@127 79 integer(C_INT), value :: sign
cannam@127 80 integer(C_INT), value :: flags
cannam@127 81 end function fftwq_plan_guru_dft
cannam@127 82
cannam@127 83 type(C_PTR) function fftwq_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
cannam@127 84 bind(C, name='fftwq_plan_guru_split_dft')
cannam@127 85 import
cannam@127 86 integer(C_INT), value :: rank
cannam@127 87 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 88 integer(C_INT), value :: howmany_rank
cannam@127 89 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 90 real(16), dimension(*), intent(out) :: ri
cannam@127 91 real(16), dimension(*), intent(out) :: ii
cannam@127 92 real(16), dimension(*), intent(out) :: ro
cannam@127 93 real(16), dimension(*), intent(out) :: io
cannam@127 94 integer(C_INT), value :: flags
cannam@127 95 end function fftwq_plan_guru_split_dft
cannam@127 96
cannam@127 97 type(C_PTR) function fftwq_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
cannam@127 98 bind(C, name='fftwq_plan_guru64_dft')
cannam@127 99 import
cannam@127 100 integer(C_INT), value :: rank
cannam@127 101 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 102 integer(C_INT), value :: howmany_rank
cannam@127 103 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 104 complex(16), dimension(*), intent(out) :: in
cannam@127 105 complex(16), dimension(*), intent(out) :: out
cannam@127 106 integer(C_INT), value :: sign
cannam@127 107 integer(C_INT), value :: flags
cannam@127 108 end function fftwq_plan_guru64_dft
cannam@127 109
cannam@127 110 type(C_PTR) function fftwq_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
cannam@127 111 bind(C, name='fftwq_plan_guru64_split_dft')
cannam@127 112 import
cannam@127 113 integer(C_INT), value :: rank
cannam@127 114 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 115 integer(C_INT), value :: howmany_rank
cannam@127 116 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 117 real(16), dimension(*), intent(out) :: ri
cannam@127 118 real(16), dimension(*), intent(out) :: ii
cannam@127 119 real(16), dimension(*), intent(out) :: ro
cannam@127 120 real(16), dimension(*), intent(out) :: io
cannam@127 121 integer(C_INT), value :: flags
cannam@127 122 end function fftwq_plan_guru64_split_dft
cannam@127 123
cannam@127 124 subroutine fftwq_execute_dft(p,in,out) bind(C, name='fftwq_execute_dft')
cannam@127 125 import
cannam@127 126 type(C_PTR), value :: p
cannam@127 127 complex(16), dimension(*), intent(inout) :: in
cannam@127 128 complex(16), dimension(*), intent(out) :: out
cannam@127 129 end subroutine fftwq_execute_dft
cannam@127 130
cannam@127 131 subroutine fftwq_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwq_execute_split_dft')
cannam@127 132 import
cannam@127 133 type(C_PTR), value :: p
cannam@127 134 real(16), dimension(*), intent(inout) :: ri
cannam@127 135 real(16), dimension(*), intent(inout) :: ii
cannam@127 136 real(16), dimension(*), intent(out) :: ro
cannam@127 137 real(16), dimension(*), intent(out) :: io
cannam@127 138 end subroutine fftwq_execute_split_dft
cannam@127 139
cannam@127 140 type(C_PTR) function fftwq_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
cannam@127 141 bind(C, name='fftwq_plan_many_dft_r2c')
cannam@127 142 import
cannam@127 143 integer(C_INT), value :: rank
cannam@127 144 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 145 integer(C_INT), value :: howmany
cannam@127 146 real(16), dimension(*), intent(out) :: in
cannam@127 147 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 148 integer(C_INT), value :: istride
cannam@127 149 integer(C_INT), value :: idist
cannam@127 150 complex(16), dimension(*), intent(out) :: out
cannam@127 151 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 152 integer(C_INT), value :: ostride
cannam@127 153 integer(C_INT), value :: odist
cannam@127 154 integer(C_INT), value :: flags
cannam@127 155 end function fftwq_plan_many_dft_r2c
cannam@127 156
cannam@127 157 type(C_PTR) function fftwq_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c')
cannam@127 158 import
cannam@127 159 integer(C_INT), value :: rank
cannam@127 160 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 161 real(16), dimension(*), intent(out) :: in
cannam@127 162 complex(16), dimension(*), intent(out) :: out
cannam@127 163 integer(C_INT), value :: flags
cannam@127 164 end function fftwq_plan_dft_r2c
cannam@127 165
cannam@127 166 type(C_PTR) function fftwq_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_1d')
cannam@127 167 import
cannam@127 168 integer(C_INT), value :: n
cannam@127 169 real(16), dimension(*), intent(out) :: in
cannam@127 170 complex(16), dimension(*), intent(out) :: out
cannam@127 171 integer(C_INT), value :: flags
cannam@127 172 end function fftwq_plan_dft_r2c_1d
cannam@127 173
cannam@127 174 type(C_PTR) function fftwq_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_2d')
cannam@127 175 import
cannam@127 176 integer(C_INT), value :: n0
cannam@127 177 integer(C_INT), value :: n1
cannam@127 178 real(16), dimension(*), intent(out) :: in
cannam@127 179 complex(16), dimension(*), intent(out) :: out
cannam@127 180 integer(C_INT), value :: flags
cannam@127 181 end function fftwq_plan_dft_r2c_2d
cannam@127 182
cannam@127 183 type(C_PTR) function fftwq_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_3d')
cannam@127 184 import
cannam@127 185 integer(C_INT), value :: n0
cannam@127 186 integer(C_INT), value :: n1
cannam@127 187 integer(C_INT), value :: n2
cannam@127 188 real(16), dimension(*), intent(out) :: in
cannam@127 189 complex(16), dimension(*), intent(out) :: out
cannam@127 190 integer(C_INT), value :: flags
cannam@127 191 end function fftwq_plan_dft_r2c_3d
cannam@127 192
cannam@127 193 type(C_PTR) function fftwq_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
cannam@127 194 bind(C, name='fftwq_plan_many_dft_c2r')
cannam@127 195 import
cannam@127 196 integer(C_INT), value :: rank
cannam@127 197 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 198 integer(C_INT), value :: howmany
cannam@127 199 complex(16), dimension(*), intent(out) :: in
cannam@127 200 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 201 integer(C_INT), value :: istride
cannam@127 202 integer(C_INT), value :: idist
cannam@127 203 real(16), dimension(*), intent(out) :: out
cannam@127 204 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 205 integer(C_INT), value :: ostride
cannam@127 206 integer(C_INT), value :: odist
cannam@127 207 integer(C_INT), value :: flags
cannam@127 208 end function fftwq_plan_many_dft_c2r
cannam@127 209
cannam@127 210 type(C_PTR) function fftwq_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r')
cannam@127 211 import
cannam@127 212 integer(C_INT), value :: rank
cannam@127 213 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 214 complex(16), dimension(*), intent(out) :: in
cannam@127 215 real(16), dimension(*), intent(out) :: out
cannam@127 216 integer(C_INT), value :: flags
cannam@127 217 end function fftwq_plan_dft_c2r
cannam@127 218
cannam@127 219 type(C_PTR) function fftwq_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_1d')
cannam@127 220 import
cannam@127 221 integer(C_INT), value :: n
cannam@127 222 complex(16), dimension(*), intent(out) :: in
cannam@127 223 real(16), dimension(*), intent(out) :: out
cannam@127 224 integer(C_INT), value :: flags
cannam@127 225 end function fftwq_plan_dft_c2r_1d
cannam@127 226
cannam@127 227 type(C_PTR) function fftwq_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_2d')
cannam@127 228 import
cannam@127 229 integer(C_INT), value :: n0
cannam@127 230 integer(C_INT), value :: n1
cannam@127 231 complex(16), dimension(*), intent(out) :: in
cannam@127 232 real(16), dimension(*), intent(out) :: out
cannam@127 233 integer(C_INT), value :: flags
cannam@127 234 end function fftwq_plan_dft_c2r_2d
cannam@127 235
cannam@127 236 type(C_PTR) function fftwq_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_3d')
cannam@127 237 import
cannam@127 238 integer(C_INT), value :: n0
cannam@127 239 integer(C_INT), value :: n1
cannam@127 240 integer(C_INT), value :: n2
cannam@127 241 complex(16), dimension(*), intent(out) :: in
cannam@127 242 real(16), dimension(*), intent(out) :: out
cannam@127 243 integer(C_INT), value :: flags
cannam@127 244 end function fftwq_plan_dft_c2r_3d
cannam@127 245
cannam@127 246 type(C_PTR) function fftwq_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 247 bind(C, name='fftwq_plan_guru_dft_r2c')
cannam@127 248 import
cannam@127 249 integer(C_INT), value :: rank
cannam@127 250 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 251 integer(C_INT), value :: howmany_rank
cannam@127 252 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 253 real(16), dimension(*), intent(out) :: in
cannam@127 254 complex(16), dimension(*), intent(out) :: out
cannam@127 255 integer(C_INT), value :: flags
cannam@127 256 end function fftwq_plan_guru_dft_r2c
cannam@127 257
cannam@127 258 type(C_PTR) function fftwq_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 259 bind(C, name='fftwq_plan_guru_dft_c2r')
cannam@127 260 import
cannam@127 261 integer(C_INT), value :: rank
cannam@127 262 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 263 integer(C_INT), value :: howmany_rank
cannam@127 264 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 265 complex(16), dimension(*), intent(out) :: in
cannam@127 266 real(16), dimension(*), intent(out) :: out
cannam@127 267 integer(C_INT), value :: flags
cannam@127 268 end function fftwq_plan_guru_dft_c2r
cannam@127 269
cannam@127 270 type(C_PTR) function fftwq_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
cannam@127 271 bind(C, name='fftwq_plan_guru_split_dft_r2c')
cannam@127 272 import
cannam@127 273 integer(C_INT), value :: rank
cannam@127 274 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 275 integer(C_INT), value :: howmany_rank
cannam@127 276 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 277 real(16), dimension(*), intent(out) :: in
cannam@127 278 real(16), dimension(*), intent(out) :: ro
cannam@127 279 real(16), dimension(*), intent(out) :: io
cannam@127 280 integer(C_INT), value :: flags
cannam@127 281 end function fftwq_plan_guru_split_dft_r2c
cannam@127 282
cannam@127 283 type(C_PTR) function fftwq_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
cannam@127 284 bind(C, name='fftwq_plan_guru_split_dft_c2r')
cannam@127 285 import
cannam@127 286 integer(C_INT), value :: rank
cannam@127 287 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 288 integer(C_INT), value :: howmany_rank
cannam@127 289 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 290 real(16), dimension(*), intent(out) :: ri
cannam@127 291 real(16), dimension(*), intent(out) :: ii
cannam@127 292 real(16), dimension(*), intent(out) :: out
cannam@127 293 integer(C_INT), value :: flags
cannam@127 294 end function fftwq_plan_guru_split_dft_c2r
cannam@127 295
cannam@127 296 type(C_PTR) function fftwq_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 297 bind(C, name='fftwq_plan_guru64_dft_r2c')
cannam@127 298 import
cannam@127 299 integer(C_INT), value :: rank
cannam@127 300 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 301 integer(C_INT), value :: howmany_rank
cannam@127 302 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 303 real(16), dimension(*), intent(out) :: in
cannam@127 304 complex(16), dimension(*), intent(out) :: out
cannam@127 305 integer(C_INT), value :: flags
cannam@127 306 end function fftwq_plan_guru64_dft_r2c
cannam@127 307
cannam@127 308 type(C_PTR) function fftwq_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
cannam@127 309 bind(C, name='fftwq_plan_guru64_dft_c2r')
cannam@127 310 import
cannam@127 311 integer(C_INT), value :: rank
cannam@127 312 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 313 integer(C_INT), value :: howmany_rank
cannam@127 314 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 315 complex(16), dimension(*), intent(out) :: in
cannam@127 316 real(16), dimension(*), intent(out) :: out
cannam@127 317 integer(C_INT), value :: flags
cannam@127 318 end function fftwq_plan_guru64_dft_c2r
cannam@127 319
cannam@127 320 type(C_PTR) function fftwq_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
cannam@127 321 bind(C, name='fftwq_plan_guru64_split_dft_r2c')
cannam@127 322 import
cannam@127 323 integer(C_INT), value :: rank
cannam@127 324 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 325 integer(C_INT), value :: howmany_rank
cannam@127 326 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 327 real(16), dimension(*), intent(out) :: in
cannam@127 328 real(16), dimension(*), intent(out) :: ro
cannam@127 329 real(16), dimension(*), intent(out) :: io
cannam@127 330 integer(C_INT), value :: flags
cannam@127 331 end function fftwq_plan_guru64_split_dft_r2c
cannam@127 332
cannam@127 333 type(C_PTR) function fftwq_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
cannam@127 334 bind(C, name='fftwq_plan_guru64_split_dft_c2r')
cannam@127 335 import
cannam@127 336 integer(C_INT), value :: rank
cannam@127 337 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 338 integer(C_INT), value :: howmany_rank
cannam@127 339 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 340 real(16), dimension(*), intent(out) :: ri
cannam@127 341 real(16), dimension(*), intent(out) :: ii
cannam@127 342 real(16), dimension(*), intent(out) :: out
cannam@127 343 integer(C_INT), value :: flags
cannam@127 344 end function fftwq_plan_guru64_split_dft_c2r
cannam@127 345
cannam@127 346 subroutine fftwq_execute_dft_r2c(p,in,out) bind(C, name='fftwq_execute_dft_r2c')
cannam@127 347 import
cannam@127 348 type(C_PTR), value :: p
cannam@127 349 real(16), dimension(*), intent(inout) :: in
cannam@127 350 complex(16), dimension(*), intent(out) :: out
cannam@127 351 end subroutine fftwq_execute_dft_r2c
cannam@127 352
cannam@127 353 subroutine fftwq_execute_dft_c2r(p,in,out) bind(C, name='fftwq_execute_dft_c2r')
cannam@127 354 import
cannam@127 355 type(C_PTR), value :: p
cannam@127 356 complex(16), dimension(*), intent(inout) :: in
cannam@127 357 real(16), dimension(*), intent(out) :: out
cannam@127 358 end subroutine fftwq_execute_dft_c2r
cannam@127 359
cannam@127 360 subroutine fftwq_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwq_execute_split_dft_r2c')
cannam@127 361 import
cannam@127 362 type(C_PTR), value :: p
cannam@127 363 real(16), dimension(*), intent(inout) :: in
cannam@127 364 real(16), dimension(*), intent(out) :: ro
cannam@127 365 real(16), dimension(*), intent(out) :: io
cannam@127 366 end subroutine fftwq_execute_split_dft_r2c
cannam@127 367
cannam@127 368 subroutine fftwq_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwq_execute_split_dft_c2r')
cannam@127 369 import
cannam@127 370 type(C_PTR), value :: p
cannam@127 371 real(16), dimension(*), intent(inout) :: ri
cannam@127 372 real(16), dimension(*), intent(inout) :: ii
cannam@127 373 real(16), dimension(*), intent(out) :: out
cannam@127 374 end subroutine fftwq_execute_split_dft_c2r
cannam@127 375
cannam@127 376 type(C_PTR) function fftwq_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
cannam@127 377 bind(C, name='fftwq_plan_many_r2r')
cannam@127 378 import
cannam@127 379 integer(C_INT), value :: rank
cannam@127 380 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 381 integer(C_INT), value :: howmany
cannam@127 382 real(16), dimension(*), intent(out) :: in
cannam@127 383 integer(C_INT), dimension(*), intent(in) :: inembed
cannam@127 384 integer(C_INT), value :: istride
cannam@127 385 integer(C_INT), value :: idist
cannam@127 386 real(16), dimension(*), intent(out) :: out
cannam@127 387 integer(C_INT), dimension(*), intent(in) :: onembed
cannam@127 388 integer(C_INT), value :: ostride
cannam@127 389 integer(C_INT), value :: odist
cannam@127 390 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 391 integer(C_INT), value :: flags
cannam@127 392 end function fftwq_plan_many_r2r
cannam@127 393
cannam@127 394 type(C_PTR) function fftwq_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r')
cannam@127 395 import
cannam@127 396 integer(C_INT), value :: rank
cannam@127 397 integer(C_INT), dimension(*), intent(in) :: n
cannam@127 398 real(16), dimension(*), intent(out) :: in
cannam@127 399 real(16), dimension(*), intent(out) :: out
cannam@127 400 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 401 integer(C_INT), value :: flags
cannam@127 402 end function fftwq_plan_r2r
cannam@127 403
cannam@127 404 type(C_PTR) function fftwq_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r_1d')
cannam@127 405 import
cannam@127 406 integer(C_INT), value :: n
cannam@127 407 real(16), dimension(*), intent(out) :: in
cannam@127 408 real(16), dimension(*), intent(out) :: out
cannam@127 409 integer(C_FFTW_R2R_KIND), value :: kind
cannam@127 410 integer(C_INT), value :: flags
cannam@127 411 end function fftwq_plan_r2r_1d
cannam@127 412
cannam@127 413 type(C_PTR) function fftwq_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwq_plan_r2r_2d')
cannam@127 414 import
cannam@127 415 integer(C_INT), value :: n0
cannam@127 416 integer(C_INT), value :: n1
cannam@127 417 real(16), dimension(*), intent(out) :: in
cannam@127 418 real(16), dimension(*), intent(out) :: out
cannam@127 419 integer(C_FFTW_R2R_KIND), value :: kind0
cannam@127 420 integer(C_FFTW_R2R_KIND), value :: kind1
cannam@127 421 integer(C_INT), value :: flags
cannam@127 422 end function fftwq_plan_r2r_2d
cannam@127 423
cannam@127 424 type(C_PTR) function fftwq_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwq_plan_r2r_3d')
cannam@127 425 import
cannam@127 426 integer(C_INT), value :: n0
cannam@127 427 integer(C_INT), value :: n1
cannam@127 428 integer(C_INT), value :: n2
cannam@127 429 real(16), dimension(*), intent(out) :: in
cannam@127 430 real(16), dimension(*), intent(out) :: out
cannam@127 431 integer(C_FFTW_R2R_KIND), value :: kind0
cannam@127 432 integer(C_FFTW_R2R_KIND), value :: kind1
cannam@127 433 integer(C_FFTW_R2R_KIND), value :: kind2
cannam@127 434 integer(C_INT), value :: flags
cannam@127 435 end function fftwq_plan_r2r_3d
cannam@127 436
cannam@127 437 type(C_PTR) function fftwq_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
cannam@127 438 bind(C, name='fftwq_plan_guru_r2r')
cannam@127 439 import
cannam@127 440 integer(C_INT), value :: rank
cannam@127 441 type(fftwq_iodim), dimension(*), intent(in) :: dims
cannam@127 442 integer(C_INT), value :: howmany_rank
cannam@127 443 type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
cannam@127 444 real(16), dimension(*), intent(out) :: in
cannam@127 445 real(16), dimension(*), intent(out) :: out
cannam@127 446 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 447 integer(C_INT), value :: flags
cannam@127 448 end function fftwq_plan_guru_r2r
cannam@127 449
cannam@127 450 type(C_PTR) function fftwq_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
cannam@127 451 bind(C, name='fftwq_plan_guru64_r2r')
cannam@127 452 import
cannam@127 453 integer(C_INT), value :: rank
cannam@127 454 type(fftwq_iodim64), dimension(*), intent(in) :: dims
cannam@127 455 integer(C_INT), value :: howmany_rank
cannam@127 456 type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
cannam@127 457 real(16), dimension(*), intent(out) :: in
cannam@127 458 real(16), dimension(*), intent(out) :: out
cannam@127 459 integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
cannam@127 460 integer(C_INT), value :: flags
cannam@127 461 end function fftwq_plan_guru64_r2r
cannam@127 462
cannam@127 463 subroutine fftwq_execute_r2r(p,in,out) bind(C, name='fftwq_execute_r2r')
cannam@127 464 import
cannam@127 465 type(C_PTR), value :: p
cannam@127 466 real(16), dimension(*), intent(inout) :: in
cannam@127 467 real(16), dimension(*), intent(out) :: out
cannam@127 468 end subroutine fftwq_execute_r2r
cannam@127 469
cannam@127 470 subroutine fftwq_destroy_plan(p) bind(C, name='fftwq_destroy_plan')
cannam@127 471 import
cannam@127 472 type(C_PTR), value :: p
cannam@127 473 end subroutine fftwq_destroy_plan
cannam@127 474
cannam@127 475 subroutine fftwq_forget_wisdom() bind(C, name='fftwq_forget_wisdom')
cannam@127 476 import
cannam@127 477 end subroutine fftwq_forget_wisdom
cannam@127 478
cannam@127 479 subroutine fftwq_cleanup() bind(C, name='fftwq_cleanup')
cannam@127 480 import
cannam@127 481 end subroutine fftwq_cleanup
cannam@127 482
cannam@127 483 subroutine fftwq_set_timelimit(t) bind(C, name='fftwq_set_timelimit')
cannam@127 484 import
cannam@127 485 real(C_DOUBLE), value :: t
cannam@127 486 end subroutine fftwq_set_timelimit
cannam@127 487
cannam@127 488 subroutine fftwq_plan_with_nthreads(nthreads) bind(C, name='fftwq_plan_with_nthreads')
cannam@127 489 import
cannam@127 490 integer(C_INT), value :: nthreads
cannam@127 491 end subroutine fftwq_plan_with_nthreads
cannam@127 492
cannam@127 493 integer(C_INT) function fftwq_init_threads() bind(C, name='fftwq_init_threads')
cannam@127 494 import
cannam@127 495 end function fftwq_init_threads
cannam@127 496
cannam@127 497 subroutine fftwq_cleanup_threads() bind(C, name='fftwq_cleanup_threads')
cannam@127 498 import
cannam@127 499 end subroutine fftwq_cleanup_threads
cannam@127 500
cannam@127 501 subroutine fftwq_make_planner_thread_safe() bind(C, name='fftwq_make_planner_thread_safe')
cannam@127 502 import
cannam@127 503 end subroutine fftwq_make_planner_thread_safe
cannam@127 504
cannam@127 505 integer(C_INT) function fftwq_export_wisdom_to_filename(filename) bind(C, name='fftwq_export_wisdom_to_filename')
cannam@127 506 import
cannam@127 507 character(C_CHAR), dimension(*), intent(in) :: filename
cannam@127 508 end function fftwq_export_wisdom_to_filename
cannam@127 509
cannam@127 510 subroutine fftwq_export_wisdom_to_file(output_file) bind(C, name='fftwq_export_wisdom_to_file')
cannam@127 511 import
cannam@127 512 type(C_PTR), value :: output_file
cannam@127 513 end subroutine fftwq_export_wisdom_to_file
cannam@127 514
cannam@127 515 type(C_PTR) function fftwq_export_wisdom_to_string() bind(C, name='fftwq_export_wisdom_to_string')
cannam@127 516 import
cannam@127 517 end function fftwq_export_wisdom_to_string
cannam@127 518
cannam@127 519 subroutine fftwq_export_wisdom(write_char,data) bind(C, name='fftwq_export_wisdom')
cannam@127 520 import
cannam@127 521 type(C_FUNPTR), value :: write_char
cannam@127 522 type(C_PTR), value :: data
cannam@127 523 end subroutine fftwq_export_wisdom
cannam@127 524
cannam@127 525 integer(C_INT) function fftwq_import_system_wisdom() bind(C, name='fftwq_import_system_wisdom')
cannam@127 526 import
cannam@127 527 end function fftwq_import_system_wisdom
cannam@127 528
cannam@127 529 integer(C_INT) function fftwq_import_wisdom_from_filename(filename) bind(C, name='fftwq_import_wisdom_from_filename')
cannam@127 530 import
cannam@127 531 character(C_CHAR), dimension(*), intent(in) :: filename
cannam@127 532 end function fftwq_import_wisdom_from_filename
cannam@127 533
cannam@127 534 integer(C_INT) function fftwq_import_wisdom_from_file(input_file) bind(C, name='fftwq_import_wisdom_from_file')
cannam@127 535 import
cannam@127 536 type(C_PTR), value :: input_file
cannam@127 537 end function fftwq_import_wisdom_from_file
cannam@127 538
cannam@127 539 integer(C_INT) function fftwq_import_wisdom_from_string(input_string) bind(C, name='fftwq_import_wisdom_from_string')
cannam@127 540 import
cannam@127 541 character(C_CHAR), dimension(*), intent(in) :: input_string
cannam@127 542 end function fftwq_import_wisdom_from_string
cannam@127 543
cannam@127 544 integer(C_INT) function fftwq_import_wisdom(read_char,data) bind(C, name='fftwq_import_wisdom')
cannam@127 545 import
cannam@127 546 type(C_FUNPTR), value :: read_char
cannam@127 547 type(C_PTR), value :: data
cannam@127 548 end function fftwq_import_wisdom
cannam@127 549
cannam@127 550 subroutine fftwq_fprint_plan(p,output_file) bind(C, name='fftwq_fprint_plan')
cannam@127 551 import
cannam@127 552 type(C_PTR), value :: p
cannam@127 553 type(C_PTR), value :: output_file
cannam@127 554 end subroutine fftwq_fprint_plan
cannam@127 555
cannam@127 556 subroutine fftwq_print_plan(p) bind(C, name='fftwq_print_plan')
cannam@127 557 import
cannam@127 558 type(C_PTR), value :: p
cannam@127 559 end subroutine fftwq_print_plan
cannam@127 560
cannam@127 561 type(C_PTR) function fftwq_sprint_plan(p) bind(C, name='fftwq_sprint_plan')
cannam@127 562 import
cannam@127 563 type(C_PTR), value :: p
cannam@127 564 end function fftwq_sprint_plan
cannam@127 565
cannam@127 566 type(C_PTR) function fftwq_malloc(n) bind(C, name='fftwq_malloc')
cannam@127 567 import
cannam@127 568 integer(C_SIZE_T), value :: n
cannam@127 569 end function fftwq_malloc
cannam@127 570
cannam@127 571 type(C_PTR) function fftwq_alloc_real(n) bind(C, name='fftwq_alloc_real')
cannam@127 572 import
cannam@127 573 integer(C_SIZE_T), value :: n
cannam@127 574 end function fftwq_alloc_real
cannam@127 575
cannam@127 576 type(C_PTR) function fftwq_alloc_complex(n) bind(C, name='fftwq_alloc_complex')
cannam@127 577 import
cannam@127 578 integer(C_SIZE_T), value :: n
cannam@127 579 end function fftwq_alloc_complex
cannam@127 580
cannam@127 581 subroutine fftwq_free(p) bind(C, name='fftwq_free')
cannam@127 582 import
cannam@127 583 type(C_PTR), value :: p
cannam@127 584 end subroutine fftwq_free
cannam@127 585
cannam@127 586 subroutine fftwq_flops(p,add,mul,fmas) bind(C, name='fftwq_flops')
cannam@127 587 import
cannam@127 588 type(C_PTR), value :: p
cannam@127 589 real(C_DOUBLE), intent(out) :: add
cannam@127 590 real(C_DOUBLE), intent(out) :: mul
cannam@127 591 real(C_DOUBLE), intent(out) :: fmas
cannam@127 592 end subroutine fftwq_flops
cannam@127 593
cannam@127 594 real(C_DOUBLE) function fftwq_estimate_cost(p) bind(C, name='fftwq_estimate_cost')
cannam@127 595 import
cannam@127 596 type(C_PTR), value :: p
cannam@127 597 end function fftwq_estimate_cost
cannam@127 598
cannam@127 599 real(C_DOUBLE) function fftwq_cost(p) bind(C, name='fftwq_cost')
cannam@127 600 import
cannam@127 601 type(C_PTR), value :: p
cannam@127 602 end function fftwq_cost
cannam@127 603
cannam@127 604 integer(C_INT) function fftwq_alignment_of(p) bind(C, name='fftwq_alignment_of')
cannam@127 605 import
cannam@127 606 real(16), dimension(*), intent(out) :: p
cannam@127 607 end function fftwq_alignment_of
cannam@127 608
cannam@127 609 end interface