summaryrefslogtreecommitdiff
path: root/gsl-1.9/doc/examples/fftreal.c
diff options
context:
space:
mode:
Diffstat (limited to 'gsl-1.9/doc/examples/fftreal.c')
-rw-r--r--gsl-1.9/doc/examples/fftreal.c59
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;
+}