#pragma once #include #include using namespace std::complex_literals; #ifndef QUAD_PRECISION #define FFTW_PLAN fftw_plan #define FFTW_ALLOC_COMPLEX fftw_alloc_complex #define FFTW_IMPORT_WISDOM fftw_import_wisdom_from_filename #define FFTW_EXPORT_WISDOM fftw_export_wisdom_to_filename #define FFTW_PLAN_DFT_1D fftw_plan_dft_1d #define FFTW_DESTROY_PLAN fftw_destroy_plan #define FFTW_FREE fftw_free #define FFTW_CLEANUP fftw_cleanup #define FFTW_EXECUTE fftw_execute #define FFTW_COMPLEX fftw_complex using Real = double; #define II 1i #else #define FFTW_PLAN fftwl_plan #define FFTW_ALLOC_COMPLEX fftwl_alloc_complex #define FFTW_IMPORT_WISDOM fftwl_import_wisdom_from_filename #define FFTW_EXPORT_WISDOM fftwl_export_wisdom_to_filename #define FFTW_PLAN_DFT_1D fftwl_plan_dft_1d #define FFTW_DESTROY_PLAN fftwl_destroy_plan #define FFTW_FREE fftwl_free #define FFTW_CLEANUP fftwl_cleanup #define FFTW_EXECUTE fftwl_execute #define FFTW_COMPLEX fftwl_complex using Real = long double; #define II 1il #endif using Complex = std::complex;