summaryrefslogtreecommitdiff
path: root/fft-test.c
blob: 98667a569a018abe170cf02461464330bf96f516 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "fft.h"

#define N_SAMPLES (1 << 14)

int
main ()
{
    complex_t orig[N_SAMPLES];
    complex_t buffer[N_SAMPLES];

    int i;

    for (i = 0; i < N_SAMPLES; ++i)
    {
	orig[i].re = drand48() * 10000;
	orig[i].im = drand48() * 10000;

	buffer[i] = orig[i];
    }

    fft (buffer, N_SAMPLES);
    ifft (buffer, N_SAMPLES);
    
    for (i = 0; i < N_SAMPLES; ++i)
    {
	if (fabs (buffer[i].re - orig[i].re ) > 0.02)
	    printf ("at %d: %f vs %f\n", i, buffer[i].re, orig[i].re);
	
	if (fabs (buffer[i].im - orig[i].im ) > 0.02)
	    printf ("at %d: %f vs %f\n", i, buffer[i].im, orig[i].im);
	
	assert (fabs (buffer[i].re - orig[i].re) < 0.02);
	assert (fabs (buffer[i].im - orig[i].im) < 0.02);
    }

    return 0;
}