#pragma once #include #include #include #include "fft_plan.hpp" namespace fft { void init_plan(FFTPlan* plan, uint32_t log2N); void build_twiddle(FFTPlan* plan, double* scratch); void execute(const FFTPlan* plan, std::complex* buf); void execute_inverse(const FFTPlan* plan, std::complex* buf); // Real RFFT: N real → N/2+1 complex (forward) // N/2+1 complex → N real (inverse) void execute_real_forward(const FFTPlan* plan, double* real_in, std::complex* complex_out); void execute_real_inverse(const FFTPlan* plan, std::complex* complex_in, double* real_out); }