Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/fftw3q.f03 is written in an unsupported language. File is not indexed.

0001 ! Generated automatically.  DO NOT EDIT!
0002 
0003 
0004   type, bind(C) :: fftwq_iodim
0005      integer(C_INT) n, is, os
0006   end type fftwq_iodim
0007   type, bind(C) :: fftwq_iodim64
0008      integer(C_INTPTR_T) n, is, os
0009   end type fftwq_iodim64
0010 
0011   interface
0012     type(C_PTR) function fftwq_plan_dft(rank,n,in,out,sign,flags) bind(C, name='fftwq_plan_dft')
0013       import
0014       integer(C_INT), value :: rank
0015       integer(C_INT), dimension(*), intent(in) :: n
0016       complex(16), dimension(*), intent(out) :: in
0017       complex(16), dimension(*), intent(out) :: out
0018       integer(C_INT), value :: sign
0019       integer(C_INT), value :: flags
0020     end function fftwq_plan_dft
0021     
0022     type(C_PTR) function fftwq_plan_dft_1d(n,in,out,sign,flags) bind(C, name='fftwq_plan_dft_1d')
0023       import
0024       integer(C_INT), value :: n
0025       complex(16), dimension(*), intent(out) :: in
0026       complex(16), dimension(*), intent(out) :: out
0027       integer(C_INT), value :: sign
0028       integer(C_INT), value :: flags
0029     end function fftwq_plan_dft_1d
0030     
0031     type(C_PTR) function fftwq_plan_dft_2d(n0,n1,in,out,sign,flags) bind(C, name='fftwq_plan_dft_2d')
0032       import
0033       integer(C_INT), value :: n0
0034       integer(C_INT), value :: n1
0035       complex(16), dimension(*), intent(out) :: in
0036       complex(16), dimension(*), intent(out) :: out
0037       integer(C_INT), value :: sign
0038       integer(C_INT), value :: flags
0039     end function fftwq_plan_dft_2d
0040     
0041     type(C_PTR) function fftwq_plan_dft_3d(n0,n1,n2,in,out,sign,flags) bind(C, name='fftwq_plan_dft_3d')
0042       import
0043       integer(C_INT), value :: n0
0044       integer(C_INT), value :: n1
0045       integer(C_INT), value :: n2
0046       complex(16), dimension(*), intent(out) :: in
0047       complex(16), dimension(*), intent(out) :: out
0048       integer(C_INT), value :: sign
0049       integer(C_INT), value :: flags
0050     end function fftwq_plan_dft_3d
0051     
0052     type(C_PTR) function fftwq_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) &
0053                          bind(C, name='fftwq_plan_many_dft')
0054       import
0055       integer(C_INT), value :: rank
0056       integer(C_INT), dimension(*), intent(in) :: n
0057       integer(C_INT), value :: howmany
0058       complex(16), dimension(*), intent(out) :: in
0059       integer(C_INT), dimension(*), intent(in) :: inembed
0060       integer(C_INT), value :: istride
0061       integer(C_INT), value :: idist
0062       complex(16), dimension(*), intent(out) :: out
0063       integer(C_INT), dimension(*), intent(in) :: onembed
0064       integer(C_INT), value :: ostride
0065       integer(C_INT), value :: odist
0066       integer(C_INT), value :: sign
0067       integer(C_INT), value :: flags
0068     end function fftwq_plan_many_dft
0069     
0070     type(C_PTR) function fftwq_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
0071                          bind(C, name='fftwq_plan_guru_dft')
0072       import
0073       integer(C_INT), value :: rank
0074       type(fftwq_iodim), dimension(*), intent(in) :: dims
0075       integer(C_INT), value :: howmany_rank
0076       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0077       complex(16), dimension(*), intent(out) :: in
0078       complex(16), dimension(*), intent(out) :: out
0079       integer(C_INT), value :: sign
0080       integer(C_INT), value :: flags
0081     end function fftwq_plan_guru_dft
0082     
0083     type(C_PTR) function fftwq_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
0084                          bind(C, name='fftwq_plan_guru_split_dft')
0085       import
0086       integer(C_INT), value :: rank
0087       type(fftwq_iodim), dimension(*), intent(in) :: dims
0088       integer(C_INT), value :: howmany_rank
0089       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0090       real(16), dimension(*), intent(out) :: ri
0091       real(16), dimension(*), intent(out) :: ii
0092       real(16), dimension(*), intent(out) :: ro
0093       real(16), dimension(*), intent(out) :: io
0094       integer(C_INT), value :: flags
0095     end function fftwq_plan_guru_split_dft
0096     
0097     type(C_PTR) function fftwq_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) &
0098                          bind(C, name='fftwq_plan_guru64_dft')
0099       import
0100       integer(C_INT), value :: rank
0101       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0102       integer(C_INT), value :: howmany_rank
0103       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0104       complex(16), dimension(*), intent(out) :: in
0105       complex(16), dimension(*), intent(out) :: out
0106       integer(C_INT), value :: sign
0107       integer(C_INT), value :: flags
0108     end function fftwq_plan_guru64_dft
0109     
0110     type(C_PTR) function fftwq_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) &
0111                          bind(C, name='fftwq_plan_guru64_split_dft')
0112       import
0113       integer(C_INT), value :: rank
0114       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0115       integer(C_INT), value :: howmany_rank
0116       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0117       real(16), dimension(*), intent(out) :: ri
0118       real(16), dimension(*), intent(out) :: ii
0119       real(16), dimension(*), intent(out) :: ro
0120       real(16), dimension(*), intent(out) :: io
0121       integer(C_INT), value :: flags
0122     end function fftwq_plan_guru64_split_dft
0123     
0124     subroutine fftwq_execute_dft(p,in,out) bind(C, name='fftwq_execute_dft')
0125       import
0126       type(C_PTR), value :: p
0127       complex(16), dimension(*), intent(inout) :: in
0128       complex(16), dimension(*), intent(out) :: out
0129     end subroutine fftwq_execute_dft
0130     
0131     subroutine fftwq_execute_split_dft(p,ri,ii,ro,io) bind(C, name='fftwq_execute_split_dft')
0132       import
0133       type(C_PTR), value :: p
0134       real(16), dimension(*), intent(inout) :: ri
0135       real(16), dimension(*), intent(inout) :: ii
0136       real(16), dimension(*), intent(out) :: ro
0137       real(16), dimension(*), intent(out) :: io
0138     end subroutine fftwq_execute_split_dft
0139     
0140     type(C_PTR) function fftwq_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
0141                          bind(C, name='fftwq_plan_many_dft_r2c')
0142       import
0143       integer(C_INT), value :: rank
0144       integer(C_INT), dimension(*), intent(in) :: n
0145       integer(C_INT), value :: howmany
0146       real(16), dimension(*), intent(out) :: in
0147       integer(C_INT), dimension(*), intent(in) :: inembed
0148       integer(C_INT), value :: istride
0149       integer(C_INT), value :: idist
0150       complex(16), dimension(*), intent(out) :: out
0151       integer(C_INT), dimension(*), intent(in) :: onembed
0152       integer(C_INT), value :: ostride
0153       integer(C_INT), value :: odist
0154       integer(C_INT), value :: flags
0155     end function fftwq_plan_many_dft_r2c
0156     
0157     type(C_PTR) function fftwq_plan_dft_r2c(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c')
0158       import
0159       integer(C_INT), value :: rank
0160       integer(C_INT), dimension(*), intent(in) :: n
0161       real(16), dimension(*), intent(out) :: in
0162       complex(16), dimension(*), intent(out) :: out
0163       integer(C_INT), value :: flags
0164     end function fftwq_plan_dft_r2c
0165     
0166     type(C_PTR) function fftwq_plan_dft_r2c_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_1d')
0167       import
0168       integer(C_INT), value :: n
0169       real(16), dimension(*), intent(out) :: in
0170       complex(16), dimension(*), intent(out) :: out
0171       integer(C_INT), value :: flags
0172     end function fftwq_plan_dft_r2c_1d
0173     
0174     type(C_PTR) function fftwq_plan_dft_r2c_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_2d')
0175       import
0176       integer(C_INT), value :: n0
0177       integer(C_INT), value :: n1
0178       real(16), dimension(*), intent(out) :: in
0179       complex(16), dimension(*), intent(out) :: out
0180       integer(C_INT), value :: flags
0181     end function fftwq_plan_dft_r2c_2d
0182     
0183     type(C_PTR) function fftwq_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_r2c_3d')
0184       import
0185       integer(C_INT), value :: n0
0186       integer(C_INT), value :: n1
0187       integer(C_INT), value :: n2
0188       real(16), dimension(*), intent(out) :: in
0189       complex(16), dimension(*), intent(out) :: out
0190       integer(C_INT), value :: flags
0191     end function fftwq_plan_dft_r2c_3d
0192     
0193     type(C_PTR) function fftwq_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) &
0194                          bind(C, name='fftwq_plan_many_dft_c2r')
0195       import
0196       integer(C_INT), value :: rank
0197       integer(C_INT), dimension(*), intent(in) :: n
0198       integer(C_INT), value :: howmany
0199       complex(16), dimension(*), intent(out) :: in
0200       integer(C_INT), dimension(*), intent(in) :: inembed
0201       integer(C_INT), value :: istride
0202       integer(C_INT), value :: idist
0203       real(16), dimension(*), intent(out) :: out
0204       integer(C_INT), dimension(*), intent(in) :: onembed
0205       integer(C_INT), value :: ostride
0206       integer(C_INT), value :: odist
0207       integer(C_INT), value :: flags
0208     end function fftwq_plan_many_dft_c2r
0209     
0210     type(C_PTR) function fftwq_plan_dft_c2r(rank,n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r')
0211       import
0212       integer(C_INT), value :: rank
0213       integer(C_INT), dimension(*), intent(in) :: n
0214       complex(16), dimension(*), intent(out) :: in
0215       real(16), dimension(*), intent(out) :: out
0216       integer(C_INT), value :: flags
0217     end function fftwq_plan_dft_c2r
0218     
0219     type(C_PTR) function fftwq_plan_dft_c2r_1d(n,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_1d')
0220       import
0221       integer(C_INT), value :: n
0222       complex(16), dimension(*), intent(out) :: in
0223       real(16), dimension(*), intent(out) :: out
0224       integer(C_INT), value :: flags
0225     end function fftwq_plan_dft_c2r_1d
0226     
0227     type(C_PTR) function fftwq_plan_dft_c2r_2d(n0,n1,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_2d')
0228       import
0229       integer(C_INT), value :: n0
0230       integer(C_INT), value :: n1
0231       complex(16), dimension(*), intent(out) :: in
0232       real(16), dimension(*), intent(out) :: out
0233       integer(C_INT), value :: flags
0234     end function fftwq_plan_dft_c2r_2d
0235     
0236     type(C_PTR) function fftwq_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) bind(C, name='fftwq_plan_dft_c2r_3d')
0237       import
0238       integer(C_INT), value :: n0
0239       integer(C_INT), value :: n1
0240       integer(C_INT), value :: n2
0241       complex(16), dimension(*), intent(out) :: in
0242       real(16), dimension(*), intent(out) :: out
0243       integer(C_INT), value :: flags
0244     end function fftwq_plan_dft_c2r_3d
0245     
0246     type(C_PTR) function fftwq_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
0247                          bind(C, name='fftwq_plan_guru_dft_r2c')
0248       import
0249       integer(C_INT), value :: rank
0250       type(fftwq_iodim), dimension(*), intent(in) :: dims
0251       integer(C_INT), value :: howmany_rank
0252       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0253       real(16), dimension(*), intent(out) :: in
0254       complex(16), dimension(*), intent(out) :: out
0255       integer(C_INT), value :: flags
0256     end function fftwq_plan_guru_dft_r2c
0257     
0258     type(C_PTR) function fftwq_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
0259                          bind(C, name='fftwq_plan_guru_dft_c2r')
0260       import
0261       integer(C_INT), value :: rank
0262       type(fftwq_iodim), dimension(*), intent(in) :: dims
0263       integer(C_INT), value :: howmany_rank
0264       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0265       complex(16), dimension(*), intent(out) :: in
0266       real(16), dimension(*), intent(out) :: out
0267       integer(C_INT), value :: flags
0268     end function fftwq_plan_guru_dft_c2r
0269     
0270     type(C_PTR) function fftwq_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
0271                          bind(C, name='fftwq_plan_guru_split_dft_r2c')
0272       import
0273       integer(C_INT), value :: rank
0274       type(fftwq_iodim), dimension(*), intent(in) :: dims
0275       integer(C_INT), value :: howmany_rank
0276       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0277       real(16), dimension(*), intent(out) :: in
0278       real(16), dimension(*), intent(out) :: ro
0279       real(16), dimension(*), intent(out) :: io
0280       integer(C_INT), value :: flags
0281     end function fftwq_plan_guru_split_dft_r2c
0282     
0283     type(C_PTR) function fftwq_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
0284                          bind(C, name='fftwq_plan_guru_split_dft_c2r')
0285       import
0286       integer(C_INT), value :: rank
0287       type(fftwq_iodim), dimension(*), intent(in) :: dims
0288       integer(C_INT), value :: howmany_rank
0289       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0290       real(16), dimension(*), intent(out) :: ri
0291       real(16), dimension(*), intent(out) :: ii
0292       real(16), dimension(*), intent(out) :: out
0293       integer(C_INT), value :: flags
0294     end function fftwq_plan_guru_split_dft_c2r
0295     
0296     type(C_PTR) function fftwq_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
0297                          bind(C, name='fftwq_plan_guru64_dft_r2c')
0298       import
0299       integer(C_INT), value :: rank
0300       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0301       integer(C_INT), value :: howmany_rank
0302       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0303       real(16), dimension(*), intent(out) :: in
0304       complex(16), dimension(*), intent(out) :: out
0305       integer(C_INT), value :: flags
0306     end function fftwq_plan_guru64_dft_r2c
0307     
0308     type(C_PTR) function fftwq_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) &
0309                          bind(C, name='fftwq_plan_guru64_dft_c2r')
0310       import
0311       integer(C_INT), value :: rank
0312       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0313       integer(C_INT), value :: howmany_rank
0314       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0315       complex(16), dimension(*), intent(out) :: in
0316       real(16), dimension(*), intent(out) :: out
0317       integer(C_INT), value :: flags
0318     end function fftwq_plan_guru64_dft_c2r
0319     
0320     type(C_PTR) function fftwq_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) &
0321                          bind(C, name='fftwq_plan_guru64_split_dft_r2c')
0322       import
0323       integer(C_INT), value :: rank
0324       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0325       integer(C_INT), value :: howmany_rank
0326       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0327       real(16), dimension(*), intent(out) :: in
0328       real(16), dimension(*), intent(out) :: ro
0329       real(16), dimension(*), intent(out) :: io
0330       integer(C_INT), value :: flags
0331     end function fftwq_plan_guru64_split_dft_r2c
0332     
0333     type(C_PTR) function fftwq_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) &
0334                          bind(C, name='fftwq_plan_guru64_split_dft_c2r')
0335       import
0336       integer(C_INT), value :: rank
0337       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0338       integer(C_INT), value :: howmany_rank
0339       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0340       real(16), dimension(*), intent(out) :: ri
0341       real(16), dimension(*), intent(out) :: ii
0342       real(16), dimension(*), intent(out) :: out
0343       integer(C_INT), value :: flags
0344     end function fftwq_plan_guru64_split_dft_c2r
0345     
0346     subroutine fftwq_execute_dft_r2c(p,in,out) bind(C, name='fftwq_execute_dft_r2c')
0347       import
0348       type(C_PTR), value :: p
0349       real(16), dimension(*), intent(inout) :: in
0350       complex(16), dimension(*), intent(out) :: out
0351     end subroutine fftwq_execute_dft_r2c
0352     
0353     subroutine fftwq_execute_dft_c2r(p,in,out) bind(C, name='fftwq_execute_dft_c2r')
0354       import
0355       type(C_PTR), value :: p
0356       complex(16), dimension(*), intent(inout) :: in
0357       real(16), dimension(*), intent(out) :: out
0358     end subroutine fftwq_execute_dft_c2r
0359     
0360     subroutine fftwq_execute_split_dft_r2c(p,in,ro,io) bind(C, name='fftwq_execute_split_dft_r2c')
0361       import
0362       type(C_PTR), value :: p
0363       real(16), dimension(*), intent(inout) :: in
0364       real(16), dimension(*), intent(out) :: ro
0365       real(16), dimension(*), intent(out) :: io
0366     end subroutine fftwq_execute_split_dft_r2c
0367     
0368     subroutine fftwq_execute_split_dft_c2r(p,ri,ii,out) bind(C, name='fftwq_execute_split_dft_c2r')
0369       import
0370       type(C_PTR), value :: p
0371       real(16), dimension(*), intent(inout) :: ri
0372       real(16), dimension(*), intent(inout) :: ii
0373       real(16), dimension(*), intent(out) :: out
0374     end subroutine fftwq_execute_split_dft_c2r
0375     
0376     type(C_PTR) function fftwq_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) &
0377                          bind(C, name='fftwq_plan_many_r2r')
0378       import
0379       integer(C_INT), value :: rank
0380       integer(C_INT), dimension(*), intent(in) :: n
0381       integer(C_INT), value :: howmany
0382       real(16), dimension(*), intent(out) :: in
0383       integer(C_INT), dimension(*), intent(in) :: inembed
0384       integer(C_INT), value :: istride
0385       integer(C_INT), value :: idist
0386       real(16), dimension(*), intent(out) :: out
0387       integer(C_INT), dimension(*), intent(in) :: onembed
0388       integer(C_INT), value :: ostride
0389       integer(C_INT), value :: odist
0390       integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
0391       integer(C_INT), value :: flags
0392     end function fftwq_plan_many_r2r
0393     
0394     type(C_PTR) function fftwq_plan_r2r(rank,n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r')
0395       import
0396       integer(C_INT), value :: rank
0397       integer(C_INT), dimension(*), intent(in) :: n
0398       real(16), dimension(*), intent(out) :: in
0399       real(16), dimension(*), intent(out) :: out
0400       integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
0401       integer(C_INT), value :: flags
0402     end function fftwq_plan_r2r
0403     
0404     type(C_PTR) function fftwq_plan_r2r_1d(n,in,out,kind,flags) bind(C, name='fftwq_plan_r2r_1d')
0405       import
0406       integer(C_INT), value :: n
0407       real(16), dimension(*), intent(out) :: in
0408       real(16), dimension(*), intent(out) :: out
0409       integer(C_FFTW_R2R_KIND), value :: kind
0410       integer(C_INT), value :: flags
0411     end function fftwq_plan_r2r_1d
0412     
0413     type(C_PTR) function fftwq_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) bind(C, name='fftwq_plan_r2r_2d')
0414       import
0415       integer(C_INT), value :: n0
0416       integer(C_INT), value :: n1
0417       real(16), dimension(*), intent(out) :: in
0418       real(16), dimension(*), intent(out) :: out
0419       integer(C_FFTW_R2R_KIND), value :: kind0
0420       integer(C_FFTW_R2R_KIND), value :: kind1
0421       integer(C_INT), value :: flags
0422     end function fftwq_plan_r2r_2d
0423     
0424     type(C_PTR) function fftwq_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) bind(C, name='fftwq_plan_r2r_3d')
0425       import
0426       integer(C_INT), value :: n0
0427       integer(C_INT), value :: n1
0428       integer(C_INT), value :: n2
0429       real(16), dimension(*), intent(out) :: in
0430       real(16), dimension(*), intent(out) :: out
0431       integer(C_FFTW_R2R_KIND), value :: kind0
0432       integer(C_FFTW_R2R_KIND), value :: kind1
0433       integer(C_FFTW_R2R_KIND), value :: kind2
0434       integer(C_INT), value :: flags
0435     end function fftwq_plan_r2r_3d
0436     
0437     type(C_PTR) function fftwq_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
0438                          bind(C, name='fftwq_plan_guru_r2r')
0439       import
0440       integer(C_INT), value :: rank
0441       type(fftwq_iodim), dimension(*), intent(in) :: dims
0442       integer(C_INT), value :: howmany_rank
0443       type(fftwq_iodim), dimension(*), intent(in) :: howmany_dims
0444       real(16), dimension(*), intent(out) :: in
0445       real(16), dimension(*), intent(out) :: out
0446       integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
0447       integer(C_INT), value :: flags
0448     end function fftwq_plan_guru_r2r
0449     
0450     type(C_PTR) function fftwq_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) &
0451                          bind(C, name='fftwq_plan_guru64_r2r')
0452       import
0453       integer(C_INT), value :: rank
0454       type(fftwq_iodim64), dimension(*), intent(in) :: dims
0455       integer(C_INT), value :: howmany_rank
0456       type(fftwq_iodim64), dimension(*), intent(in) :: howmany_dims
0457       real(16), dimension(*), intent(out) :: in
0458       real(16), dimension(*), intent(out) :: out
0459       integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind
0460       integer(C_INT), value :: flags
0461     end function fftwq_plan_guru64_r2r
0462     
0463     subroutine fftwq_execute_r2r(p,in,out) bind(C, name='fftwq_execute_r2r')
0464       import
0465       type(C_PTR), value :: p
0466       real(16), dimension(*), intent(inout) :: in
0467       real(16), dimension(*), intent(out) :: out
0468     end subroutine fftwq_execute_r2r
0469     
0470     subroutine fftwq_destroy_plan(p) bind(C, name='fftwq_destroy_plan')
0471       import
0472       type(C_PTR), value :: p
0473     end subroutine fftwq_destroy_plan
0474     
0475     subroutine fftwq_forget_wisdom() bind(C, name='fftwq_forget_wisdom')
0476       import
0477     end subroutine fftwq_forget_wisdom
0478     
0479     subroutine fftwq_cleanup() bind(C, name='fftwq_cleanup')
0480       import
0481     end subroutine fftwq_cleanup
0482     
0483     subroutine fftwq_set_timelimit(t) bind(C, name='fftwq_set_timelimit')
0484       import
0485       real(C_DOUBLE), value :: t
0486     end subroutine fftwq_set_timelimit
0487     
0488     subroutine fftwq_plan_with_nthreads(nthreads) bind(C, name='fftwq_plan_with_nthreads')
0489       import
0490       integer(C_INT), value :: nthreads
0491     end subroutine fftwq_plan_with_nthreads
0492     
0493     integer(C_INT) function fftwq_planner_nthreads() bind(C, name='fftwq_planner_nthreads')
0494       import
0495     end function fftwq_planner_nthreads
0496     
0497     integer(C_INT) function fftwq_init_threads() bind(C, name='fftwq_init_threads')
0498       import
0499     end function fftwq_init_threads
0500     
0501     subroutine fftwq_cleanup_threads() bind(C, name='fftwq_cleanup_threads')
0502       import
0503     end subroutine fftwq_cleanup_threads
0504     
0505 ! Unable to generate Fortran interface for fftwq_threads_set_callback
0506     subroutine fftwq_make_planner_thread_safe() bind(C, name='fftwq_make_planner_thread_safe')
0507       import
0508     end subroutine fftwq_make_planner_thread_safe
0509     
0510     integer(C_INT) function fftwq_export_wisdom_to_filename(filename) bind(C, name='fftwq_export_wisdom_to_filename')
0511       import
0512       character(C_CHAR), dimension(*), intent(in) :: filename
0513     end function fftwq_export_wisdom_to_filename
0514     
0515     subroutine fftwq_export_wisdom_to_file(output_file) bind(C, name='fftwq_export_wisdom_to_file')
0516       import
0517       type(C_PTR), value :: output_file
0518     end subroutine fftwq_export_wisdom_to_file
0519     
0520     type(C_PTR) function fftwq_export_wisdom_to_string() bind(C, name='fftwq_export_wisdom_to_string')
0521       import
0522     end function fftwq_export_wisdom_to_string
0523     
0524     subroutine fftwq_export_wisdom(write_char,data) bind(C, name='fftwq_export_wisdom')
0525       import
0526       type(C_FUNPTR), value :: write_char
0527       type(C_PTR), value :: data
0528     end subroutine fftwq_export_wisdom
0529     
0530     integer(C_INT) function fftwq_import_system_wisdom() bind(C, name='fftwq_import_system_wisdom')
0531       import
0532     end function fftwq_import_system_wisdom
0533     
0534     integer(C_INT) function fftwq_import_wisdom_from_filename(filename) bind(C, name='fftwq_import_wisdom_from_filename')
0535       import
0536       character(C_CHAR), dimension(*), intent(in) :: filename
0537     end function fftwq_import_wisdom_from_filename
0538     
0539     integer(C_INT) function fftwq_import_wisdom_from_file(input_file) bind(C, name='fftwq_import_wisdom_from_file')
0540       import
0541       type(C_PTR), value :: input_file
0542     end function fftwq_import_wisdom_from_file
0543     
0544     integer(C_INT) function fftwq_import_wisdom_from_string(input_string) bind(C, name='fftwq_import_wisdom_from_string')
0545       import
0546       character(C_CHAR), dimension(*), intent(in) :: input_string
0547     end function fftwq_import_wisdom_from_string
0548     
0549     integer(C_INT) function fftwq_import_wisdom(read_char,data) bind(C, name='fftwq_import_wisdom')
0550       import
0551       type(C_FUNPTR), value :: read_char
0552       type(C_PTR), value :: data
0553     end function fftwq_import_wisdom
0554     
0555     subroutine fftwq_fprint_plan(p,output_file) bind(C, name='fftwq_fprint_plan')
0556       import
0557       type(C_PTR), value :: p
0558       type(C_PTR), value :: output_file
0559     end subroutine fftwq_fprint_plan
0560     
0561     subroutine fftwq_print_plan(p) bind(C, name='fftwq_print_plan')
0562       import
0563       type(C_PTR), value :: p
0564     end subroutine fftwq_print_plan
0565     
0566     type(C_PTR) function fftwq_sprint_plan(p) bind(C, name='fftwq_sprint_plan')
0567       import
0568       type(C_PTR), value :: p
0569     end function fftwq_sprint_plan
0570     
0571     type(C_PTR) function fftwq_malloc(n) bind(C, name='fftwq_malloc')
0572       import
0573       integer(C_SIZE_T), value :: n
0574     end function fftwq_malloc
0575     
0576     type(C_PTR) function fftwq_alloc_real(n) bind(C, name='fftwq_alloc_real')
0577       import
0578       integer(C_SIZE_T), value :: n
0579     end function fftwq_alloc_real
0580     
0581     type(C_PTR) function fftwq_alloc_complex(n) bind(C, name='fftwq_alloc_complex')
0582       import
0583       integer(C_SIZE_T), value :: n
0584     end function fftwq_alloc_complex
0585     
0586     subroutine fftwq_free(p) bind(C, name='fftwq_free')
0587       import
0588       type(C_PTR), value :: p
0589     end subroutine fftwq_free
0590     
0591     subroutine fftwq_flops(p,add,mul,fmas) bind(C, name='fftwq_flops')
0592       import
0593       type(C_PTR), value :: p
0594       real(C_DOUBLE), intent(out) :: add
0595       real(C_DOUBLE), intent(out) :: mul
0596       real(C_DOUBLE), intent(out) :: fmas
0597     end subroutine fftwq_flops
0598     
0599     real(C_DOUBLE) function fftwq_estimate_cost(p) bind(C, name='fftwq_estimate_cost')
0600       import
0601       type(C_PTR), value :: p
0602     end function fftwq_estimate_cost
0603     
0604     real(C_DOUBLE) function fftwq_cost(p) bind(C, name='fftwq_cost')
0605       import
0606       type(C_PTR), value :: p
0607     end function fftwq_cost
0608     
0609     integer(C_INT) function fftwq_alignment_of(p) bind(C, name='fftwq_alignment_of')
0610       import
0611       real(16), dimension(*), intent(out) :: p
0612     end function fftwq_alignment_of
0613     
0614   end interface