aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rd/kissfft/test/benchfftw.c
diff options
context:
space:
mode:
authordcherednik <dcherednik@white>2018-10-31 01:36:50 +0300
committerDaniil Cherednik <dan.cherednik@gmail.com>2018-11-02 01:54:36 +0300
commitea08660cc9e28a44a1512a5a56f85e7258d9832d (patch)
treeafce45813f3d0816326a6e12fb2cb996c5bb2d82 /src/3rd/kissfft/test/benchfftw.c
downloadlibgha-ea08660cc9e28a44a1512a5a56f85e7258d9832d.tar.gz
First commit
- Method to get parameters of one harmonic
Diffstat (limited to 'src/3rd/kissfft/test/benchfftw.c')
-rw-r--r--src/3rd/kissfft/test/benchfftw.c101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/3rd/kissfft/test/benchfftw.c b/src/3rd/kissfft/test/benchfftw.c
new file mode 100644
index 0000000..0bb2ef1
--- /dev/null
+++ b/src/3rd/kissfft/test/benchfftw.c
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved.
+ * This file is part of KISS FFT - https://github.com/mborgerding/kissfft
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ * See COPYING file for more information.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <fftw3.h>
+#include <unistd.h>
+#include "pstats.h"
+
+#ifdef DATATYPEdouble
+
+#define CPXTYPE fftw_complex
+#define PLAN fftw_plan
+#define FFTMALLOC fftw_malloc
+#define MAKEPLAN fftw_plan_dft_1d
+#define DOFFT fftw_execute
+#define DESTROYPLAN fftw_destroy_plan
+#define FFTFREE fftw_free
+
+#elif defined(DATATYPEfloat)
+
+#define CPXTYPE fftwf_complex
+#define PLAN fftwf_plan
+#define FFTMALLOC fftwf_malloc
+#define MAKEPLAN fftwf_plan_dft_1d
+#define DOFFT fftwf_execute
+#define DESTROYPLAN fftwf_destroy_plan
+#define FFTFREE fftwf_free
+
+#endif
+
+#ifndef CPXTYPE
+int main(void)
+{
+ fprintf(stderr,"Datatype not available in FFTW\n" );
+ return 0;
+}
+#else
+int main(int argc,char ** argv)
+{
+ int nfft=1024;
+ int isinverse=0;
+ int numffts=1000,i;
+
+ CPXTYPE * in=NULL;
+ CPXTYPE * out=NULL;
+ PLAN p;
+
+ pstats_init();
+
+ while (1) {
+ int c = getopt (argc, argv, "n:ix:h");
+ if (c == -1)
+ break;
+ switch (c) {
+ case 'n':
+ nfft = atoi (optarg);
+ break;
+ case 'x':
+ numffts = atoi (optarg);
+ break;
+ case 'i':
+ isinverse = 1;
+ break;
+ case 'h':
+ case '?':
+ default:
+ fprintf(stderr,"options:\n-n N: complex fft length\n-i: inverse\n-x N: number of ffts to compute\n"
+ "");
+ }
+ }
+
+ in=FFTMALLOC(sizeof(CPXTYPE) * nfft);
+ out=FFTMALLOC(sizeof(CPXTYPE) * nfft);
+ for (i=0;i<nfft;++i ) {
+ in[i][0] = rand() - RAND_MAX/2;
+ in[i][1] = rand() - RAND_MAX/2;
+ }
+
+ if ( isinverse )
+ p = MAKEPLAN(nfft, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);
+ else
+ p = MAKEPLAN(nfft, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
+
+ for (i=0;i<numffts;++i)
+ DOFFT(p);
+
+ DESTROYPLAN(p);
+
+ FFTFREE(in); FFTFREE(out);
+
+ fprintf(stderr,"fftw\tnfft=%d\tnumffts=%d\n", nfft,numffts);
+ pstats_report();
+
+ return 0;
+}
+#endif