Hi, I have the same problem using inverse FFT in GNURADIO. The code works on 32bit only.
My call: d_invfft = new gri_fft_real_rev(NFFT); [...] d_invfft->execute(); an the code of gri_fft; gri_fft_complex::gri_fft_complex (int fft_size, bool forward) { // Hold global mutex during plan construction and destruction. gri_fft_planner::scoped_lock lock(gri_fft_planner::mutex()); assert (sizeof (fftwf_complex) == sizeof (gr_complex)); if (fft_size <= 0) throw std::out_of_range ("gri_fftw: invalid fft_size"); d_fft_size = fft_size; d_inbuf = (gr_complex *) fftwf_malloc (sizeof (gr_complex) * inbuf_length ()); if (d_inbuf == 0) throw std::runtime_error ("fftwf_malloc"); d_outbuf = (gr_complex *) fftwf_malloc (sizeof (gr_complex) * outbuf_length ()); if (d_outbuf == 0){ fftwf_free (d_inbuf); throw std::runtime_error ("fftwf_malloc"); } gri_fftw_import_wisdom (); // load prior wisdom from disk d_plan = fftwf_plan_dft_1d (fft_size, reinterpret_cast<fftwf_complex *>(d_inbuf), reinterpret_cast<fftwf_complex *>(d_outbuf), forward ? FFTW_FORWARD : FFTW_BACKWARD, FFTW_MEASURE); if (d_plan == NULL) { fprintf(stderr, "gri_fft_complex: error creating plan\n"); throw std::runtime_error ("fftwf_plan_dft_1d failed"); } gri_fftw_export_wisdom (); // store new wisdom to disk } and void gri_fft_complex::execute () { fftwf_execute ((fftwf_plan) d_plan); } so I have no f_plan or b_plan variables best regards Michael