Blame doc/examples/fftmr.c
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <math.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_errno.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_fft_complex.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#define REAL(z,i) ((z)[2*(i)])
|
|
Packit |
67cb25 |
#define IMAG(z,i) ((z)[2*(i)+1])
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
main (void)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int i;
|
|
Packit |
67cb25 |
const int n = 630;
|
|
Packit |
67cb25 |
double data[2*n];
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_complex_wavetable * wavetable;
|
|
Packit |
67cb25 |
gsl_fft_complex_workspace * workspace;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
REAL(data,i) = 0.0;
|
|
Packit |
67cb25 |
IMAG(data,i) = 0.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
data[0] = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 1; i <= 10; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
REAL(data,i) = REAL(data,n-i) = 1.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
printf ("%d: %e %e\n", i, REAL(data,i),
|
|
Packit |
67cb25 |
IMAG(data,i));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
printf ("\n");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
wavetable = gsl_fft_complex_wavetable_alloc (n);
|
|
Packit |
67cb25 |
workspace = gsl_fft_complex_workspace_alloc (n);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < (int) wavetable->nf; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
printf ("# factor %d: %zu\n", i,
|
|
Packit |
67cb25 |
wavetable->factor[i]);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_complex_forward (data, 1, n,
|
|
Packit |
67cb25 |
wavetable, workspace);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
printf ("%d: %e %e\n", i, REAL(data,i),
|
|
Packit |
67cb25 |
IMAG(data,i));
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_complex_wavetable_free (wavetable);
|
|
Packit |
67cb25 |
gsl_fft_complex_workspace_free (workspace);
|
|
Packit |
67cb25 |
return 0;
|
|
Packit |
67cb25 |
}
|