annotate constant-q-cpp/src/ext/kissfft/test/benchfftw.c @ 372:af71cbdab621 tip

Update bqvec code
author Chris Cannam
date Tue, 19 Nov 2019 10:13:32 +0000
parents 5d0a2ebb4d17
children
rev   line source
Chris@366 1 #include <stdio.h>
Chris@366 2 #include <stdlib.h>
Chris@366 3 #include <fftw3.h>
Chris@366 4 #include <unistd.h>
Chris@366 5 #include "pstats.h"
Chris@366 6
Chris@366 7 #ifdef DATATYPEdouble
Chris@366 8
Chris@366 9 #define CPXTYPE fftw_complex
Chris@366 10 #define PLAN fftw_plan
Chris@366 11 #define FFTMALLOC fftw_malloc
Chris@366 12 #define MAKEPLAN fftw_plan_dft_1d
Chris@366 13 #define DOFFT fftw_execute
Chris@366 14 #define DESTROYPLAN fftw_destroy_plan
Chris@366 15 #define FFTFREE fftw_free
Chris@366 16
Chris@366 17 #elif defined(DATATYPEfloat)
Chris@366 18
Chris@366 19 #define CPXTYPE fftwf_complex
Chris@366 20 #define PLAN fftwf_plan
Chris@366 21 #define FFTMALLOC fftwf_malloc
Chris@366 22 #define MAKEPLAN fftwf_plan_dft_1d
Chris@366 23 #define DOFFT fftwf_execute
Chris@366 24 #define DESTROYPLAN fftwf_destroy_plan
Chris@366 25 #define FFTFREE fftwf_free
Chris@366 26
Chris@366 27 #endif
Chris@366 28
Chris@366 29 #ifndef CPXTYPE
Chris@366 30 int main(void)
Chris@366 31 {
Chris@366 32 fprintf(stderr,"Datatype not available in FFTW\n" );
Chris@366 33 return 0;
Chris@366 34 }
Chris@366 35 #else
Chris@366 36 int main(int argc,char ** argv)
Chris@366 37 {
Chris@366 38 int nfft=1024;
Chris@366 39 int isinverse=0;
Chris@366 40 int numffts=1000,i;
Chris@366 41
Chris@366 42 CPXTYPE * in=NULL;
Chris@366 43 CPXTYPE * out=NULL;
Chris@366 44 PLAN p;
Chris@366 45
Chris@366 46 pstats_init();
Chris@366 47
Chris@366 48 while (1) {
Chris@366 49 int c = getopt (argc, argv, "n:ix:h");
Chris@366 50 if (c == -1)
Chris@366 51 break;
Chris@366 52 switch (c) {
Chris@366 53 case 'n':
Chris@366 54 nfft = atoi (optarg);
Chris@366 55 break;
Chris@366 56 case 'x':
Chris@366 57 numffts = atoi (optarg);
Chris@366 58 break;
Chris@366 59 case 'i':
Chris@366 60 isinverse = 1;
Chris@366 61 break;
Chris@366 62 case 'h':
Chris@366 63 case '?':
Chris@366 64 default:
Chris@366 65 fprintf(stderr,"options:\n-n N: complex fft length\n-i: inverse\n-x N: number of ffts to compute\n"
Chris@366 66 "");
Chris@366 67 }
Chris@366 68 }
Chris@366 69
Chris@366 70 in=FFTMALLOC(sizeof(CPXTYPE) * nfft);
Chris@366 71 out=FFTMALLOC(sizeof(CPXTYPE) * nfft);
Chris@366 72 for (i=0;i<nfft;++i ) {
Chris@366 73 in[i][0] = rand() - RAND_MAX/2;
Chris@366 74 in[i][1] = rand() - RAND_MAX/2;
Chris@366 75 }
Chris@366 76
Chris@366 77 if ( isinverse )
Chris@366 78 p = MAKEPLAN(nfft, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);
Chris@366 79 else
Chris@366 80 p = MAKEPLAN(nfft, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
Chris@366 81
Chris@366 82 for (i=0;i<numffts;++i)
Chris@366 83 DOFFT(p);
Chris@366 84
Chris@366 85 DESTROYPLAN(p);
Chris@366 86
Chris@366 87 FFTFREE(in); FFTFREE(out);
Chris@366 88
Chris@366 89 fprintf(stderr,"fftw\tnfft=%d\tnumffts=%d\n", nfft,numffts);
Chris@366 90 pstats_report();
Chris@366 91
Chris@366 92 return 0;
Chris@366 93 }
Chris@366 94 #endif