20#include "./fourier_common.hpp"
24namespace triqs_tprf::fourier {
26 fourier_plan _fourier_base_plan(array_const_view<dcomplex, 2> in, array_const_view<dcomplex, 2> out,
int rank,
int *dims,
int fftw_count,
27 int fftw_backward_forward) {
29 auto in_fft =
reinterpret_cast<fftw_complex *
>(
const_cast<dcomplex *
>(in.data()));
30 auto out_fft =
reinterpret_cast<fftw_complex *
>(
const_cast<dcomplex *
>(out.data()));
32 auto p = fftw_plan_many_dft(rank,
37 in.indexmap().strides()[0],
41 out.indexmap().strides()[0],
43 fftw_backward_forward, FFTW_ESTIMATE);
45 return {(
void *)p, [](
void *p) { fftw_destroy_plan((fftw_plan)p); }};
48 void _fourier_base(array_const_view<dcomplex, 2> in, array_view<dcomplex, 2> out, fourier_plan &plan) {
50 auto in_fft =
reinterpret_cast<fftw_complex *
>(
const_cast<dcomplex *
>(in.data()));
51 auto out_fft =
reinterpret_cast<fftw_complex *
>(out.data());
53 fftw_execute_dft((fftw_plan)plan.get(), in_fft, out_fft);