Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

qft.c

Go to the documentation of this file.
00001 #include "mrilib.h"
00002 
00003 int main( int argc , char * argv[] )
00004 {
00005    int ii , mm , pp , nn , rr , kk , mode ;
00006    float ph , fac ;
00007    complex * cx ;
00008 
00009    if( argc < 6 ){ printf("Usage: qft N r k {r,q,l,a} p\n"); exit(1); }
00010 
00011    nn = strtol(argv[1],NULL,10) ; if( nn < 4 ) exit(1) ;
00012    nn = csfft_nextup(nn) ;
00013 
00014    rr = strtol(argv[2],NULL,10) ; if( rr < 2 ) exit(1) ;
00015    mm = rr*nn ;
00016 
00017    kk = strtol(argv[3],NULL,10) ;
00018 
00019    switch( argv[4][0] ){
00020       case 'r': mode = 0  ; break ;
00021       case 'q': mode = -1 ; break ;
00022       case 'l': mode = -2 ; break ;
00023       case 'a': mode =  1 ; break ;
00024 
00025       default: fprintf(stderr,"mode flag illegal\n");exit(1) ;
00026    }
00027 
00028    fac = strtod(argv[5],NULL) ;
00029 
00030    srand48((long)time(NULL)) ;
00031 
00032    cx = (complex *) malloc(sizeof(complex)*mm) ;
00033 
00034    for( ii=0 ; ii < mm ; ii++ ){
00035       switch( mode ){
00036          case  0:  pp = lrand48() ; break ;
00037          case -1:  pp = fac*ii*ii ; break ;
00038          case -2:  pp = fac*ii + (lrand48()%3 - 1) ; break ;
00039          case  1:  pp = fac*ii ; break ;
00040       }
00041       pp = (pp+nn) % nn ; printf("%d ",pp) ;
00042 
00043       ph = -(2.0*PI*kk*rr/mm) * pp ; cx[ii] = CEXPIT(ph) ;
00044    }
00045    printf("\n\n");
00046 
00047    csfft_cox( 1 , mm , cx ) ;
00048 
00049    for( ii=0 ; ii < mm ; ii++ ){
00050       printf("  %4d: %13.6f %13.6f" , ii,cx[ii].r,cx[ii].i ) ;
00051       if( ii%3 == 2 ) printf("\n") ;
00052    }
00053    printf("\n") ; exit(0) ;
00054 }
 

Powered by Plone

This site conforms to the following standards: