| 59 | } |
| 60 | |
| 61 | void RealFFTPlan::inverse( |
| 62 | const TensorShape & output_shape, |
| 63 | const TensorStrideBytes & input_strides, |
| 64 | const TensorStrideBytes & output_strides, |
| 65 | size_t axis, |
| 66 | const std::complex<float> * data_in, |
| 67 | float * data_out, |
| 68 | float scale, |
| 69 | size_t threads) const { |
| 70 | if (axis >= output_shape.size()) { |
| 71 | throw std::runtime_error("RealFFTPlan inverse axis out of range"); |
| 72 | } |
| 73 | if (output_shape[axis] != impl_->fft_size) { |
| 74 | throw std::runtime_error("RealFFTPlan inverse shape mismatch"); |
| 75 | } |
| 76 | real_fft_inverse(output_shape, input_strides, output_strides, axis, data_in, data_out, scale, threads); |
| 77 | } |
| 78 | |
| 79 | std::shared_ptr<RealFFTPlan> get_real_fft_plan(size_t fft_size) { |
| 80 | return std::make_shared<RealFFTPlan>(fft_size); |
no test coverage detected