#include "fft_stage.hpp" #include namespace fft_stage { // cplx_mul — complex elementwise multiply: out = in1 * in2 (conjugated 2nd) void cplx_mul(double* out, const double* in1, const double* in2, uint32_t n) { for (uint32_t i = 0; i < n * 2; i += 2) { double re1 = in1[i + 0]; double im1 = in1[i + 1]; double re2 = in2[i + 0]; double im2 = in2[i + 1]; out[i + 0] = re1 * re2 - im1 * im2; out[i + 1] = re1 * im2 + im1 * re2; } } // stage_complex — reformat: read interleaved complex [re,im][n], write [re][n],[im][n] void stage_complex(double* out, const double* in, const double* tw, uint32_t n) { for (uint32_t i = 0; i < n; i++) { double re1 = in[i * 2 + 0]; double im1 = in[i * 2 + 1]; double re2 = tw[i * 2 + 0]; double im2 = tw[i * 2 + 1]; out[i * 2 + 0] = re1 * re2 - im1 * im2; out[i * 2 + 1] = re1 * im2 + im1 * re2; } } // stage_double — scalar multiply (FUN_180008500): out[i] = in[i] * tw[i] void stage_double(double* out, const double* in, const double* tw, uint32_t n) { for (uint32_t i = 0; i < n; i++) { out[i] = in[i] * tw[i]; } } }