diff options
Diffstat (limited to 'gsl-1.9/doc/examples/fftreal.c')
-rw-r--r-- | gsl-1.9/doc/examples/fftreal.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gsl-1.9/doc/examples/fftreal.c b/gsl-1.9/doc/examples/fftreal.c new file mode 100644 index 0000000..ec34458 --- /dev/null +++ b/gsl-1.9/doc/examples/fftreal.c @@ -0,0 +1,59 @@ +#include <stdio.h> +#include <math.h> +#include <gsl/gsl_errno.h> +#include <gsl/gsl_fft_real.h> +#include <gsl/gsl_fft_halfcomplex.h> + +int +main (void) +{ + int i, n = 100; + double data[n]; + + gsl_fft_real_wavetable * real; + gsl_fft_halfcomplex_wavetable * hc; + gsl_fft_real_workspace * work; + + for (i = 0; i < n; i++) + { + data[i] = 0.0; + } + + for (i = n / 3; i < 2 * n / 3; i++) + { + data[i] = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + printf ("\n"); + + work = gsl_fft_real_workspace_alloc (n); + real = gsl_fft_real_wavetable_alloc (n); + + gsl_fft_real_transform (data, 1, n, + real, work); + + gsl_fft_real_wavetable_free (real); + + for (i = 11; i < n; i++) + { + data[i] = 0; + } + + hc = gsl_fft_halfcomplex_wavetable_alloc (n); + + gsl_fft_halfcomplex_inverse (data, 1, n, + hc, work); + gsl_fft_halfcomplex_wavetable_free (hc); + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + + gsl_fft_real_workspace_free (work); + return 0; +} |