60 #include <lal/LALStdlib.h>
61 #include <lal/LALgetopt.h>
62 #include <lal/AVFactories.h>
63 #include <lal/ComplexFFT.h>
64 #include <lal/LALString.h>
68 #define CODES(x) CODES_(x)
79 TestStatus(
LALStatus *
status,
const char *expectedCodes,
int exitCode );
82 main(
int argc,
char *argv[] )
107 TestStatus( &
status, CODES( 0 ), 1 );
110 TestStatus( &
status, CODES( 0 ), 1 );
113 TestStatus( &
status, CODES( 0 ), 1 );
120 for ( i = 0; i < n; ++i )
122 avec->
data[i] = rand() % 5 - 2;
123 avec->
data[i] += I * (rand() % 3 - 1);
132 for ( i = 0; i < n; ++i )
141 for ( i = 0; i < n; ++i )
147 if ( fabs( creal(avec->
data[i] - cvec->
data[i]) ) >
eps )
149 fprintf( stderr,
"FAIL: IFFT( FFT( a[] ) ) not equal to a[].\n" );
150 fprintf( stderr,
"Re(avec->data[%d]) = %e\n", i, crealf(avec->
data[i]) );
151 fprintf( stderr,
"Re(cvec->data[%d]) = %e\n", i, crealf(cvec->
data[i]) );
154 if ( fabs( cimag(avec->
data[i] - cvec->
data[i]) ) >
eps )
156 fprintf( stderr,
"FAIL: IFFT( FFT( a[] ) ) not equal to a[].\n" );
157 fprintf( stderr,
"Im(avec->data[%d]) = %e\n", i, cimagf(avec->
data[i]) );
158 fprintf( stderr,
"Im(cvec->data[%d]) = %e\n", i, cimagf(cvec->
data[i]) );
173 TestStatus( &
status, CODES( 0 ), 1 );
176 TestStatus( &
status, CODES( 0 ), 1 );
179 TestStatus( &
status, CODES( 0 ), 1 );
207 if ( (tok = strtok( str,
" " ) ) )
211 if (
status->statusCode == atoi( tok ) )
216 while ( ( tok = strtok( NULL,
" " ) ) );
220 if (
status->statusCode == atoi( str ) )
227 fprintf( stderr,
"\nExiting to system with code %d\n", exitcode );
242 fprintf( stderr,
"Options:\n" );
243 fprintf( stderr,
" -h print this message\n" );
244 fprintf( stderr,
" -q quiet: run silently\n" );
245 fprintf( stderr,
" -v verbose: print extra information\n" );
246 fprintf( stderr,
" -d level set lalDebugLevel to level\n" );
282 fp = freopen(
"/dev/null",
"w", stderr );
285 fprintf(stderr,
"Error: Unable to open /dev/null\n");
288 fp = freopen(
"/dev/null",
"w", stdout );
291 fprintf(stderr,
"Error: Unable to open /dev/null\n");
void REPORTSTATUS(LALStatus *status)
void LALCheckMemoryLeaks(void)
int LALgetopt(int argc, char *const *argv, const char *optstring)
static void Usage(const char *program, int exitcode)
static void ParseOptions(int argc, char *argv[])
int main(int argc, char *argv[])
COMPLEX8FFTPlan * XLALCreateReverseCOMPLEX8FFTPlan(UINT4 size, int measurelvl)
Returns a new COMPLEX8FFTPlan for a reverse transform.
int XLALCOMPLEX8VectorFFT(COMPLEX8Vector *_LAL_RESTRICT_ output, const COMPLEX8Vector *_LAL_RESTRICT_ input, const COMPLEX8FFTPlan *plan)
Perform a COMPLEX8Vector to COMPLEX8Vector FFT.
COMPLEX8FFTPlan * XLALCreateForwardCOMPLEX8FFTPlan(UINT4 size, int measurelvl)
Returns a new COMPLEX8FFTPlan for a forward transform.
void XLALDestroyCOMPLEX8FFTPlan(COMPLEX8FFTPlan *plan)
Destroys a COMPLEX8FFTPlan.
uint32_t UINT4
Four-byte unsigned integer.
float REAL4
Single precision real floating-point number (4 bytes).
size_t XLALStringCopy(char *dst, const char *src, size_t size)
Copy sources string src to destination string dst.
void LALCCreateVector(LALStatus *, COMPLEX8Vector **, UINT4)
void LALCDestroyVector(LALStatus *, COMPLEX8Vector **)
Vector of type COMPLEX8, see DATATYPE-Vector types for more details.
COMPLEX8 * data
Pointer to the data array.
LAL status structure, see The LALStatus structure for more details.