Blame doc/examples/fftreal.c
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <math.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_errno.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_fft_real.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_fft_halfcomplex.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
main (void)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
int i, n = 100;
|
|
Packit |
67cb25 |
double data[n];
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_real_wavetable * real;
|
|
Packit |
67cb25 |
gsl_fft_halfcomplex_wavetable * hc;
|
|
Packit |
67cb25 |
gsl_fft_real_workspace * work;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
data[i] = 0.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = n / 3; i < 2 * n / 3; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
data[i] = 1.0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
printf ("%d: %e\n", i, data[i]);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
printf ("\n");
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
work = gsl_fft_real_workspace_alloc (n);
|
|
Packit |
67cb25 |
real = gsl_fft_real_wavetable_alloc (n);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_real_transform (data, 1, n,
|
|
Packit |
67cb25 |
real, work);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_real_wavetable_free (real);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 11; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
data[i] = 0;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
hc = gsl_fft_halfcomplex_wavetable_alloc (n);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_halfcomplex_inverse (data, 1, n,
|
|
Packit |
67cb25 |
hc, work);
|
|
Packit |
67cb25 |
gsl_fft_halfcomplex_wavetable_free (hc);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (i = 0; i < n; i++)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
printf ("%d: %e\n", i, data[i]);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
gsl_fft_real_workspace_free (work);
|
|
Packit |
67cb25 |
return 0;
|
|
Packit |
67cb25 |
}
|