#include "fft_stage.hpp" #include namespace fft_stage { void cplx_mul(double* out, const double* in1, const double* in2, uint32_t n) { for (uint32_t i = 0; i < n; i += 64) { for (uint32_t j = 0; j < 4; j++) { double re1 = in1[i + j*2 + 0]; double im1 = in1[i + j*2 + 1]; double re2 = in2[i + j*2 + 0]; double im2 = in2[i + j*2 + 1]; out[i + j*2 + 0] = re1*re2 - im1*im2; out[i + j*2 + 1] = re1*im2 + im1*re2; } } } void stage_complex(double* out, const double* in, const double* tw, uint32_t n) { for (uint32_t i = 0; i < n; i += 64) { for (uint32_t j = 0; j < 4; j++) { double re1 = in[i + j*2 + 0]; double im1 = in[i + j*2 + 1]; double re2 = tw[i + j*2 + 0]; double im2 = tw[i + j*2 + 1]; out[i + j*2 + 0] = re1*re2 - im1*im2; out[i + j*2 + 1] = re1*im2 + im1*re2; } } } void stage_double(double* out, const double* in, const double* tw, uint32_t n) { for (uint32_t i = 0; i < n; i += 64) { for (uint32_t j = 0; j < 8; j++) { out[i + j] = in[i + j] * tw[i + j]; } } } }