annotate ext/kissfft/test/benchfftw.c @ 206:335be766a54d

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