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

pd4ifwt2ds.h File Reference

Go to the source code of this file.

Functions

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


Function Documentation

int pd4ifwt2ds const int Sizef2d,
const int ns,
const int ks,
const int size,
const double *  wdata,
double *  sdata,
double *  ws
 

Definition at line 285 of file pd4ifwt2ds.cpp.

References dpd4ifwt2dsws_(), H0, H1, H2, H3, ii, j, sdata(), size1, v, and wdata().

00293   { 
00294 
00295 #ifdef STORM_USEF
00296 
00297    int iflag;
00298    dpd4ifwt2dsws_( &Sizef2d, &ns, &ks, &size, wdata, sdata, ws, &iflag );
00299    return iflag;
00300 
00301 #else
00302 
00303    int ii;
00304    int i1,j1;
00305    int size2;
00306    int size1 = ns;
00307    double *u = ws;
00308    double *v = &ws[Sizef2d];
00309 
00310 #ifdef STORM_FWT_CCHECKUSAGE
00311    if ( size1 < ns ) return 1;
00312 #endif
00313 
00314    for( int i = 0; i < size*size; i++ ) {
00315       sdata[i] = wdata[i];
00316    }
00317 
00318    if ( size == ns ) return 0;
00319 
00320    while ( size1 < size ) {
00321 
00322       size2 = size1;
00323       size1 = 2 * size1;
00324 
00325       for( int j = 0; j < size1; j++ ) {        // index 1
00326          for( int i = 0; i < size1; i++ ) {
00327             ii = i * size;
00328             u[i] = sdata[ii+j];
00329          }
00330          for( int i = 0; i < size2; i++ ) {
00331             i1 = (i-1+size2)%size2;
00332             v[2*i] = H0*u[i] + H2*u[i1]
00333               + H3*u[size2+i] + H1*u[size2+i1];
00334             v[2*i+1] = H1*u[i] + H3*u[i1]
00335               - H2*u[size2+i] - H0*u[size2+i1];
00336          }
00337          for( int i = 0; i < size1; i++ ) {
00338             ii = i * size;
00339             sdata[ii+j] = v[i];
00340          }
00341       }
00342 
00343       for( int i = 0; i < size1; i++ ) {        // index 2
00344          ii = i * size;
00345          for( int j = 0; j < size1; j++ ) {
00346             u[j] = sdata[ii+j];
00347          }
00348          for( int j = 0; j < size2; j++ ) {
00349             j1 = (j-1+size2)%size2;
00350             v[2*j] = H0*u[j] + H2*u[j1]
00351               + H3*u[size2+j] + H1*u[size2+j1];
00352             v[2*j+1] = H1*u[j] + H3*u[j1]
00353               - H2*u[size2+j] - H0*u[size2+j1];
00354          }
00355          for( int j = 0; j < size1; j++ ) {
00356             sdata[ii+j] = v[j];
00357          }
00358       }
00359 
00360    }
00361 
00362 #ifdef STORM_FWT_CCHECKUSAGE
00363    if ( size1 > size ) return 2;
00364 #endif
00365 
00366    return 0;
00367 
00368 #endif
00369 } 

int pd4ifwt2ds const int Sizef2d,
const int ns,
const int ks,
const int size,
const float *  wdata,
float *  sdata,
float *  ws
 

Definition at line 198 of file pd4ifwt2ds.cpp.

References H0, H1, H2, H3, ii, j, pd4ifwt2dsws_(), sdata(), size1, v, and wdata().

00206   { 
00207 
00208 #ifdef STORM_USEF
00209 
00210    int iflag;
00211    pd4ifwt2dsws_( &Sizef2d, &ns, &ks, &size, wdata, sdata, ws, &iflag );
00212    return iflag;
00213 
00214 #else
00215 
00216    int ii;
00217    int i1,j1;
00218    int size2;
00219    int size1 = ns;
00220    float *u = ws;
00221    float *v = &ws[Sizef2d];
00222 
00223 #ifdef STORM_FWT_CCHECKUSAGE
00224    if ( size1 < ns ) return 1;
00225 #endif
00226 
00227    for( int i = 0; i < size*size; i++ ) {
00228       sdata[i] = wdata[i];
00229    }
00230 
00231    if ( size == ns ) return 0;
00232 
00233    while ( size1 < size ) {
00234 
00235       size2 = size1;
00236       size1 = 2 * size1;
00237 
00238       for( int j = 0; j < size1; j++ ) {        // index 1
00239          for( int i = 0; i < size1; i++ ) {
00240             ii = i * size;
00241             u[i] = sdata[ii+j];
00242          }
00243          for( int i = 0; i < size2; i++ ) {
00244             i1 = (i-1+size2)%size2;
00245             v[2*i] = H0*u[i] + H2*u[i1]
00246               + H3*u[size2+i] + H1*u[size2+i1];
00247             v[2*i+1] = H1*u[i] + H3*u[i1]
00248               - H2*u[size2+i] - H0*u[size2+i1];
00249          }
00250          for( int i = 0; i < size1; i++ ) {
00251             ii = i * size;
00252             sdata[ii+j] = v[i];
00253          }  
00254       }
00255 
00256       for( int i = 0; i < size1; i++ ) {        // index 2
00257          ii = i * size;
00258          for( int j = 0; j < size1; j++ ) {
00259             u[j] = sdata[ii+j];
00260          }
00261          for( int j = 0; j < size2; j++ ) {
00262             j1 = (j-1+size2)%size2;
00263             v[2*j] = H0*u[j] + H2*u[j1]
00264               + H3*u[size2+j] + H1*u[size2+j1];
00265             v[2*j+1] = H1*u[j] + H3*u[j1]
00266               - H2*u[size2+j] - H0*u[size2+j1];
00267          }
00268          for( int j = 0; j < size1; j++ ) {
00269             sdata[ii+j] = v[j];
00270          }
00271       }
00272 
00273    }
00274    
00275 #ifdef STORM_FWT_CCHECKUSAGE
00276    if ( size1 > size ) return 2;
00277 #endif
00278 
00279    return 0;
00280 
00281 #endif
00282 } 

int pd4ifwt2ds const int Sizef2d,
const int ns,
const int ks,
const int size,
const double *  wdata,
double *  sdata
 

Definition at line 109 of file pd4ifwt2ds.cpp.

References dpd4ifwt2ds_(), H0, H1, H2, H3, ii, j, sdata(), size1, v, and wdata().

00116   { 
00117 
00118 #ifdef STORM_USEF
00119 
00120    int iflag;
00121    dpd4ifwt2ds_( &Sizef2d, &ns, &ks, &size, wdata, sdata, &iflag );
00122    return iflag;
00123 
00124 #else
00125 
00126    int ii;
00127    int i1,j1;
00128    int size2;
00129    int size1 = ns;
00130    double *u = new double[Sizef2d];
00131    double *v = new double[Sizef2d];
00132 
00133 #ifdef STORM_FWT_CCHECKUSAGE
00134    if ( size1 < ns ) return 1;
00135 #endif
00136 
00137    for( int i = 0; i < size*size; i++ ) {
00138       sdata[i] = wdata[i];
00139    }
00140 
00141    if ( size == ns ) return 0;
00142 
00143    while ( size1 < size ) {
00144 
00145       size2 = size1;
00146       size1 = 2 * size1;
00147 
00148       for( int j = 0; j < size1; j++ ) {        // index 1
00149          for( int i = 0; i < size1; i++ ) {
00150             ii = i * size;
00151             u[i] = sdata[ii+j];
00152          }
00153          for( int i = 0; i < size2; i++ ) {
00154             i1 = (i-1+size2)%size2;
00155             v[2*i] = H0*u[i] + H2*u[i1]
00156               + H3*u[size2+i] + H1*u[size2+i1];
00157             v[2*i+1] = H1*u[i] + H3*u[i1]
00158               - H2*u[size2+i] - H0*u[size2+i1];
00159          }
00160          for( int i = 0; i < size1; i++ ) {
00161             ii = i * size;
00162             sdata[ii+j] = v[i];
00163          }
00164       }
00165 
00166       for( int i = 0; i < size1; i++ ) {        // index 2
00167          ii = i * size;
00168          for( int j = 0; j < size1; j++ ) {
00169             u[j] = sdata[ii+j];
00170          }
00171          for( int j = 0; j < size2; j++ ) {
00172             j1 = (j-1+size2)%size2;
00173             v[2*j] = H0*u[j] + H2*u[j1]
00174               + H3*u[size2+j] + H1*u[size2+j1];
00175             v[2*j+1] = H1*u[j] + H3*u[j1]
00176               - H2*u[size2+j] - H0*u[size2+j1];
00177          }
00178          for( int j = 0; j < size1; j++ ) {
00179             sdata[ii+j] = v[j];
00180          }
00181       }
00182 
00183    }
00184 
00185    delete [] u;
00186    delete [] v;
00187 
00188 #ifdef STORM_FWT_CCHECKUSAGE
00189    if ( size1 > size ) return 2;
00190 #endif
00191 
00192    return 0;
00193 
00194 #endif
00195 } 

int pd4ifwt2ds const int Sizef2d,
const int ns,
const int ks,
const int size,
const float *  wdata,
float *  sdata
 

Definition at line 20 of file pd4ifwt2ds.cpp.

References H0, H1, H2, H3, ii, j, pd4ifwt2ds_(), sdata(), size1, v, and wdata().

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


Generated on Mon May 31 21:40:27 2004 for SR2k4 Assembler by doxygen 1.3.6