fftw_wrap Module

type(C_PTR) function fftw_plan_dft(rank,n,in,out,sign,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_dft = C_NULL_PTR end function fftw_plan_dft

type(C_PTR) function fftw_plan_dft_1d(n,in,out,sign,flags) integer(C_INT), value :: n complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_dft_1d = C_NULL_PTR end function fftw_plan_dft_1d

type(C_PTR) function fftw_plan_dft_2d(n0,n1,in,out,sign,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_dft_2d = C_NULL_PTR end function fftw_plan_dft_2d

type(C_PTR) function fftw_plan_dft_3d(n0,n1,n2,in,out,sign,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_dft_3d = C_NULL_PTR end function fftw_plan_dft_3d

type(C_PTR) function fftw_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), dimension(*), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_many_dft = C_NULL_PTR end function fftw_plan_many_dft

type(C_PTR) function fftw_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_guru_dft = C_NULL_PTR end function fftw_plan_guru_dft

type(C_PTR) function fftw_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: ri real(C_DOUBLE), dimension(), intent(out) :: ii real(C_DOUBLE), dimension(), intent(out) :: ro real(C_DOUBLE), dimension(), intent(out) :: io integer(C_INT), value :: flags fftw_plan_guru_split_dft = C_NULL_PTR end function fftw_plan_guru_split_dft

type(C_PTR) function fftw_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftw_plan_guru64_dft = C_NULL_PTR end function fftw_plan_guru64_dft

type(C_PTR) function fftw_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: ri real(C_DOUBLE), dimension(), intent(out) :: ii real(C_DOUBLE), dimension(), intent(out) :: ro real(C_DOUBLE), dimension(), intent(out) :: io integer(C_INT), value :: flags fftw_plan_guru64_split_dft = C_NULL_PTR end function fftw_plan_guru64_split_dft

subroutine fftw_execute_dft(p,in,out) type(C_PTR), value :: p complex(C_DOUBLE_COMPLEX), dimension(), intent(inout) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftw_execute_dft

subroutine fftw_execute_split_dft(p,ri,ii,ro,io) type(C_PTR), value :: p real(C_DOUBLE), dimension(), intent(inout) :: ri real(C_DOUBLE), dimension(), intent(inout) :: ii real(C_DOUBLE), dimension(), intent(out) :: ro real(C_DOUBLE), dimension(), intent(out) :: io

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftw_execute_split_dft

type(C_PTR) function fftw_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany real(C_DOUBLE), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), dimension(*), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_INT), value :: flags fftw_plan_many_dft_r2c = C_NULL_PTR end function fftw_plan_many_dft_r2c

type(C_PTR) function fftw_plan_dft_r2c(rank,n,in,out,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n real(C_DOUBLE), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_r2c = C_NULL_PTR end function fftw_plan_dft_r2c

type(C_PTR) function fftw_plan_dft_r2c_1d(n,in,out,flags) integer(C_INT), value :: n real(C_DOUBLE), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_r2c_1d = C_NULL_PTR end function fftw_plan_dft_r2c_1d

type(C_PTR) function fftw_plan_dft_r2c_2d(n0,n1,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 real(C_DOUBLE), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_r2c_2d = C_NULL_PTR end function fftw_plan_dft_r2c_2d

type(C_PTR) function fftw_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 real(C_DOUBLE), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_r2c_3d = C_NULL_PTR end function fftw_plan_dft_r2c_3d

type(C_PTR) function fftw_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist real(C_DOUBLE), dimension(), intent(out) :: out integer(C_INT), dimension(*), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_INT), value :: flags fftw_plan_many_dft_c2r = C_NULL_PTR end function fftw_plan_many_dft_c2r

type(C_PTR) function fftw_plan_dft_c2r(rank,n,in,out,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in real(C_DOUBLE), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_c2r = C_NULL_PTR end function fftw_plan_dft_c2r

type(C_PTR) function fftw_plan_dft_c2r_1d(n,in,out,flags) integer(C_INT), value :: n complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_c2r_1d = C_NULL_PTR end function fftw_plan_dft_c2r_1d

type(C_PTR) function fftw_plan_dft_c2r_2d(n0,n1,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_c2r_2d = C_NULL_PTR end function fftw_plan_dft_c2r_2d

type(C_PTR) function fftw_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_dft_c2r_3d = C_NULL_PTR end function fftw_plan_dft_c2r_3d

type(C_PTR) function fftw_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_guru_dft_r2c = C_NULL_PTR end function fftw_plan_guru_dft_r2c

type(C_PTR) function fftw_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_guru_dft_c2r = C_NULL_PTR end function fftw_plan_guru_dft_c2r

type(C_PTR) function fftw_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: ro real(C_DOUBLE), dimension(*), intent(out) :: io integer(C_INT), value :: flags fftw_plan_guru_split_dft_r2c = C_NULL_PTR end function fftw_plan_guru_split_dft_r2c

type(C_PTR) function fftw_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: ri real(C_DOUBLE), dimension(), intent(out) :: ii real(C_DOUBLE), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftw_plan_guru_split_dft_c2r = C_NULL_PTR end function fftw_plan_guru_split_dft_c2r

type(C_PTR) function fftw_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_guru64_dft_r2c = C_NULL_PTR end function fftw_plan_guru64_dft_r2c

type(C_PTR) function fftw_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_INT), value :: flags fftw_plan_guru64_dft_c2r = C_NULL_PTR end function fftw_plan_guru64_dft_c2r

type(C_PTR) function fftw_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: ro real(C_DOUBLE), dimension(*), intent(out) :: io integer(C_INT), value :: flags fftw_plan_guru64_split_dft_r2c = C_NULL_PTR end function fftw_plan_guru64_split_dft_r2c

type(C_PTR) function fftw_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: ri real(C_DOUBLE), dimension(), intent(out) :: ii real(C_DOUBLE), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftw_plan_guru64_split_dft_c2r = C_NULL_PTR end function fftw_plan_guru64_split_dft_c2r

subroutine fftw_execute_dft_r2c(p,in,out) type(C_PTR), value :: p real(C_DOUBLE), dimension(), intent(inout) :: in complex(C_DOUBLE_COMPLEX), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftw_execute_dft_r2c

subroutine fftw_execute_dft_c2r(p,in,out) type(C_PTR), value :: p complex(C_DOUBLE_COMPLEX), dimension(), intent(inout) :: in real(C_DOUBLE), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftw_execute_dft_c2r

subroutine fftw_execute_split_dft_r2c(p,in,ro,io) type(C_PTR), value :: p real(C_DOUBLE), dimension(), intent(inout) :: in real(C_DOUBLE), dimension(), intent(out) :: ro real(C_DOUBLE), dimension(*), intent(out) :: io

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftw_execute_split_dft_r2c

subroutine fftw_execute_split_dft_c2r(p,ri,ii,out) type(C_PTR), value :: p real(C_DOUBLE), dimension(), intent(inout) :: ri real(C_DOUBLE), dimension(), intent(inout) :: ii real(C_DOUBLE), dimension(*), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftw_execute_split_dft_c2r

type(C_PTR) function fftw_plan_r2r(rank,n,in,out,kind,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), dimension(), intent(in) :: kind integer(C_INT), value :: flags fftw_plan_r2r = C_NULL_PTR end function fftw_plan_r2r

type(C_PTR) function fftw_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), value :: kind0 integer(C_FFTW_R2R_KIND), value :: kind1 integer(C_INT), value :: flags fftw_plan_r2r_2d = C_NULL_PTR end function fftw_plan_r2r_2d

type(C_PTR) function fftw_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), value :: kind0 integer(C_FFTW_R2R_KIND), value :: kind1 integer(C_FFTW_R2R_KIND), value :: kind2 integer(C_INT), value :: flags fftw_plan_r2r_3d = C_NULL_PTR end function fftw_plan_r2r_3d

type(C_PTR) function fftw_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) integer(C_INT), value :: rank type(fftw_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind integer(C_INT), value :: flags fftw_plan_guru_r2r = C_NULL_PTR end function fftw_plan_guru_r2r

type(C_PTR) function fftw_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) integer(C_INT), value :: rank type(fftw_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftw_iodim64), dimension(), intent(in) :: howmany_dims real(C_DOUBLE), dimension(), intent(out) :: in real(C_DOUBLE), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind integer(C_INT), value :: flags fftw_plan_guru64_r2r = C_NULL_PTR end function fftw_plan_guru64_r2r

subroutine fftw_destroy_plan(p) type(C_PTR), value :: p end subroutine fftw_destroy_plan

subroutine fftw_forget_wisdom() end subroutine fftw_forget_wisdom

subroutine fftw_cleanup() end subroutine fftw_cleanup

subroutine fftw_set_timelimit(t) real(C_DOUBLE), value :: t end subroutine fftw_set_timelimit

subroutine fftw_plan_with_nthreads(nthreads) integer(C_INT), value :: nthreads end subroutine fftw_plan_with_nthreads

integer(C_INT) function fftw_init_threads() fftw_init_threads = -1_c_int end function fftw_init_threads

subroutine fftw_cleanup_threads() end subroutine fftw_cleanup_threads

integer(C_INT) function fftw_export_wisdom_to_filename(filename) character(C_CHAR), dimension(*), intent(in) :: filename fftw_export_wisdom_to_filename = -1_c_int end function fftw_export_wisdom_to_filename

subroutine fftw_export_wisdom_to_file(output_file) type(C_PTR), value :: output_file end subroutine fftw_export_wisdom_to_file

type(C_PTR) function fftw_export_wisdom_to_string() fftw_export_wisdom_to_string = C_NULL_PTR end function fftw_export_wisdom_to_string

subroutine fftw_export_wisdom(write_char,data) type(C_FUNPTR), value :: write_char type(C_PTR), value :: data end subroutine fftw_export_wisdom

integer(C_INT) function fftw_import_system_wisdom() fftw_import_system_wisdom = -1_c_int end function fftw_import_system_wisdom

integer(C_INT) function fftw_import_wisdom_from_filename(filename) character(C_CHAR), dimension(*), intent(in) :: filename fftw_import_wisdom_from_filename = -1_c_int end function fftw_import_wisdom_from_filename

integer(C_INT) function fftw_import_wisdom_from_file(input_file) type(C_PTR), value :: input_file fftw_import_wisdom_from_file = -1_c_int end function fftw_import_wisdom_from_file

integer(C_INT) function fftw_import_wisdom_from_string(input_string) character(C_CHAR), dimension(*), intent(in) :: input_string fftw_import_wisdom_from_string = -1_c_int end function fftw_import_wisdom_from_string

integer(C_INT) function fftw_import_wisdom(read_char,data) type(C_FUNPTR), value :: read_char type(C_PTR), value :: data fftw_import_wisdom = -1_c_int end function fftw_import_wisdom

subroutine fftw_fprint_plan(p,output_file) type(C_PTR), value :: p type(C_PTR), value :: output_file end subroutine fftw_fprint_plan

subroutine fftw_print_plan(p) type(C_PTR), value :: p end subroutine fftw_print_plan

type(C_PTR) function fftw_malloc(n) integer(C_SIZE_T), value :: n fftw_malloc = C_NULL_PTR end function fftw_malloc

type(C_PTR) function fftw_alloc_real(n) integer(C_SIZE_T), value :: n fftw_alloc_real = C_NULL_PTR end function fftw_alloc_real

type(C_PTR) function fftw_alloc_complex(n) integer(C_SIZE_T), value :: n fftw_alloc_complex = C_NULL_PTR end function fftw_alloc_complex

subroutine fftw_free(p) type(C_PTR), value :: p end subroutine fftw_free

subroutine fftw_flops(p,add,mul,fmas) type(C_PTR), value :: p real(C_DOUBLE), intent(out) :: add real(C_DOUBLE), intent(out) :: mul real(C_DOUBLE), intent(out) :: fmas end subroutine fftw_flops

real(C_DOUBLE) function fftw_estimate_cost(p) type(C_PTR), value :: p fftw_estimate_cost = 0.0_c_double end function fftw_estimate_cost

real(C_DOUBLE) function fftw_cost(p) type(C_PTR), value :: p fftw_cost = 0.0_c_double end function fftw_cost

type(C_PTR) function fftwf_plan_dft(rank,n,in,out,sign,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_dft = C_NULL_PTR end function fftwf_plan_dft

type(C_PTR) function fftwf_plan_dft_1d(n,in,out,sign,flags) integer(C_INT), value :: n complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_dft_1d = C_NULL_PTR end function fftwf_plan_dft_1d

type(C_PTR) function fftwf_plan_dft_2d(n0,n1,in,out,sign,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_dft_2d = C_NULL_PTR end function fftwf_plan_dft_2d

type(C_PTR) function fftwf_plan_dft_3d(n0,n1,n2,in,out,sign,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_dft_3d = C_NULL_PTR end function fftwf_plan_dft_3d

type(C_PTR) function fftwf_plan_many_dft(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,sign,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), dimension(*), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_many_dft = C_NULL_PTR end function fftwf_plan_many_dft

type(C_PTR) function fftwf_plan_guru_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_guru_dft = C_NULL_PTR end function fftwf_plan_guru_dft

type(C_PTR) function fftwf_plan_guru_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: ri real(C_FLOAT), dimension(), intent(out) :: ii real(C_FLOAT), dimension(), intent(out) :: ro real(C_FLOAT), dimension(), intent(out) :: io integer(C_INT), value :: flags fftwf_plan_guru_split_dft = C_NULL_PTR end function fftwf_plan_guru_split_dft

type(C_PTR) function fftwf_plan_guru64_dft(rank,dims,howmany_rank,howmany_dims,in,out,sign,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: sign integer(C_INT), value :: flags fftwf_plan_guru64_dft = C_NULL_PTR end function fftwf_plan_guru64_dft

type(C_PTR) function fftwf_plan_guru64_split_dft(rank,dims,howmany_rank,howmany_dims,ri,ii,ro,io,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: ri real(C_FLOAT), dimension(), intent(out) :: ii real(C_FLOAT), dimension(), intent(out) :: ro real(C_FLOAT), dimension(), intent(out) :: io integer(C_INT), value :: flags fftwf_plan_guru64_split_dft = C_NULL_PTR end function fftwf_plan_guru64_split_dft

subroutine fftwf_execute_dft(p,in,out) type(C_PTR), value :: p complex(C_FLOAT_COMPLEX), dimension(), intent(inout) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_dft

subroutine fftwf_execute_split_dft(p,ri,ii,ro,io) type(C_PTR), value :: p real(C_FLOAT), dimension(), intent(inout) :: ri real(C_FLOAT), dimension(), intent(inout) :: ii real(C_FLOAT), dimension(), intent(out) :: ro real(C_FLOAT), dimension(), intent(out) :: io

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_split_dft

type(C_PTR) function fftwf_plan_many_dft_r2c(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany real(C_FLOAT), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), dimension(*), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_INT), value :: flags fftwf_plan_many_dft_r2c = C_NULL_PTR end function fftwf_plan_many_dft_r2c

type(C_PTR) function fftwf_plan_dft_r2c(rank,n,in,out,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n real(C_FLOAT), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_r2c = C_NULL_PTR end function fftwf_plan_dft_r2c

type(C_PTR) function fftwf_plan_dft_r2c_1d(n,in,out,flags) integer(C_INT), value :: n real(C_FLOAT), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_r2c_1d = C_NULL_PTR end function fftwf_plan_dft_r2c_1d

type(C_PTR) function fftwf_plan_dft_r2c_2d(n0,n1,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 real(C_FLOAT), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_r2c_2d = C_NULL_PTR end function fftwf_plan_dft_r2c_2d

type(C_PTR) function fftwf_plan_dft_r2c_3d(n0,n1,n2,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 real(C_FLOAT), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_r2c_3d = C_NULL_PTR end function fftwf_plan_dft_r2c_3d

type(C_PTR) function fftwf_plan_many_dft_c2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), dimension(*), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_INT), value :: flags fftwf_plan_many_dft_c2r = C_NULL_PTR end function fftwf_plan_many_dft_c2r

type(C_PTR) function fftwf_plan_dft_c2r(rank,n,in,out,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in real(C_FLOAT), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_c2r = C_NULL_PTR end function fftwf_plan_dft_c2r

type(C_PTR) function fftwf_plan_dft_c2r_1d(n,in,out,flags) integer(C_INT), value :: n complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_c2r_1d = C_NULL_PTR end function fftwf_plan_dft_c2r_1d

type(C_PTR) function fftwf_plan_dft_c2r_2d(n0,n1,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_c2r_2d = C_NULL_PTR end function fftwf_plan_dft_c2r_2d

type(C_PTR) function fftwf_plan_dft_c2r_3d(n0,n1,n2,in,out,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_dft_c2r_3d = C_NULL_PTR end function fftwf_plan_dft_c2r_3d

type(C_PTR) function fftwf_plan_guru_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_guru_dft_r2c = C_NULL_PTR end function fftwf_plan_guru_dft_r2c

type(C_PTR) function fftwf_plan_guru_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_guru_dft_c2r = C_NULL_PTR end function fftwf_plan_guru_dft_c2r

type(C_PTR) function fftwf_plan_guru_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: ro real(C_FLOAT), dimension(*), intent(out) :: io integer(C_INT), value :: flags fftwf_plan_guru_split_dft_r2c = C_NULL_PTR end function fftwf_plan_guru_split_dft_r2c

type(C_PTR) function fftwf_plan_guru_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: ri real(C_FLOAT), dimension(), intent(out) :: ii real(C_FLOAT), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_guru_split_dft_c2r = C_NULL_PTR end function fftwf_plan_guru_split_dft_c2r

type(C_PTR) function fftwf_plan_guru64_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_guru64_dft_r2c = C_NULL_PTR end function fftwf_plan_guru64_dft_r2c

type(C_PTR) function fftwf_plan_guru64_dft_c2r(rank,dims,howmany_rank,howmany_dims,in,out,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_guru64_dft_c2r = C_NULL_PTR end function fftwf_plan_guru64_dft_c2r

type(C_PTR) function fftwf_plan_guru64_split_dft_r2c(rank,dims,howmany_rank,howmany_dims,in,ro,io,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: ro real(C_FLOAT), dimension(*), intent(out) :: io integer(C_INT), value :: flags fftwf_plan_guru64_split_dft_r2c = C_NULL_PTR end function fftwf_plan_guru64_split_dft_r2c

type(C_PTR) function fftwf_plan_guru64_split_dft_c2r(rank,dims,howmany_rank,howmany_dims,ri,ii,out,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: ri real(C_FLOAT), dimension(), intent(out) :: ii real(C_FLOAT), dimension(*), intent(out) :: out integer(C_INT), value :: flags fftwf_plan_guru64_split_dft_c2r = C_NULL_PTR end function fftwf_plan_guru64_split_dft_c2r

subroutine fftwf_execute_dft_r2c(p,in,out) type(C_PTR), value :: p real(C_FLOAT), dimension(), intent(inout) :: in complex(C_FLOAT_COMPLEX), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_dft_r2c

subroutine fftwf_execute_dft_c2r(p,in,out) type(C_PTR), value :: p complex(C_FLOAT_COMPLEX), dimension(), intent(inout) :: in real(C_FLOAT), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_dft_c2r

subroutine fftwf_execute_split_dft_r2c(p,in,ro,io) type(C_PTR), value :: p real(C_FLOAT), dimension(), intent(inout) :: in real(C_FLOAT), dimension(), intent(out) :: ro real(C_FLOAT), dimension(*), intent(out) :: io

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_split_dft_r2c

subroutine fftwf_execute_split_dft_c2r(p,ri,ii,out) type(C_PTR), value :: p real(C_FLOAT), dimension(), intent(inout) :: ri real(C_FLOAT), dimension(), intent(inout) :: ii real(C_FLOAT), dimension(*), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_split_dft_c2r

type(C_PTR) function fftwf_plan_many_r2r(rank,n,howmany,in,inembed,istride,idist,out,onembed,ostride,odist,kind,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n integer(C_INT), value :: howmany real(C_FLOAT), dimension(), intent(out) :: in integer(C_INT), dimension(), intent(in) :: inembed integer(C_INT), value :: istride integer(C_INT), value :: idist real(C_FLOAT), dimension(), intent(out) :: out integer(C_INT), dimension(), intent(in) :: onembed integer(C_INT), value :: ostride integer(C_INT), value :: odist integer(C_FFTW_R2R_KIND), dimension(), intent(in) :: kind integer(C_INT), value :: flags fftwf_plan_many_r2r = C_NULL_PTR end function fftwf_plan_many_r2r

type(C_PTR) function fftwf_plan_r2r(rank,n,in,out,kind,flags) integer(C_INT), value :: rank integer(C_INT), dimension(), intent(in) :: n real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), dimension(), intent(in) :: kind integer(C_INT), value :: flags fftwf_plan_r2r = C_NULL_PTR end function fftwf_plan_r2r

type(C_PTR) function fftwf_plan_r2r_1d(n,in,out,kind,flags) integer(C_INT), value :: n real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), value :: kind integer(C_INT), value :: flags fftwf_plan_r2r_1d = C_NULL_PTR end function fftwf_plan_r2r_1d

type(C_PTR) function fftwf_plan_r2r_2d(n0,n1,in,out,kind0,kind1,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), value :: kind0 integer(C_FFTW_R2R_KIND), value :: kind1 integer(C_INT), value :: flags fftwf_plan_r2r_2d = C_NULL_PTR end function fftwf_plan_r2r_2d

type(C_PTR) function fftwf_plan_r2r_3d(n0,n1,n2,in,out,kind0,kind1,kind2,flags) integer(C_INT), value :: n0 integer(C_INT), value :: n1 integer(C_INT), value :: n2 real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), value :: kind0 integer(C_FFTW_R2R_KIND), value :: kind1 integer(C_FFTW_R2R_KIND), value :: kind2 integer(C_INT), value :: flags fftwf_plan_r2r_3d = C_NULL_PTR end function fftwf_plan_r2r_3d

type(C_PTR) function fftwf_plan_guru_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) integer(C_INT), value :: rank type(fftwf_iodim), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind integer(C_INT), value :: flags fftwf_plan_guru_r2r = C_NULL_PTR end function fftwf_plan_guru_r2r

type(C_PTR) function fftwf_plan_guru64_r2r(rank,dims,howmany_rank,howmany_dims,in,out,kind,flags) integer(C_INT), value :: rank type(fftwf_iodim64), dimension(), intent(in) :: dims integer(C_INT), value :: howmany_rank type(fftwf_iodim64), dimension(), intent(in) :: howmany_dims real(C_FLOAT), dimension(), intent(out) :: in real(C_FLOAT), dimension(), intent(out) :: out integer(C_FFTW_R2R_KIND), dimension(*), intent(in) :: kind integer(C_INT), value :: flags fftwf_plan_guru64_r2r = C_NULL_PTR end function fftwf_plan_guru64_r2r

subroutine fftwf_execute_r2r(p,in,out) type(C_PTR), value :: p real(C_FLOAT), dimension(), intent(inout) :: in real(C_FLOAT), dimension(), intent(out) :: out

write(logUnit(1),*) 'ERROR: dummy fftw is not functional, stopping ... ' call tem_abort()

end subroutine fftwf_execute_r2r

subroutine fftwf_destroy_plan(p) type(C_PTR), value :: p end subroutine fftwf_destroy_plan

subroutine fftwf_forget_wisdom() end subroutine fftwf_forget_wisdom

subroutine fftwf_cleanup() end subroutine fftwf_cleanup

subroutine fftwf_set_timelimit(t) real(C_DOUBLE), value :: t end subroutine fftwf_set_timelimit

subroutine fftwf_plan_with_nthreads(nthreads) integer(C_INT), value :: nthreads end subroutine fftwf_plan_with_nthreads

integer(C_INT) function fftwf_init_threads() fftwf_init_threads = -1_c_int end function fftwf_init_threads

subroutine fftwf_cleanup_threads() end subroutine fftwf_cleanup_threads

integer(C_INT) function fftwf_export_wisdom_to_filename(filename) character(C_CHAR), dimension(*), intent(in) :: filename fftwf_export_wisdom_to_filename = -1_c_int end function fftwf_export_wisdom_to_filename

subroutine fftwf_export_wisdom_to_file(output_file) type(C_PTR), value :: output_file end subroutine fftwf_export_wisdom_to_file

type(C_PTR) function fftwf_export_wisdom_to_string() fftwf_export_wisdom_to_string = C_NULL_PTR end function fftwf_export_wisdom_to_string

subroutine fftwf_export_wisdom(write_char,data) type(C_FUNPTR), value :: write_char type(C_PTR), value :: data end subroutine fftwf_export_wisdom

integer(C_INT) function fftwf_import_system_wisdom() fftwf_import_system_wisdom = -1_c_int end function fftwf_import_system_wisdom

integer(C_INT) function fftwf_import_wisdom_from_filename(filename) character(C_CHAR), dimension(*), intent(in) :: filename fftwf_import_wisdom_from_filename = -1_c_int end function fftwf_import_wisdom_from_filename

integer(C_INT) function fftwf_import_wisdom_from_file(input_file) type(C_PTR), value :: input_file fftwf_import_wisdom_from_file = -1_c_int end function fftwf_import_wisdom_from_file

integer(C_INT) function fftwf_import_wisdom_from_string(input_string) character(C_CHAR), dimension(*), intent(in) :: input_string fftwf_import_wisdom_from_string = -1_c_int end function fftwf_import_wisdom_from_string

integer(C_INT) function fftwf_import_wisdom(read_char,data) type(C_FUNPTR), value :: read_char type(C_PTR), value :: data fftwf_import_wisdom = -1_c_int end function fftwf_import_wisdom

subroutine fftwf_fprint_plan(p,output_file) type(C_PTR), value :: p type(C_PTR), value :: output_file end subroutine fftwf_fprint_plan

subroutine fftwf_print_plan(p) type(C_PTR), value :: p end subroutine fftwf_print_plan

type(C_PTR) function fftwf_malloc(n) integer(C_SIZE_T), value :: n fftwf_malloc = C_NULL_PTR end function fftwf_malloc

type(C_PTR) function fftwf_alloc_real(n) integer(C_SIZE_T), value :: n fftwf_alloc_real = C_NULL_PTR end function fftwf_alloc_real

type(C_PTR) function fftwf_alloc_complex(n) integer(C_SIZE_T), value :: n fftwf_alloc_complex = C_NULL_PTR end function fftwf_alloc_complex

subroutine fftwf_free(p) type(C_PTR), value :: p end subroutine fftwf_free

subroutine fftwf_flops(p,add,mul,fmas) type(C_PTR), value :: p real(C_DOUBLE), intent(out) :: add real(C_DOUBLE), intent(out) :: mul real(C_DOUBLE), intent(out) :: fmas end subroutine fftwf_flops

real(C_DOUBLE) function fftwf_estimate_cost(p) type(C_PTR), value :: p fftwf_estimate_cost = 0.0_c_double end function fftwf_estimate_cost

real(C_DOUBLE) function fftwf_cost(p) type(C_PTR), value :: p fftwf_cost = 0.0_c_double end function fftwf_cost


Uses

  • module~~fftw_wrap~~UsesGraph module~fftw_wrap fftw_wrap iso_c_binding iso_c_binding module~fftw_wrap->iso_c_binding tem_aux_module tem_aux_module module~fftw_wrap->tem_aux_module tem_logging_module tem_logging_module module~fftw_wrap->tem_logging_module

Used by

  • module~~fftw_wrap~~UsedByGraph module~fftw_wrap fftw_wrap module~ply_legfpt_2d_module ply_legFpt_2D_module module~ply_legfpt_2d_module->module~fftw_wrap module~ply_legfpt_module ply_legFpt_module module~ply_legfpt_2d_module->module~ply_legfpt_module module~ply_legfpt_3d_module ply_legFpt_3D_module module~ply_legfpt_3d_module->module~fftw_wrap module~ply_legfpt_3d_module->module~ply_legfpt_module module~ply_legfpt_module->module~fftw_wrap module~ply_polybaseexc_module ply_polyBaseExc_module module~ply_legfpt_module->module~ply_polybaseexc_module module~ply_nodes_module ply_nodes_module module~ply_nodes_module->module~fftw_wrap module~ply_polybaseexc_module->module~fftw_wrap module~ply_prj_header_module ply_prj_header_module module~ply_prj_header_module->module~fftw_wrap module~atl_stabilize_module atl_stabilize_module module~atl_stabilize_module->module~ply_polybaseexc_module module~ply_dynarray_project_module ply_dynarray_project_module module~ply_dynarray_project_module->module~ply_prj_header_module module~ply_poly_project_module ply_poly_project_module module~ply_poly_project_module->module~ply_legfpt_2d_module module~ply_poly_project_module->module~ply_legfpt_3d_module module~ply_poly_project_module->module~ply_legfpt_module module~ply_poly_project_module->module~ply_nodes_module module~ply_poly_project_module->module~ply_prj_header_module program~ply_fpt_ifpt_2d_multivar_lobattonodes_test ply_fpt_ifpt_2D_multiVar_lobattoNodes_test program~ply_fpt_ifpt_2d_multivar_lobattonodes_test->module~ply_legfpt_2d_module program~ply_fpt_ifpt_2d_multivar_lobattonodes_test->module~ply_legfpt_module program~ply_fpt_ifpt_2d_multivar_test ply_fpt_ifpt_2D_multiVar_test program~ply_fpt_ifpt_2d_multivar_test->module~ply_legfpt_2d_module program~ply_fpt_ifpt_2d_multivar_test->module~ply_legfpt_module program~ply_fpt_ifpt_2d_singvar_lobattonodes_test ply_fpt_ifpt_2D_singVar_lobattoNodes_test program~ply_fpt_ifpt_2d_singvar_lobattonodes_test->module~ply_legfpt_2d_module program~ply_fpt_ifpt_2d_singvar_lobattonodes_test->module~ply_legfpt_module program~ply_fpt_ifpt_2d_singvar_test ply_fpt_ifpt_2D_singVar_test program~ply_fpt_ifpt_2d_singvar_test->module~ply_legfpt_2d_module program~ply_fpt_ifpt_2d_singvar_test->module~ply_legfpt_module program~ply_fpt_ifpt_3d_multivar_lobattonodes_test ply_fpt_ifpt_3D_multiVar_lobattoNodes_test program~ply_fpt_ifpt_3d_multivar_lobattonodes_test->module~ply_legfpt_3d_module program~ply_fpt_ifpt_3d_multivar_lobattonodes_test->module~ply_legfpt_module program~ply_fpt_ifpt_3d_multivar_test ply_fpt_ifpt_3D_multiVar_test program~ply_fpt_ifpt_3d_multivar_test->module~ply_legfpt_3d_module program~ply_fpt_ifpt_3d_multivar_test->module~ply_legfpt_module program~ply_fpt_ifpt_3d_singvar_lobattonodes_test ply_fpt_ifpt_3D_singVar_lobattoNodes_test program~ply_fpt_ifpt_3d_singvar_lobattonodes_test->module~ply_legfpt_3d_module program~ply_fpt_ifpt_3d_singvar_lobattonodes_test->module~ply_legfpt_module program~ply_fpt_ifpt_3d_singvar_test ply_fpt_ifpt_3D_singVar_test program~ply_fpt_ifpt_3d_singvar_test->module~ply_legfpt_3d_module program~ply_fpt_ifpt_3d_singvar_test->module~ply_legfpt_module program~ply_fpt_ifpt_test ply_fpt_ifpt_test program~ply_fpt_ifpt_test->module~ply_legfpt_module program~ply_fpt_lobattonodes_test ply_fpt_lobattoNodes_test program~ply_fpt_lobattonodes_test->module~ply_legfpt_module program~ply_fpt_test ply_fpt_test program~ply_fpt_test->module~ply_legfpt_module program~ply_ifpt_lobattonodes_test ply_ifpt_lobattoNodes_test program~ply_ifpt_lobattonodes_test->module~ply_legfpt_module program~ply_ifpt_test ply_ifpt_test program~ply_ifpt_test->module~ply_legfpt_module program~ply_polybaseexc_test ply_polyBaseExc_test program~ply_polybaseexc_test->module~ply_polybaseexc_module program~ply_project_2d_fpt_lobattopoints_test ply_project_2d_fpt_lobattoPoints_test program~ply_project_2d_fpt_lobattopoints_test->module~ply_prj_header_module program~ply_project_2d_fpt_test ply_project_2d_fpt_test program~ply_project_2d_fpt_test->module~ply_prj_header_module program~ply_project_fpt_lobattopoints_test ply_project_fpt_lobattoPoints_test program~ply_project_fpt_lobattopoints_test->module~ply_prj_header_module program~ply_project_fpt_test ply_project_fpt_test program~ply_project_fpt_test->module~ply_prj_header_module program~test_fxtd_n2m2n test_fxtd_n2m2n program~test_fxtd_n2m2n->module~ply_prj_header_module

Variables

Type Visibility Attributes Name Initial
logical, public, parameter :: fftw_available = .false.
integer, public, parameter :: C_FFTW_R2R_KIND = C_INT32_T
integer(kind=C_INT), public, parameter :: FFTW_R2HC = 0
integer(kind=C_INT), public, parameter :: FFTW_HC2R = 1
integer(kind=C_INT), public, parameter :: FFTW_DHT = 2
integer(kind=C_INT), public, parameter :: FFTW_REDFT00 = 3
integer(kind=C_INT), public, parameter :: FFTW_REDFT01 = 4
integer(kind=C_INT), public, parameter :: FFTW_REDFT10 = 5
integer(kind=C_INT), public, parameter :: FFTW_REDFT11 = 6
integer(kind=C_INT), public, parameter :: FFTW_RODFT00 = 7
integer(kind=C_INT), public, parameter :: FFTW_RODFT01 = 8
integer(kind=C_INT), public, parameter :: FFTW_RODFT10 = 9
integer(kind=C_INT), public, parameter :: FFTW_RODFT11 = 10
integer(kind=C_INT), public, parameter :: FFTW_FORWARD = -1
integer(kind=C_INT), public, parameter :: FFTW_BACKWARD = +1
integer(kind=C_INT), public, parameter :: FFTW_MEASURE = 0
integer(kind=C_INT), public, parameter :: FFTW_DESTROY_INPUT = 1
integer(kind=C_INT), public, parameter :: FFTW_UNALIGNED = 2
integer(kind=C_INT), public, parameter :: FFTW_CONSERVE_MEMORY = 4
integer(kind=C_INT), public, parameter :: FFTW_EXHAUSTIVE = 8
integer(kind=C_INT), public, parameter :: FFTW_PRESERVE_INPUT = 16
integer(kind=C_INT), public, parameter :: FFTW_PATIENT = 32
integer(kind=C_INT), public, parameter :: FFTW_ESTIMATE = 64
integer(kind=C_INT), public, parameter :: FFTW_WISDOM_ONLY = 2097152
integer(kind=C_INT), public, parameter :: FFTW_ESTIMATE_PATIENT = 128
integer(kind=C_INT), public, parameter :: FFTW_BELIEVE_PCOST = 256
integer(kind=C_INT), public, parameter :: FFTW_NO_DFT_R2HC = 512
integer(kind=C_INT), public, parameter :: FFTW_NO_NONTHREADED = 1024
integer(kind=C_INT), public, parameter :: FFTW_NO_BUFFERING = 2048
integer(kind=C_INT), public, parameter :: FFTW_NO_INDIRECT_OP = 4096
integer(kind=C_INT), public, parameter :: FFTW_ALLOW_LARGE_GENERIC = 8192
integer(kind=C_INT), public, parameter :: FFTW_NO_RANK_SPLITS = 16384
integer(kind=C_INT), public, parameter :: FFTW_NO_VRANK_SPLITS = 32768
integer(kind=C_INT), public, parameter :: FFTW_NO_VRECURSE = 65536
integer(kind=C_INT), public, parameter :: FFTW_NO_SIMD = 131072
integer(kind=C_INT), public, parameter :: FFTW_NO_SLOW = 262144
integer(kind=C_INT), public, parameter :: FFTW_NO_FIXED_RADIX_LARGE_N = 524288
integer(kind=C_INT), public, parameter :: FFTW_ALLOW_PRUNING = 1048576

Derived Types

type, public, bind(C) ::  fftw_iodim

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT), public :: n
integer(kind=C_INT), public :: is
integer(kind=C_INT), public :: os

type, public, bind(C) ::  fftw_iodim64

Components

Type Visibility Attributes Name Initial
integer(kind=C_INTPTR_T), public :: n
integer(kind=C_INTPTR_T), public :: is
integer(kind=C_INTPTR_T), public :: os

type, public, bind(C) ::  fftwf_iodim

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT), public :: n
integer(kind=C_INT), public :: is
integer(kind=C_INT), public :: os

type, public, bind(C) ::  fftwf_iodim64

Components

Type Visibility Attributes Name Initial
integer(kind=C_INTPTR_T), public :: n
integer(kind=C_INTPTR_T), public :: is
integer(kind=C_INTPTR_T), public :: os

Functions

public function fftw_plan_many_r2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, kind, flags)

Arguments

Type IntentOptional Attributes Name
integer(kind=C_INT), value :: rank
integer(kind=C_INT), intent(in), dimension(*) :: n
integer(kind=C_INT), value :: howmany
real(kind=C_DOUBLE), intent(out), dimension(*) :: in
integer(kind=C_INT), intent(in), dimension(*) :: inembed
integer(kind=C_INT), value :: istride
integer(kind=C_INT), value :: idist
real(kind=C_DOUBLE), intent(out), dimension(*) :: out
integer(kind=C_INT), intent(in), dimension(*) :: onembed
integer(kind=C_INT), value :: ostride
integer(kind=C_INT), value :: odist
integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
integer(kind=C_INT), value :: flags

Return Value type(c_ptr)

public function fftw_plan_r2r_1d(n, in, out, kind, flags)

Arguments

Type IntentOptional Attributes Name
integer(kind=C_INT), value :: n
real(kind=C_DOUBLE), intent(out), dimension(*) :: in
real(kind=C_DOUBLE), intent(out), dimension(*) :: out
integer(kind=C_FFTW_R2R_KIND), value :: kind
integer(kind=C_INT), value :: flags

dummy code to use all arguments

Return Value type(c_ptr)


Subroutines

public subroutine fftw_execute_r2r(p, in, out)

Arguments

Type IntentOptional Attributes Name
type(C_PTR), value :: p
real(kind=C_DOUBLE), intent(inout), dimension(*) :: in
real(kind=C_DOUBLE), intent(out), dimension(*) :: out