1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include "common.h" #include <math.h> void dct4(float* out, const float* x, int N, float scale) { for (int k = 0; k < N; k++) { double sum = 0; for (int n = 0; n < N; n++) { sum += x[n] * cos((M_PI/N) * ((double)n + 0.5) * ((double)k + 0.5)); } out[N - 1 - k] = sum * scale; } }