annotate src/ext/kissfft/test/benchfftw.c @ 196:da283326bcd3 tip master

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