IFFT_1D Function

public function IFFT_1D(signal, method, threads) result(result)

Perform a 1D inverse Fast Fourier Transform on a signal

This function takes a signal and performs a inverse fast Fourier Transform using the specified method. The available methods are:

  • "NAFPack_IFFT_1D": Fast Fourier Transform using NAFPack
  • "FFTW_IFFT_1D": Fast Fourier Transform using FFTW
  • "FFTW_IFFT_1D" + threads: Fast Fourier Transform using FFTW with multithreading

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), DIMENSION(:) :: signal
character(len=*), intent(in) :: method
integer, intent(in), optional :: threads

Return Value complex(kind=dp), DIMENSION(SIZE(signal))


Calls

proc~~ifft_1d~~CallsGraph proc~ifft_1d IFFT_1D fftw_cleanup_threads fftw_cleanup_threads proc~ifft_1d->fftw_cleanup_threads fftw_destroy_plan fftw_destroy_plan proc~ifft_1d->fftw_destroy_plan fftw_execute_dft fftw_execute_dft proc~ifft_1d->fftw_execute_dft fftw_init_threads fftw_init_threads proc~ifft_1d->fftw_init_threads fftw_plan_dft_1d fftw_plan_dft_1d proc~ifft_1d->fftw_plan_dft_1d fftw_plan_with_nthreads fftw_plan_with_nthreads proc~ifft_1d->fftw_plan_with_nthreads

Source Code

    FUNCTION IFFT_1D(signal, method, threads) RESULT(result)

        COMPLEX(dp), DIMENSION(:), INTENT(INOUT) :: signal
        CHARACTER(*), INTENT(IN) :: method
        INTEGER, OPTIONAL, INTENT(IN) :: threads
        COMPLEX(dp), DIMENSION(SIZE(signal)) :: result

        IF(method == "NAFPack_IFFT_1D")THEN
            result = NAFPack_IFFT_1D(signal)
        ELSE IF(method == "FFTW_IFFT_1D" .AND. .NOT. PRESENT(threads))THEN
            result = FFTW_IFFT_1D(signal)
        ELSE IF (method == "FFTW_IFFT_1D" .AND. PRESENT(threads))THEN
            result = FFTW_IFFT_1D_threads(signal, threads)
        ELSE
            STOP "ERROR : Wrong method for IFFT_1D"
        END IF

    END FUNCTION IFFT_1D