fftw3 Module

A fortran api to FFTW3

  • FFT distributed on multiple threads
  • multiple FFT simultaneously computed.

Uses

  • module~~fftw3~~UsesGraph module~fftw3 fftw3 iso_c_binding iso_c_binding module~fftw3->iso_c_binding module~data_arch data_arch module~fftw3->module~data_arch iso_fortran_env iso_fortran_env module~data_arch->iso_fortran_env

Used by

  • module~~fftw3~~UsedByGraph module~fftw3 fftw3 program~test_fftw3 test_fftw3 program~test_fftw3->module~fftw3

Variables

Type Visibility Attributes Name Initial
integer(kind=I4), public, parameter :: BACKWARD = -1

just as suggested, it means backward transformation required

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

Sizes currently allocated

integer(kind=I4), public, parameter :: FORWARD = +1

just as suggested, it means forward transformation required

logical(kind=I4), public :: MULTI_FFTW_ALLOCATED = .false.

the fftw arrays are allocated and the plans are defined

integer(kind=I4), public :: NB_THREADS_FFT = 4
real(kind=R8), public, parameter :: PAD_FFT = 1.50_R8

dimension multiplier for 0-padding

logical(kind=I4), public :: SINGL_FFTW_ALLOCATED = .false.

the fftw arrays are allocated and the plans are defined

complex(kind=C_DOUBLE_COMPLEX), private, dimension(:,:), pointer :: cmp_b_i

memory address of the input array for a BACKWARD transformation

complex(kind=C_DOUBLE_COMPLEX), private, dimension(:,:), pointer :: cmp_b_o

memory address of the output array for a BACKWARD transformation

complex(kind=C_DOUBLE_COMPLEX), private, dimension(:,:), pointer :: cmp_f_i

memory address of the input array for a FORWARD transformation

complex(kind=C_DOUBLE_COMPLEX), private, dimension(:,:), pointer :: cmp_f_o

memory address of the output array for a FORWARD transformation

type(C_PTR), private :: p_b_i

memory address for a plan BACKWARD in input

type(C_PTR), private :: p_b_o

memory address for a plan BACKWARD in output

type(C_PTR), private :: p_f_i

memory address for a plan FORWARD in input

type(C_PTR), private :: p_f_o

memory address for a plan FORWARD in output

type(C_PTR), private :: plan_b

plan BACKWARD

type(C_PTR), private :: plan_f

plan FORWARD

real(kind=C_DOUBLE), private, dimension(:,:), pointer :: rea_b_o

memory address of the output array for a BACKWARD transformation

real(kind=C_DOUBLE), private, dimension(:,:), pointer :: rea_f_i

memory address of the input array for a FORWARD transformation

type(tab_fftw), private, dimension(:), allocatable :: tab_cmp_b_i

array of memory addresses of the input arrays for a BACKWARD transformation

type(tab_fftw), private, dimension(:), allocatable :: tab_cmp_b_o

array of memory addresses of the output arrays for a BACKWARD transformation

type(tab_fftw), private, dimension(:), allocatable :: tab_cmp_f_i

array of memory addresses of the input arrays for a FORWARD transformation

type(tab_fftw), private, dimension(:), allocatable :: tab_cmp_f_o

array of memory addresses of the output arrays for a FORWARD transformation

type(C_PTR), private, dimension(:), allocatable :: tab_p_b_i

array of memory addresses for a plan BACKWARD in input

type(C_PTR), private, dimension(:), allocatable :: tab_p_b_o

array of memory addresses for a plan BACKWARD in output

type(C_PTR), private, dimension(:), allocatable :: tab_p_f_i

array of memory addresses for a plan FORWARD in input

type(C_PTR), private, dimension(:), allocatable :: tab_p_f_o

array of memory addresses for a plan FORWARD in output

type(C_PTR), private, dimension(:), allocatable :: tab_plan_b

plan BACKWARD

type(C_PTR), private, dimension(:), allocatable :: tab_plan_f

plan FORWARD

type(tab_fftw_real), private, dimension(:), allocatable :: tab_rea_b_i

array of memory addresses of the input arrays for a BACKWARD transformation

type(tab_fftw_real), private, dimension(:), allocatable :: tab_rea_b_o

array of memory addresses of the output arrays for a BACKWARD transformation

type(tab_fftw_real), private, dimension(:), allocatable :: tab_rea_f_i

array of memory addresses of the input arrays for a FORWARD transformation

type(tab_fftw_real), private, dimension(:), allocatable :: tab_rea_f_o

array of memory addresses of the output arrays for a FORWARD transformation


Interfaces

interface

  • private function fftw_alignment_of(p) bind(C, name='fftw_alignment_of')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_DOUBLE), intent(out), dimension(*) :: p

    Return Value integer(kind=c_int)

interface

  • private function fftw_alloc_complex(n) bind(C, name='fftw_alloc_complex')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • private function fftw_alloc_real(n) bind(C, name='fftw_alloc_real')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • private subroutine fftw_cleanup() bind(C, name='fftw_cleanup')

    Arguments

    None

interface

  • private subroutine fftw_cleanup_threads() bind(C, name='fftw_cleanup_threads')

    Arguments

    None

interface

  • private function fftw_cost(p) bind(C, name='fftw_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • private subroutine fftw_destroy_plan(p) bind(C, name='fftw_destroy_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • private function fftw_estimate_cost(p) bind(C, name='fftw_estimate_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • private subroutine fftw_execute_dft(p, in, out) bind(C, name='fftw_execute_dft')

    Arguments

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

interface

  • private subroutine fftw_execute_dft_c2r(p, in, out) bind(C, name='fftw_execute_dft_c2r')

    Arguments

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

interface

  • private subroutine fftw_execute_dft_r2c(p, in, out) bind(C, name='fftw_execute_dft_r2c')

    Arguments

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

interface

  • private subroutine fftw_execute_r2r(p, in, out) bind(C, name='fftw_execute_r2r')

    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

interface

  • private subroutine fftw_execute_split_dft(p, ri, ii, ro, io) bind(C, name='fftw_execute_split_dft')

    Arguments

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

interface

  • private subroutine fftw_execute_split_dft_c2r(p, ri, ii, out) bind(C, name='fftw_execute_split_dft_c2r')

    Arguments

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

interface

  • private subroutine fftw_execute_split_dft_r2c(p, in, ro, io) bind(C, name='fftw_execute_split_dft_r2c')

    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(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io

interface

  • private subroutine fftw_export_wisdom(write_char, data) bind(C, name='fftw_export_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: write_char
    type(C_PTR), value :: data

interface

  • private subroutine fftw_export_wisdom_to_file(output_file) bind(C, name='fftw_export_wisdom_to_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: output_file

interface

  • private function fftw_export_wisdom_to_filename(filename) bind(C, name='fftw_export_wisdom_to_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • private function fftw_export_wisdom_to_string() bind(C, name='fftw_export_wisdom_to_string')

    Arguments

    None

    Return Value type(c_ptr)

interface

  • private subroutine fftw_flops(p, add, mul, fmas) bind(C, name='fftw_flops')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(out) :: add
    real(kind=C_DOUBLE), intent(out) :: mul
    real(kind=C_DOUBLE), intent(out) :: fmas

interface

  • private subroutine fftw_forget_wisdom() bind(C, name='fftw_forget_wisdom')

    Arguments

    None

interface

  • private subroutine fftw_fprint_plan(p, output_file) bind(C, name='fftw_fprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    type(C_PTR), value :: output_file

interface

  • private subroutine fftw_free(p) bind(C, name='fftw_free')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • private function fftw_import_system_wisdom() bind(C, name='fftw_import_system_wisdom')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • private function fftw_import_wisdom(read_char, data) bind(C, name='fftw_import_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: read_char
    type(C_PTR), value :: data

    Return Value integer(kind=c_int)

interface

  • private function fftw_import_wisdom_from_file(input_file) bind(C, name='fftw_import_wisdom_from_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: input_file

    Return Value integer(kind=c_int)

interface

  • private function fftw_import_wisdom_from_filename(filename) bind(C, name='fftw_import_wisdom_from_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • private function fftw_import_wisdom_from_string(input_string) bind(C, name='fftw_import_wisdom_from_string')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: input_string

    Return Value integer(kind=c_int)

interface

  • private function fftw_init_threads() bind(C, name='fftw_init_threads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • private subroutine fftw_make_planner_thread_safe() bind(C, name='fftw_make_planner_thread_safe')

    Arguments

    None

interface

  • private function fftw_malloc(n) bind(C, name='fftw_malloc')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft(rank, n, in, out, sign, flags) bind(C, name='fftw_plan_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_1d(n, in, out, sign, flags) bind(C, name='fftw_plan_dft_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_2d(n0, n1, in, out, sign, flags) bind(C, name='fftw_plan_dft_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_3d(n0, n1, n2, in, out, sign, flags) bind(C, name='fftw_plan_dft_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_c2r(rank, n, in, out, flags) bind(C, name='fftw_plan_dft_c2r')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_c2r_1d(n, in, out, flags) bind(C, name='fftw_plan_dft_c2r_1d')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_c2r_2d(n0, n1, in, out, flags) bind(C, name='fftw_plan_dft_c2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_c2r_3d(n0, n1, n2, in, out, flags) bind(C, name='fftw_plan_dft_c2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_r2c(rank, n, in, out, flags) bind(C, name='fftw_plan_dft_r2c')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_r2c_1d(n, in, out, flags) bind(C, name='fftw_plan_dft_r2c_1d')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_r2c_2d(n0, n1, in, out, flags) bind(C, name='fftw_plan_dft_r2c_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_dft_r2c_3d(n0, n1, n2, in, out, flags) bind(C, name='fftw_plan_dft_r2c_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftw_plan_guru64_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru64_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru64_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftw_plan_guru64_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftw_plan_guru64_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftw_plan_guru64_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru64_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftw_plan_guru64_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftw_plan_guru_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftw_plan_guru_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftw_plan_guru_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftw_plan_guru_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftw_plan_guru_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ri
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ii
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_guru_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftw_plan_guru_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftw_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftw_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: ro
    real(kind=C_DOUBLE), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_many_dft(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, sign, flags) bind(C, name='fftw_plan_many_dft')

    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
    complex(kind=C_DOUBLE_COMPLEX), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_DOUBLE_COMPLEX), 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_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_many_dft_c2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftw_plan_many_dft_c2r')

    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
    complex(kind=C_DOUBLE_COMPLEX), 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_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_many_dft_r2c(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftw_plan_many_dft_r2c')

    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
    complex(kind=C_DOUBLE_COMPLEX), 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_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftw_plan_many_r2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, kind, flags) bind(C, name='fftw_plan_many_r2r')

    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)

interface

  • private function fftw_plan_r2r(rank, n, in, out, kind, flags) bind(C, name='fftw_plan_r2r')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_r2r_1d(n, in, out, kind, flags) bind(C, name='fftw_plan_r2r_1d')

    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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_r2r_2d(n0, n1, in, out, kind0, kind1, flags) bind(C, name='fftw_plan_r2r_2d')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftw_plan_r2r_3d(n0, n1, n2, in, out, kind0, kind1, kind2, flags) bind(C, name='fftw_plan_r2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_DOUBLE), intent(out), dimension(*) :: in
    real(kind=C_DOUBLE), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_FFTW_R2R_KIND), value :: kind2
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • public subroutine fftw_plan_with_nthreads(nthreads) bind(C, name='fftw_plan_with_nthreads')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: nthreads

interface

  • private function fftw_planner_nthreads() bind(C, name='fftw_planner_nthreads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • private subroutine fftw_print_plan(p) bind(C, name='fftw_print_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • private subroutine fftw_set_timelimit(t) bind(C, name='fftw_set_timelimit')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_DOUBLE), value :: t

interface

  • private function fftw_sprint_plan(p) bind(C, name='fftw_sprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value type(c_ptr)

interface

  • private function fftwf_alignment_of(p) bind(C, name='fftwf_alignment_of')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_FLOAT), intent(out), dimension(*) :: p

    Return Value integer(kind=c_int)

interface

  • private function fftwf_alloc_complex(n) bind(C, name='fftwf_alloc_complex')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • private function fftwf_alloc_real(n) bind(C, name='fftwf_alloc_real')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • private subroutine fftwf_cleanup() bind(C, name='fftwf_cleanup')

    Arguments

    None

interface

  • private subroutine fftwf_cleanup_threads() bind(C, name='fftwf_cleanup_threads')

    Arguments

    None

interface

  • private function fftwf_cost(p) bind(C, name='fftwf_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • private subroutine fftwf_destroy_plan(p) bind(C, name='fftwf_destroy_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • private function fftwf_estimate_cost(p) bind(C, name='fftwf_estimate_cost')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value real(kind=c_double)

interface

  • private subroutine fftwf_execute_dft(p, in, out) bind(C, name='fftwf_execute_dft')

    Arguments

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

interface

  • private subroutine fftwf_execute_dft_c2r(p, in, out) bind(C, name='fftwf_execute_dft_c2r')

    Arguments

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

interface

  • private subroutine fftwf_execute_dft_r2c(p, in, out) bind(C, name='fftwf_execute_dft_r2c')

    Arguments

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

interface

  • private subroutine fftwf_execute_r2r(p, in, out) bind(C, name='fftwf_execute_r2r')

    Arguments

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

interface

  • private subroutine fftwf_execute_split_dft(p, ri, ii, ro, io) bind(C, name='fftwf_execute_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_FLOAT), intent(inout), dimension(*) :: ri
    real(kind=C_FLOAT), intent(inout), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io

interface

  • private subroutine fftwf_execute_split_dft_c2r(p, ri, ii, out) bind(C, name='fftwf_execute_split_dft_c2r')

    Arguments

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

interface

  • private subroutine fftwf_execute_split_dft_r2c(p, in, ro, io) bind(C, name='fftwf_execute_split_dft_r2c')

    Arguments

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

interface

  • private subroutine fftwf_export_wisdom(write_char, data) bind(C, name='fftwf_export_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: write_char
    type(C_PTR), value :: data

interface

  • private subroutine fftwf_export_wisdom_to_file(output_file) bind(C, name='fftwf_export_wisdom_to_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: output_file

interface

  • private function fftwf_export_wisdom_to_filename(filename) bind(C, name='fftwf_export_wisdom_to_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • private function fftwf_export_wisdom_to_string() bind(C, name='fftwf_export_wisdom_to_string')

    Arguments

    None

    Return Value type(c_ptr)

interface

  • private subroutine fftwf_flops(p, add, mul, fmas) bind(C, name='fftwf_flops')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    real(kind=C_DOUBLE), intent(out) :: add
    real(kind=C_DOUBLE), intent(out) :: mul
    real(kind=C_DOUBLE), intent(out) :: fmas

interface

  • private subroutine fftwf_forget_wisdom() bind(C, name='fftwf_forget_wisdom')

    Arguments

    None

interface

  • private subroutine fftwf_fprint_plan(p, output_file) bind(C, name='fftwf_fprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p
    type(C_PTR), value :: output_file

interface

  • private subroutine fftwf_free(p) bind(C, name='fftwf_free')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • private function fftwf_import_system_wisdom() bind(C, name='fftwf_import_system_wisdom')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • private function fftwf_import_wisdom(read_char, data) bind(C, name='fftwf_import_wisdom')

    Arguments

    Type IntentOptional Attributes Name
    type(C_FUNPTR), value :: read_char
    type(C_PTR), value :: data

    Return Value integer(kind=c_int)

interface

  • private function fftwf_import_wisdom_from_file(input_file) bind(C, name='fftwf_import_wisdom_from_file')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: input_file

    Return Value integer(kind=c_int)

interface

  • private function fftwf_import_wisdom_from_filename(filename) bind(C, name='fftwf_import_wisdom_from_filename')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: filename

    Return Value integer(kind=c_int)

interface

  • private function fftwf_import_wisdom_from_string(input_string) bind(C, name='fftwf_import_wisdom_from_string')

    Arguments

    Type IntentOptional Attributes Name
    character(len=C_CHAR), intent(in), dimension(*) :: input_string

    Return Value integer(kind=c_int)

interface

  • private function fftwf_init_threads() bind(C, name='fftwf_init_threads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • private subroutine fftwf_make_planner_thread_safe() bind(C, name='fftwf_make_planner_thread_safe')

    Arguments

    None

interface

  • private function fftwf_malloc(n) bind(C, name='fftwf_malloc')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_SIZE_T), value :: n

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft(rank, n, in, out, sign, flags) bind(C, name='fftwf_plan_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_1d(n, in, out, sign, flags) bind(C, name='fftwf_plan_dft_1d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_2d(n0, n1, in, out, sign, flags) bind(C, name='fftwf_plan_dft_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_3d(n0, n1, n2, in, out, sign, flags) bind(C, name='fftwf_plan_dft_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_c2r(rank, n, in, out, flags) bind(C, name='fftwf_plan_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_c2r_1d(n, in, out, flags) bind(C, name='fftwf_plan_dft_c2r_1d')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_c2r_2d(n0, n1, in, out, flags) bind(C, name='fftwf_plan_dft_c2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_c2r_3d(n0, n1, n2, in, out, flags) bind(C, name='fftwf_plan_dft_c2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_r2c(rank, n, in, out, flags) bind(C, name='fftwf_plan_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    integer(kind=C_INT), intent(in), dimension(*) :: n
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_r2c_1d(n, in, out, flags) bind(C, name='fftwf_plan_dft_r2c_1d')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_r2c_2d(n0, n1, in, out, flags) bind(C, name='fftwf_plan_dft_r2c_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_dft_r2c_3d(n0, n1, n2, in, out, flags) bind(C, name='fftwf_plan_dft_r2c_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftwf_plan_guru64_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru64_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru64_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftwf_plan_guru64_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftwf_plan_guru64_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftwf_plan_guru64_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru64_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftwf_plan_guru64_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim64), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim64), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_dft(rank, dims, howmany_rank, howmany_dims, in, out, sign, flags) bind(C, name='fftwf_plan_guru_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_dft_c2r(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, out, flags) bind(C, name='fftwf_plan_guru_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_r2r(rank, dims, howmany_rank, howmany_dims, in, out, kind, flags) bind(C, name='fftwf_plan_guru_r2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), intent(in), dimension(*) :: kind
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_split_dft(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags) bind(C, name='fftwf_plan_guru_split_dft')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_split_dft_c2r(rank, dims, howmany_rank, howmany_dims, ri, ii, out, flags) bind(C, name='fftwf_plan_guru_split_dft_c2r')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: ri
    real(kind=C_FLOAT), intent(out), dimension(*) :: ii
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_guru_split_dft_r2c(rank, dims, howmany_rank, howmany_dims, in, ro, io, flags) bind(C, name='fftwf_plan_guru_split_dft_r2c')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: rank
    type(fftwf_iodim), intent(in), dimension(*) :: dims
    integer(kind=C_INT), value :: howmany_rank
    type(fftwf_iodim), intent(in), dimension(*) :: howmany_dims
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: ro
    real(kind=C_FLOAT), intent(out), dimension(*) :: io
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_many_dft(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, sign, flags) bind(C, name='fftwf_plan_many_dft')

    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
    complex(kind=C_FLOAT_COMPLEX), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_FLOAT_COMPLEX), 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_INT), value :: sign
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_many_dft_c2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftwf_plan_many_dft_c2r')

    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
    complex(kind=C_FLOAT_COMPLEX), 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_FLOAT), 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_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_many_dft_r2c(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, flags) bind(C, name='fftwf_plan_many_dft_r2c')

    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_FLOAT), intent(out), dimension(*) :: in
    integer(kind=C_INT), intent(in), dimension(*) :: inembed
    integer(kind=C_INT), value :: istride
    integer(kind=C_INT), value :: idist
    complex(kind=C_FLOAT_COMPLEX), 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_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_many_r2r(rank, n, howmany, in, inembed, istride, idist, out, onembed, ostride, odist, kind, flags) bind(C, name='fftwf_plan_many_r2r')

    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_FLOAT), 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_FLOAT), 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)

interface

  • private function fftwf_plan_r2r(rank, n, in, out, kind, flags) bind(C, name='fftwf_plan_r2r')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_r2r_1d(n, in, out, kind, flags) bind(C, name='fftwf_plan_r2r_1d')

    Arguments

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

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_r2r_2d(n0, n1, in, out, kind0, kind1, flags) bind(C, name='fftwf_plan_r2r_2d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private function fftwf_plan_r2r_3d(n0, n1, n2, in, out, kind0, kind1, kind2, flags) bind(C, name='fftwf_plan_r2r_3d')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: n0
    integer(kind=C_INT), value :: n1
    integer(kind=C_INT), value :: n2
    real(kind=C_FLOAT), intent(out), dimension(*) :: in
    real(kind=C_FLOAT), intent(out), dimension(*) :: out
    integer(kind=C_FFTW_R2R_KIND), value :: kind0
    integer(kind=C_FFTW_R2R_KIND), value :: kind1
    integer(kind=C_FFTW_R2R_KIND), value :: kind2
    integer(kind=C_INT), value :: flags

    Return Value type(c_ptr)

interface

  • private subroutine fftwf_plan_with_nthreads(nthreads) bind(C, name='fftwf_plan_with_nthreads')

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=C_INT), value :: nthreads

interface

  • private function fftwf_planner_nthreads() bind(C, name='fftwf_planner_nthreads')

    Arguments

    None

    Return Value integer(kind=c_int)

interface

  • private subroutine fftwf_print_plan(p) bind(C, name='fftwf_print_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

interface

  • private subroutine fftwf_set_timelimit(t) bind(C, name='fftwf_set_timelimit')

    Arguments

    Type IntentOptional Attributes Name
    real(kind=C_DOUBLE), value :: t

interface

  • private function fftwf_sprint_plan(p) bind(C, name='fftwf_sprint_plan')

    Arguments

    Type IntentOptional Attributes Name
    type(C_PTR), value :: p

    Return Value type(c_ptr)


Derived Types

type, private, bind(C) ::  fftw_iodim

Components

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

type, private, bind(C) ::  fftw_iodim64

Components

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

type, private, bind(C) ::  fftwf_iodim

Components

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

type, private, bind(C) ::  fftwf_iodim64

Components

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

type, private ::  tab_fftw

Because FFTW3 is built so that it works on the same memory zone, for concurrent executions, a zone per thread is created.

Read more…

Components

Type Visibility Attributes Name Initial
complex(kind=C_DOUBLE_COMPLEX), public, dimension(:,:), pointer :: tab

type, private ::  tab_fftw_real

Because FFTW3 is built so that it works on the same memory zone, for concurrent executions, a zone per thread is created.

Read more…

Components

Type Visibility Attributes Name Initial
real(kind=C_DOUBLE), public, dimension(:,:), pointer :: tab

Subroutines

private subroutine alloc_fftw3(long, larg)

Allocation of the memory needed by the transformations, forward and backward. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

private subroutine alloc_fftw3_real(long, larg)

Allocation of the memory needed by the transformations, forward and backward, for the real case. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

public subroutine apod(tab_in, tab_out, long, larg, type_apo, param)

Function that returns an apodized array.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

input array

real(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_out

apodized array

integer(kind=I4), intent(in) :: long

2D array length

integer(kind=I4), intent(in) :: larg

2D array width

character(len=*), intent(in) :: type_apo

apodization type

real(kind=R8), intent(in), optional :: param

apodized array

public subroutine calc_fftw3(sens, tab_in, tab_ou, long, larg)

Subroutine that transforms forward or backward a double complex array. For speed reasons FFTW will always work on the same memory area, until the plans are destroyed of course. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: sens

=FORWARD or =BACKWARD

complex(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

array to transform

complex(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_ou

transformed array

integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

public subroutine calc_fftw3_real_bwd(tab_in, tab_ou, long, larg, planner_flag)

Subroutine that transforms backward a double real array. For speed reasons FFTW will always work on the same memory area, until the plans are destroyed of course. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

array to transform

real(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_ou

transformed array

integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in), optional :: planner_flag

planning option, FFTW_ESTIMATE for example

public subroutine calc_fftw3_real_fwd(tab_in, tab_ou, long, larg, planner_flag)

Subroutine that transforms forward a double real array. For speed reasons FFTW will always work on the same memory area, until the plans are destroyed of course. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

array to transform

complex(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_ou

transformed array

integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in), optional :: planner_flag

planning option, FFTW_ESTIMATE for example

private subroutine desalloc_fftw3()

When no more transformation is needed, the memory is released. 1 FFT distributed on several threads

Read more…

Arguments

None

private subroutine destroy_plan_fftw3()

Plans are no more needed as no additional transformation will occur. 1 FFT distributed on several threads

Arguments

None

public subroutine end_fftw3()

FFTW3 is no more useful from here. 1 FFT distributed on several threads

Arguments

None

public subroutine extend(tab_in, tab_out, nx, ny, nx2, ny2, ext, type_apo)

Function that extends an array for FFT processing.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=R8), intent(in), dimension(1:nx, 1:ny ) :: tab_in

input array

real(kind=R8), intent(out), dimension(1:nx2, 1:ny2) :: tab_out

apodized array

integer(kind=I4), intent(in) :: nx

2D input array length

integer(kind=I4), intent(in) :: ny

2D input array width

integer(kind=I4), intent(in) :: nx2

2D output array length

integer(kind=I4), intent(in) :: ny2

2D output array width

character(len=*), intent(in) :: ext

extension

character(len=*), intent(in), optional :: type_apo

apodization type

public subroutine init_fftw3(long, larg)

Subroutine to initialize the FFTW3 process 1 FFT distributed on several threads. Complex case.

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

public subroutine init_fftw3_real(long, larg, plan_flag)

Subroutine to initialize the FFTW3 process 1 FFT distributed on several threads Real case.

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example

private subroutine make_plan_fftw3(long, larg)

Creates forward and backward plans. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

private subroutine make_plan_fftw3_real(long, larg, plan_flag)

Creates forward and backward plans. 1 FFT distributed on several threads

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example

private subroutine tab_alloc_fftw3(long, larg)

Allocation of the memory needed by the transformations, forward and backward. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

private subroutine tab_alloc_fftw3_real(long, larg)

Allocation of the memory needed by the transformations, forward and backward, for the real case. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

public subroutine tab_calc_fftw3(sens, tab_in, tab_ou, long, larg)

Subroutine that transforms forward or bacward a double complex array. For speed reasons FFTW will always work on the same memory area, until the plans are destroyed of course. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: sens

=FORWARD or =BACKWARD

complex(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

array to transform

complex(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_ou

transformed array

integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

public subroutine tab_calc_fftw3_real_bwd(tab_in, tab_ou, long, larg)

Subroutine that transforms backward a real array. For speed reasons FFTW will always work on the same memory area, until the plans are destroyed of course. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

array to transform

real(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_ou

transformed array

integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

public subroutine tab_calc_fftw3_real_fwd(tab_in, tab_ou, long, larg)

Subroutine that transforms forward a real array. For speed reasons FFTW will always work on the same memory area, until the plans are destroyed of course. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=R8), intent(in), dimension(1:long, 1:larg) :: tab_in

array to transform

complex(kind=R8), intent(out), dimension(1:long, 1:larg) :: tab_ou

transformed array

integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

private subroutine tab_desalloc_fftw3()

When no more transformation is needed, the memory is released. several FFT on single thread each

Read more…

Arguments

None

private subroutine tab_destroy_plan_fftw3()

Plans are no more needed as no additional transformation will occur. several FFT on single thread each

Arguments

None

public subroutine tab_end_fftw3()

FFTW3 is no more useful from here. several FFT on single thread each

Arguments

None

public subroutine tab_end_fftw3_real()

FFTW3 is no more useful from here. several FFT on single thread each

Arguments

None

public subroutine tab_init_fftw3(long, larg, plan_flag)

Subroutine to initialize the FFTW3 process several FFT on single thread each Complex case.

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example

public subroutine tab_init_fftw3_real(long, larg, plan_flag)

Subroutine to initialize the FFTW3 process several FFT on single thread each Real case.

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example

private subroutine tab_make_plan_fftw3(long, larg, plan_flag)

Creates forward and backward plans. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example

private subroutine tab_make_plan_fftw3_real(long, larg, plan_flag)

Creates forward and backward plans. several FFT on single thread each

Read more…

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: long

first 2D array dimension

integer(kind=I4), intent(in) :: larg

second 2D array dimension

integer(kind=I4), intent(in) :: plan_flag

planning option, FFTW_ESTIMATE for example