Revision: 49966 http://brlcad.svn.sourceforge.net/brlcad/?rev=49966&view=rev Author: brlcad Date: 2012-04-10 20:52:40 +0000 (Tue, 10 Apr 2012) Log Message: ----------- simplify the bounds checking. just use the one larger MAXFFT global for everything including the outputs, even though they only use half the space. avoids off-by-one issues and simplifies the code. Keep the convolution at 1024 by default.
Modified Paths: -------------- brlcad/trunk/src/sig/dfft.c Modified: brlcad/trunk/src/sig/dfft.c =================================================================== --- brlcad/trunk/src/sig/dfft.c 2012-04-10 20:34:38 UTC (rev 49965) +++ brlcad/trunk/src/sig/dfft.c 2012-04-10 20:52:40 UTC (rev 49966) @@ -37,7 +37,6 @@ #include "vmath.h" #define MAXFFT 4096 -#define MAXOUT 2048 /* MAXFFT/2 XXX (Actually + 1) */ double data[MAXFFT]; /* Data buffer: 2*Points in spectrum */ @@ -55,7 +54,7 @@ void fftdisp(double *dat, int N); void fftmag2(double *mags, double *dat, int N); void fftphase(double *dat, int N); -void rfft(); +void rfft(double *dat, int N); void LintoLog(double *in, double *out, int num); static const char usage[] = "\ @@ -77,7 +76,7 @@ bu_exit(1, "%s", usage); } - while ((c = bu_getopt(argc, argv, "d:clpLANh")) != -1) + while ((c = bu_getopt(argc, argv, "d:clpLANh")) != -1) { switch (c) { case 'd': mindB = -atof(bu_optarg); break; case 'c': cflag++; break; @@ -91,9 +90,6 @@ case '?': default: printf("Unknown argument: %c\n%s\n", c, usage); return EXIT_FAILURE; } - - if (L > MAXFFT) { - bu_exit(2, "dfft: can't go over %d\n", MAXFFT); } /* Calculate Critical Band filter weights */ @@ -128,7 +124,7 @@ fftdisp(double *dat, int N) { int i, j; - double mags[MAXOUT]; + double mags[MAXFFT]; size_t ret; /* Periodogram scaling */ @@ -139,7 +135,7 @@ /* Interp to Log freq scale */ if (lflag) { - double logout[MAXOUT+1]; + double logout[MAXFFT]; LintoLog(mags, logout, N/2); /* put result back in mags */ @@ -150,7 +146,7 @@ /* Critical Band Filter */ if (cflag) { double sum; - double tmp[MAXOUT]; + double tmp[MAXFFT]; /* save working copy */ for (i = 0; i < N/2; i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits