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

g1fwt2ds.h File Reference

Go to the source code of this file.

Functions

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


Function Documentation

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

Definition at line 310 of file g1fwt2ds.cpp.

References dg1fwt2dsws_(), H00, H10, H11, ii, j, sdata(), size1, v, and wdata().

00317   { 
00318 
00319 #ifdef STORM_USEF
00320 
00321    int iflag;
00322    dg1fwt2dsws_( &Sizef2d, &ns, &size, sdata, wdata, ws, &iflag );
00323    return iflag;
00324 
00325 #else
00326 
00327    int ii,l,size2;
00328    int size1 = size;
00329    double *u = ws;
00330    double *v = &ws[2*Sizef2d];
00331 
00332 #ifdef STORM_FWT_CCHECKUSAGE
00333    if ( size1 < ns ) return 1;
00334 #endif
00335 
00336    for( int i = 0; i < 2*size*size; i++ ) {
00337       wdata[i] = sdata[i];
00338    }
00339 
00340    if ( size1 == ns ) return 0;
00341 
00342    while ( size1 > ns ) {
00343 
00344       size2 = size1 / 2;
00345 
00346       for( int j = 0; j < size1; j++ ) {        // index 1
00347             for( int i = 0; i < size1; i++ ) {
00348                ii = i * size;
00349                u[2*i] = wdata[2*(ii+j)];
00350                u[2*i+1] = wdata[2*(ii+j)+1];
00351             }
00352             for( int i = 0; i < size2; i++ ) {
00353                l = 2 * i;
00354                v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00355                v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00356                  + H11 * ( u[2*l+1] + u[2*l+3] );
00357                v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00358                  - H10 * ( u[2*l+1] + u[2*l+3] );
00359                v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00360             }
00361             for( int i = 0; i < size1; i++ ) {
00362                ii = i * size;
00363                wdata[2*(ii+j)] = v[2*i];
00364                wdata[2*(ii+j)+1] = v[2*i+1];
00365             }
00366       }
00367 
00368       for( int i = 0; i < size1; i++ ) {        // index 2
00369          ii = i * size;
00370             for( int j = 0; j < size1; j++ ) {
00371                u[2*j] = wdata[2*(ii+j)];
00372                u[2*j+1] = wdata[2*(ii+j)+1];
00373             }
00374             for( int j = 0; j < size2; j++ ) {
00375                l = 2 * j;
00376                v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00377                v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00378                  + H11 * ( u[2*l+1] + u[2*l+3] );
00379                v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00380                  - H10 * ( u[2*l+1] + u[2*l+3] );
00381                v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00382             }
00383             for( int j = 0; j < size1; j++ ) {
00384                wdata[2*(ii+j)] = v[2*j];
00385                wdata[2*(ii+j)+1] = v[2*j+1];
00386             }
00387       }
00388       size1 = size2;
00389 
00390    }
00391 
00392 #ifdef STORM_FWT_CCHECKUSAGE
00393    if (size1 < ns) return 2;
00394 #endif
00395 
00396    return 0;
00397 
00398 #endif
00399 
00400 } 

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

Definition at line 215 of file g1fwt2ds.cpp.

References g1fwt2dsws_(), H00, H10, H11, ii, j, sdata(), size1, v, and wdata().

00222   { 
00223 
00224 #ifdef STORM_USEF
00225 
00226    int iflag;
00227    g1fwt2dsws_( &Sizef2d, &ns, &size, sdata, wdata, ws, &iflag );
00228    return iflag;
00229 
00230 #else
00231 
00232    int ii,l,size2;
00233    int size1 = size;
00234    float *u = ws;
00235    float *v = &ws[2*Sizef2d];
00236 
00237 #ifdef STORM_FWT_CCHECKUSAGE
00238    if ( size1 < ns ) return 1;
00239 #endif
00240 
00241    for( int i = 0; i < 2*size*size; i++ ) {
00242       wdata[i] = sdata[i];
00243    }
00244 
00245    if ( size1 == ns ) return 0;
00246 
00247    while ( size1 > ns ) {
00248 
00249       size2 = size1 / 2;
00250 
00251       for( int j = 0; j < size1; j++ ) {        // index 1
00252             for( int i = 0; i < size1; i++ ) {
00253                ii = i * size;
00254                u[2*i] = wdata[2*(ii+j)];
00255                u[2*i+1] = wdata[2*(ii+j)+1];
00256             }
00257             for( int i = 0; i < size2; i++ ) {
00258                l = 2 * i;
00259                v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00260                v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00261                  + H11 * ( u[2*l+1] + u[2*l+3] );
00262                v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00263                  - H10 * ( u[2*l+1] + u[2*l+3] );
00264                v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00265             }
00266             for( int i = 0; i < size1; i++ ) {
00267                ii = i * size;
00268                wdata[2*(ii+j)] = v[2*i];
00269                wdata[2*(ii+j)+1] = v[2*i+1];
00270             }
00271       }
00272 
00273       for( int i = 0; i < size1; i++ ) {        // index 2
00274          ii = i * size;
00275             for( int j = 0; j < size1; j++ ) {
00276                u[2*j] = wdata[2*(ii+j)];
00277                u[2*j+1] = wdata[2*(ii+j)+1];
00278             }
00279             for( int j = 0; j < size2; j++ ) {
00280                l = 2 * j;
00281                v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00282                v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00283                  + H11 * ( u[2*l+1] + u[2*l+3] );
00284                v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00285                  - H10 * ( u[2*l+1] + u[2*l+3] );
00286                v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00287             }
00288             for( int j = 0; j < size1; j++ ) {
00289                wdata[2*(ii+j)] = v[2*j];
00290                wdata[2*(ii+j)+1] = v[2*j+1];
00291             }
00292       }
00293 
00294       size1 = size2;
00295 
00296    }
00297 
00298 #ifdef STORM_FWT_CCHECKUSAGE
00299    if (size1 < ns) return 2;
00300 #endif
00301 
00302    return 0;
00303 
00304 #endif
00305 
00306 } 

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

Definition at line 118 of file g1fwt2ds.cpp.

References dg1fwt2ds_(), H00, H10, H11, ii, j, sdata(), size1, v, and wdata().

00124   { 
00125 
00126 #ifdef STORM_USEF
00127 
00128    int iflag;
00129    dg1fwt2ds_( &Sizef2d, &ns, &size, sdata, wdata, &iflag );
00130    return iflag;
00131 
00132 #else
00133 
00134    int ii,l,size2;
00135    int size1 = size;
00136 
00137 #ifdef STORM_FWT_CCHECKUSAGE
00138    if ( size1 < ns ) return 1;
00139 #endif
00140 
00141    for( int i = 0; i < 2*size*size; i++ ) {
00142       wdata[i] = sdata[i];
00143    }
00144 
00145    if ( size1 == ns ) return 0;
00146 
00147    double *u = new double[2*Sizef2d];
00148    double *v = new double[2*Sizef2d];
00149 
00150    while ( size1 > ns ) {
00151 
00152       size2 = size1 / 2;
00153 
00154       for( int j = 0; j < size1; j++ ) {        // index 1
00155             for( int i = 0; i < size1; i++ ) {
00156                ii = i * size;
00157                u[2*i] = wdata[2*(ii+j)];
00158                u[2*i+1] = wdata[2*(ii+j)+1];
00159             }
00160             for( int i = 0; i < size2; i++ ) {
00161                l = 2 * i;
00162                v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00163                v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00164                  + H11 * ( u[2*l+1] + u[2*l+3] );
00165                v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00166                  - H10 * ( u[2*l+1] + u[2*l+3] );
00167                v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00168             }
00169             for( int i = 0; i < size1; i++ ) {
00170                ii = i * size;
00171                wdata[2*(ii+j)] = v[2*i];
00172                wdata[2*(ii+j)+1] = v[2*i+1];
00173             }
00174       }
00175 
00176       for( int i = 0; i < size1; i++ ) {        // index 2
00177          ii = i * size;
00178             for( int j = 0; j < size1; j++ ) {
00179                u[2*j] = wdata[2*(ii+j)];
00180                u[2*j+1] = wdata[2*(ii+j)+1];
00181             }
00182             for( int j = 0; j < size2; j++ ) {
00183                l = 2 * j;
00184                v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00185                v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00186                  + H11 * ( u[2*l+1] + u[2*l+3] );
00187                v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00188                  - H10 * ( u[2*l+1] + u[2*l+3] );
00189                v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00190             }
00191             for( int j = 0; j < size1; j++ ) {
00192                wdata[2*(ii+j)] = v[2*j];
00193                wdata[2*(ii+j)+1] = v[2*j+1];
00194             }
00195       }
00196 
00197       size1 = size2;
00198 
00199    }
00200    delete [] u;
00201    delete [] v;
00202 
00203 #ifdef STORM_FWT_CCHECKUSAGE
00204    if (size1 < ns) return 2;
00205 #endif
00206 
00207    return 0;
00208 
00209 #endif
00210 
00211 } 

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

Definition at line 21 of file g1fwt2ds.cpp.

References g1fwt2ds_(), H00, H10, H11, ii, j, sdata(), size1, v, and wdata().

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


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