#include <stdio.h>
#include <math.h>
#define PI 3.1415926535897
#define N_point 512
float RE[N_point];
float IM[N_point];
void get_sample(float *R, float *I, int N)
{
int i;
for(i = 0; i < N; i++)
{
R[i] = i;
I[i] = 0;
}
}
void DFT(float *R, float *I, int N)
{
int k, n;
float bn = 0;
float RE_buf[N];
float IM_buf[N];
for(k = 0; k < N; k++)
{
RE_buf[k] = 0;
IM_buf[k] = 0;
}
for(k = 0; k < N; k++)
{
for(n = 0; n < N; n++)
{
bn = (2*PI*k*n)/N;
RE_buf[k] += R[n]*cos(bn);
IM_buf[k] += R[n]*sin(-bn);
}
}
for(k = 0; k < N_point; k++)
{
R[k] = RE_buf[k];
I[k] = IM_buf[k];
}
}
int main()
{
int x;
get_sample(RE, IM, N_point);
DFT(RE, IM, N_point);
for(x = 0; x < N_point; x++)
printf("re[%d] = %6.3f \t im[%d] = %6.3f\n", x, RE[x], x, IM[x]);
return 0;
}