Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

hifwt2ds.h File Reference

Go to the source code of this file.

Functions

int hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const int *wdata, int *sdata, int *ws)
int hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const double *wdata, double *sdata, double *ws)
int hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const float *wdata, float *sdata, float *ws)
int hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const int *wdata, int *sdata)
int hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const double *wdata, double *sdata)
int hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const float *wdata, float *sdata)


Function Documentation

int hifwt2ds const int Sizef2d,
const int ns,
const int size,
const int wdata,
int sdata,
int ws
 

Definition at line 415 of file hifwt2ds.cpp.

References ihifwt2dsws_(), ii, j, sdata(), size1, v, and wdata().

00422   { 
00423 
00424 #ifdef STORM_USEF
00425 
00426    int iflag;
00427    ihifwt2dsws_( &Sizef2d, &ns, &size, wdata, sdata, ws, &iflag );
00428    return iflag;
00429 
00430 #else
00431 
00432    int ii,size2;
00433    int size1 = ns;
00434    int *u = ws;
00435    int *v = &ws[Sizef2d];
00436 
00437 #ifdef STORM_FWT_CCHECKUSAGE
00438    if ( size1 < ns ) return 1;
00439 #endif
00440 
00441    for( int i = 0; i < size*size; i++ ) {
00442       sdata[i] = wdata[i];
00443    }
00444 
00445    if ( size == ns ) return 0;
00446 
00447    while ( size1 < size ) {
00448 
00449       size2 = size1;
00450       size1 = 2 * size1;
00451 
00452       for( int j = 0; j < size1; j++ ) {        // index 1
00453          for( int i = 0; i < size1; i++ ) {
00454             ii = i * size;
00455             u[i] = sdata[ii+j];
00456          }
00457          for( int i = 0; i < size2; i++ ) {
00458             v[2*i] = ( u[i] + u[size2+i] ) / 2;
00459             v[2*i+1] = u[i] - u[size2+i];
00460          }
00461          for( int i = 0; i < size1; i++ ) {
00462             ii = i * size;
00463             sdata[ii+j] = v[i];
00464          }  
00465       }
00466 
00467       for( int i = 0; i < size1; i++ ) {        // index 2
00468          ii = i * size;
00469          for( int j = 0; j < size1; j++ ) {
00470             u[j] = sdata[ii+j];
00471          }
00472          for( int j = 0; j < size2; j++ ) {
00473             v[2*j] = ( u[j] + u[size2+j] ) / 2;
00474             v[2*j+1] = u[j] - u[size2+j];
00475          }
00476          for( int j = 0; j < size1; j++ ) {
00477             sdata[ii+j] = v[j];
00478          }
00479       }
00480 
00481    }
00482   
00483 #ifdef STORM_FWT_CCHECKUSAGE
00484    if ( size1 > size ) return 2;
00485 #endif
00486 
00487    return 0;
00488 
00489 #endif
00490 } 

int hifwt2ds const int Sizef2d,
const int ns,
const int size,
const double *  wdata,
double *  sdata,
double *  ws
 

Definition at line 337 of file hifwt2ds.cpp.

References dhifwt2dsws_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().

00344   { 
00345 
00346 #ifdef STORM_USEF
00347 
00348    int iflag;
00349    dhifwt2dsws_( &Sizef2d, &ns, &size, wdata, sdata, ws, &iflag );
00350    return iflag;
00351 
00352 #else
00353 
00354    int ii,size2;
00355    int size1 = ns;
00356    double *u = ws;
00357    double *v = &ws[Sizef2d];
00358 
00359 #ifdef STORM_FWT_CCHECKUSAGE
00360    if ( size1 < ns ) return 1;
00361 #endif
00362 
00363    for( int i = 0; i < size*size; i++ ) {
00364       sdata[i] = wdata[i];
00365    }
00366 
00367    if ( size == ns ) return 0;
00368 
00369    while ( size1 < size ) {
00370 
00371       size2 = size1;
00372       size1 = 2 * size1;
00373 
00374       for( int j = 0; j < size1; j++ ) {        // index 1
00375          for( int i = 0; i < size1; i++ ) {
00376             ii = i * size;
00377             u[i] = sdata[ii+j];
00378          }
00379          for( int i = 0; i < size2; i++ ) {
00380             v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00381             v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00382          }
00383          for( int i = 0; i < size1; i++ ) {
00384             ii = i * size;
00385             sdata[ii+j] = v[i];
00386          }
00387       }
00388 
00389       for( int i = 0; i < size1; i++ ) {        // index 2
00390          ii = i * size;
00391          for( int j = 0; j < size1; j++ ) {
00392             u[j] = sdata[ii+j];
00393          }
00394          for( int j = 0; j < size2; j++ ) {
00395             v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00396             v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00397          }
00398          for( int j = 0; j < size1; j++ ) {
00399             sdata[ii+j] = v[j];
00400          }
00401       }
00402 
00403    }
00404 
00405 #ifdef STORM_FWT_CCHECKUSAGE
00406    if ( size1 > size ) return 2;
00407 #endif
00408 
00409    return 0;
00410 
00411 #endif
00412 } 

int hifwt2ds const int Sizef2d,
const int ns,
const int size,
const float *  wdata,
float *  sdata,
float *  ws
 

Definition at line 259 of file hifwt2ds.cpp.

References hifwt2dsws_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().

00266   { 
00267 
00268 #ifdef STORM_USEF
00269 
00270    int iflag;
00271    hifwt2dsws_( &Sizef2d, &ns, &size, wdata, sdata, ws, &iflag );
00272    return iflag;
00273 
00274 #else
00275 
00276    int ii,size2;
00277    int size1 = ns;
00278    float *u = ws;
00279    float *v = &ws[Sizef2d];
00280 
00281 #ifdef STORM_FWT_CCHECKUSAGE
00282    if ( size1 < ns ) return 1;
00283 #endif
00284 
00285    for( int i = 0; i < size*size; i++ ) {
00286       sdata[i] = wdata[i];
00287    }
00288 
00289    if ( size == ns ) return 0;
00290 
00291    while ( size1 < size ) {
00292 
00293       size2 = size1;
00294       size1 = 2 * size1;
00295 
00296       for( int j = 0; j < size1; j++ ) {        // index 1
00297          for( int i = 0; i < size1; i++ ) {
00298             ii = i * size;
00299             u[i] = sdata[ii+j];
00300          }
00301          for( int i = 0; i < size2; i++ ) {
00302             v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00303             v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00304          }
00305          for( int i = 0; i < size1; i++ ) {
00306             ii = i * size;
00307             sdata[ii+j] = v[i];
00308          }  
00309       }
00310 
00311       for( int i = 0; i < size1; i++ ) {        // index 2
00312          ii = i * size;
00313          for( int j = 0; j < size1; j++ ) {
00314             u[j] = sdata[ii+j];
00315          }
00316          for( int j = 0; j < size2; j++ ) {
00317             v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00318             v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00319          }
00320          for( int j = 0; j < size1; j++ ) {
00321             sdata[ii+j] = v[j];
00322          }
00323       }
00324 
00325    }
00326    
00327 #ifdef STORM_FWT_CCHECKUSAGE
00328    if ( size1 > size ) return 2;
00329 #endif
00330 
00331    return 0;
00332 
00333 #endif
00334 } 

int hifwt2ds const int Sizef2d,
const int ns,
const int size,
const int wdata,
int sdata
 

Definition at line 179 of file hifwt2ds.cpp.

References ihifwt2ds_(), ii, j, sdata(), size1, v, and wdata().

00185   { 
00186 
00187 #ifdef STORM_USEF
00188 
00189    int iflag;
00190    ihifwt2ds_( &Sizef2d, &ns, &size, wdata, sdata, &iflag );
00191    return iflag;
00192 
00193 #else
00194 
00195    int ii,size2;
00196    int size1 = ns;
00197    int *u = new int[Sizef2d];
00198    int *v = new int[Sizef2d];
00199 
00200 #ifdef STORM_FWT_CCHECKUSAGE
00201    if ( size1 < ns ) return 1;
00202 #endif
00203 
00204    for( int i = 0; i < size*size; i++ ) {
00205       sdata[i] = wdata[i];
00206    }
00207 
00208    if ( size == ns ) return 0;
00209 
00210    while ( size1 < size ) {
00211 
00212       size2 = size1;
00213       size1 = 2 * size1;
00214 
00215       for( int j = 0; j < size1; j++ ) {        // index 1
00216          for( int i = 0; i < size1; i++ ) {
00217             ii = i * size;
00218             u[i] = sdata[ii+j];
00219          }
00220          for( int i = 0; i < size2; i++ ) {
00221             v[2*i] = ( u[i] + u[size2+i] ) / 2;
00222             v[2*i+1] = u[i] - u[size2+i];
00223          }
00224          for( int i = 0; i < size1; i++ ) {
00225             ii = i * size;
00226             sdata[ii+j] = v[i];
00227          }  
00228       }
00229 
00230       for( int i = 0; i < size1; i++ ) {        // index 2
00231          ii = i * size;
00232          for( int j = 0; j < size1; j++ ) {
00233             u[j] = sdata[ii+j];
00234          }
00235             for( int j = 0; j < size2; j++ ) {
00236                v[2*j] = ( u[j] + u[size2+j] ) / 2;
00237                v[2*j+1] = u[j] - u[size2+j];
00238             }
00239          for( int j = 0; j < size1; j++ ) {
00240             sdata[ii+j] = v[j];
00241          }
00242       }
00243 
00244    }
00245    
00246    delete [] u;
00247    delete [] v;
00248 
00249 #ifdef STORM_FWT_CCHECKUSAGE
00250    if ( size1 > size ) return 2;
00251 #endif
00252 
00253    return 0;
00254 
00255 #endif
00256 } 

int hifwt2ds const int Sizef2d,
const int ns,
const int size,
const double *  wdata,
double *  sdata
 

Definition at line 99 of file hifwt2ds.cpp.

References dhifwt2ds_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().

00105   { 
00106 
00107 #ifdef STORM_USEF
00108 
00109    int iflag;
00110    dhifwt2ds_( &Sizef2d, &ns, &size, wdata, sdata, &iflag );
00111    return iflag;
00112 
00113 #else
00114 
00115    int ii,size2;
00116    int size1 = ns;
00117    double *u = new double[Sizef2d];
00118    double *v = new double[Sizef2d];
00119 
00120 #ifdef STORM_FWT_CCHECKUSAGE
00121    if ( size1 < ns ) return 1;
00122 #endif
00123 
00124    for( int i = 0; i < size*size; i++ ) {
00125       sdata[i] = wdata[i];
00126    }
00127 
00128    if ( size == ns ) return 0;
00129 
00130    while ( size1 < size ) {
00131 
00132       size2 = size1;
00133       size1 = 2 * size1;
00134 
00135       for( int j = 0; j < size1; j++ ) {        // index 1
00136          for( int i = 0; i < size1; i++ ) {
00137             ii = i * size;
00138             u[i] = sdata[ii+j];
00139          }
00140          for( int i = 0; i < size2; i++ ) {
00141             v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00142             v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00143          }
00144          for( int i = 0; i < size1; i++ ) {
00145             ii = i * size;
00146             sdata[ii+j] = v[i];
00147          }
00148       }
00149 
00150       for( int i = 0; i < size1; i++ ) {        // index 2
00151          ii = i * size;
00152          for( int j = 0; j < size1; j++ ) {
00153             u[j] = sdata[ii+j];
00154          }
00155          for( int j = 0; j < size2; j++ ) {
00156             v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00157             v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00158          }
00159          for( int j = 0; j < size1; j++ ) {
00160             sdata[ii+j] = v[j];
00161          }
00162       }
00163 
00164    }
00165 
00166    delete [] u;
00167    delete [] v;
00168 
00169 #ifdef STORM_FWT_CCHECKUSAGE
00170    if ( size1 > size ) return 2;
00171 #endif
00172 
00173    return 0;
00174 
00175 #endif
00176 } 

int hifwt2ds const int Sizef2d,
const int ns,
const int size,
const float *  wdata,
float *  sdata
 

Definition at line 19 of file hifwt2ds.cpp.

References hifwt2ds_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().

00025   { 
00026 
00027 #ifdef STORM_USEF
00028 
00029    int iflag;
00030    hifwt2ds_( &Sizef2d, &ns, &size, wdata, sdata, &iflag );
00031    return iflag;
00032 
00033 #else
00034 
00035    int ii,size2;
00036    int size1 = ns;
00037    float *u = new float[Sizef2d];
00038    float *v = new float[Sizef2d];
00039 
00040 #ifdef STORM_FWT_CCHECKUSAGE
00041    if ( size1 < ns ) return 1;
00042 #endif
00043 
00044    for( int i = 0; i < size*size; i++ ) {
00045       sdata[i] = wdata[i];
00046    }
00047 
00048    if ( size == ns ) return 0;
00049 
00050    while ( size1 < size ) {
00051 
00052       size2 = size1;
00053       size1 = 2 * size1;
00054 
00055       for( int j = 0; j < size1; j++ ) {        // index 1
00056          for( int i = 0; i < size1; i++ ) {
00057             ii = i * size;
00058             u[i] = sdata[ii+j];
00059          }
00060          for( int i = 0; i < size2; i++ ) {
00061             v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00062             v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00063          }
00064          for( int i = 0; i < size1; i++ ) {
00065             ii = i * size;
00066             sdata[ii+j] = v[i];
00067          }  
00068       }
00069 
00070       for( int i = 0; i < size1; i++ ) {        // index 2
00071          ii = i * size;
00072          for( int j = 0; j < size1; j++ ) {
00073             u[j] = sdata[ii+j];
00074          }
00075             for( int j = 0; j < size2; j++ ) {
00076                v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00077                v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00078             }
00079          for( int j = 0; j < size1; j++ ) {
00080             sdata[ii+j] = v[j];
00081          }
00082       }
00083 
00084    }
00085    
00086    delete [] u;
00087    delete [] v;
00088 
00089 #ifdef STORM_FWT_CCHECKUSAGE
00090    if ( size1 > size ) return 2;
00091 #endif
00092 
00093    return 0;
00094 
00095 #endif
00096 } 


Generated on Mon May 31 21:39:48 2004 for SR2k4 Assembler by doxygen 1.3.6