#include "dct.h" #include "util/math.h" #include void idct_512(const float input[DCT_SIZE], float output[DCT_SIZE]) { float scale_k0 = sqrtf(1.0f / DCT_SIZE); float scale_kn = sqrtf(2.0f / DCT_SIZE); for (int n = 0; n < DCT_SIZE; ++n) { float sum = 0.0f; for (int k = 0; k < DCT_SIZE; ++k) { float scale = (k == 0) ? scale_k0 : scale_kn; sum += scale * input[k] * cosf((PI / DCT_SIZE) * (n + 0.5f) * k); } output[n] = sum; } }