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

rtrsmrartrswt.h File Reference

Go to the source code of this file.

Functions

void rtrsmrartrswt (const int &Asize, const int &Msize, const int &amax, const int &mmax, int &mrastep, int *mracoef, int *mracoefrs, const int *datavalue)
void rtrsmrartrswt (const int &Asize, const int &Msize, const int &amax, const int &mmax, int &mrastep, double *mracoef, double *mracoefrs, const double *datavalue)
void rtrsmrartrswt (const int &Asize, const int &Msize, const int &amax, const int &mmax, int &mrastep, float *mracoef, float *mracoefrs, const float *datavalue)
void rtrsmrartrswt (const int &Msize, const int &mmax, int &mrastep, int *mracoef, int *mracoefrs, const int &datavalue)
void rtrsmrartrswt (const int &Msize, const int &mmax, int &mrastep, double *mracoef, double *mracoefrs, const double &datavalue)
void rtrsmrartrswt (const int &Msize, const int &mmax, int &mrastep, float *mracoef, float *mracoefrs, const float &datavalue)


Function Documentation

void rtrsmrartrswt const int Asize,
const int Msize,
const int amax,
const int mmax,
int mrastep,
int mracoef,
int mracoefrs,
const int datavalue
 

Definition at line 260 of file rtrsmrartrswt.cpp.

References iartrsmrartrswt_().

Referenced by Rtrsmra< Data_t, scalar >.rtwt(), and Rtrsmra< Data_t, array >.rtwt().

00270 {
00271 #ifdef STORM_USEF 
00272    iartrsmrartrswt_(
00273      &Asize, &Msize,
00274      &amax, &mmax,
00275      &mrastep, mracoef, mracoefrs,
00276      datavalue
00277    );
00278 #else
00279    mrastep++;
00280    int mcycle = 0;
00281    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00282    int mcyclers = mcycle+1;
00283    if ( ( mrastep < (1<<mcyclers) ) || ( mcyclers > mmax ) ) { mcyclers = 0; }
00284    for( int a = 0; a <= amax; a++) {
00285       int tmp = datavalue[a];
00286       int m = 1;
00287       int tmpold,tmprs;
00288       while ( m <= mcycle ) {
00289          tmpold = mracoef[ Msize*2*a + 2*(m-1) ];
00290          mracoef[ Msize*2*a + 2*(m-1) ] = tmp;
00291          mracoef[ Msize*2*a + 2*m + 1 ] = tmpold-tmp;
00292          tmp = tmpold+tmp;
00293          if ( (tmp >= 0) || ((tmp & 0x00000001) != 0 ) ) {
00294             tmp = tmp/2;
00295          } else {
00296             tmp = tmp/2-1;
00297          }
00298          m++;
00299       }
00300       if ( m == mcyclers ) {
00301          tmpold = mracoef[ Msize*2*a + 2*(m-1) ];
00302          mracoefrs[ Msize*2*a + 2*m + 1 ] = tmpold-tmp;
00303          tmprs = tmpold+tmp;
00304          if ( (tmprs >= 0) || ((tmprs & 0x00000001) != 0 ) ) {
00305             tmprs = tmprs/2;
00306          } else {
00307             tmprs = tmprs/2-1;
00308          }
00309          mracoefrs[ Msize*2*a + 2*m ] = tmprs;
00310       }
00311       mracoef[ Msize*2*a + 2*(m-1) ] = tmp;
00312    }
00313 #endif
00314 }

void rtrsmrartrswt const int Asize,
const int Msize,
const int amax,
const int mmax,
int mrastep,
double *  mracoef,
double *  mracoefrs,
const double *  datavalue
 

Definition at line 210 of file rtrsmrartrswt.cpp.

References dartrsmrartrswt_(), and INVSQRT2.

00220 {
00221 #ifdef STORM_USEF 
00222    dartrsmrartrswt_(
00223      &Asize, &Msize,
00224      &amax, &mmax,
00225      &mrastep, mracoef, mracoefrs,
00226      datavalue
00227    );
00228 #else
00229    mrastep++;
00230    int mcycle = 0;
00231    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00232    int mcyclers = mcycle+1;
00233    if ( ( mrastep < (1<<mcyclers) ) || ( mcyclers > mmax ) ) { mcyclers = 0; }
00234    for( int a = 0; a <= amax; a++) {
00235       double tmp = datavalue[a];
00236       int m = 1;
00237       double tmpold,tmps,tmpw;
00238       while ( m <= mcycle ) {
00239          tmpold = mracoef[ Msize*2*a + 2*(m-1) ];
00240          tmps = (tmpold+tmp) * INVSQRT2;
00241          tmpw = (tmpold-tmp) * INVSQRT2;
00242          mracoef[ Msize*2*a + 2*(m-1) ] = tmp;
00243          mracoef[ Msize*2*a + 2*m + 1 ] = tmpw;
00244          tmp = tmps;
00245          m++;
00246       }
00247       if ( m == mcyclers ) {
00248          tmpold = mracoef[ Msize*2*a + 2*(m-1) ];
00249          tmps = (tmpold+tmp) * INVSQRT2;
00250          tmpw = (tmpold-tmp) * INVSQRT2;
00251          mracoefrs[ Msize*2*a + 2*m ] = tmps;
00252          mracoefrs[ Msize*2*a + 2*m + 1 ] = tmpw;
00253       }
00254       mracoef[ Msize*2*a + 2*(m-1) ] = tmp;
00255    }
00256 #endif
00257 }

void rtrsmrartrswt const int Asize,
const int Msize,
const int amax,
const int mmax,
int mrastep,
float *  mracoef,
float *  mracoefrs,
const float *  datavalue
 

Definition at line 160 of file rtrsmrartrswt.cpp.

References artrsmrartrswt_(), and INVSQRT2.

00170 {
00171 #ifdef STORM_USEF 
00172    artrsmrartrswt_(
00173      &Asize, &Msize,
00174      &amax, &mmax,
00175      &mrastep, mracoef, mracoefrs,
00176      datavalue
00177    );
00178 #else
00179    mrastep++;
00180    int mcycle = 0;
00181    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00182    int mcyclers = mcycle + 1;
00183    if ( ( mrastep < (1<<mcyclers) ) || ( mcyclers > mmax ) ) { mcyclers = 0; }
00184    for( int a=0; a <= amax; a++ ) {
00185       float tmp = datavalue[a];
00186       int m = 1;
00187       float tmpold,tmps,tmpw;
00188       while ( m <= mcycle ) {
00189          tmpold = mracoef[ Msize*2*a + 2*(m-1) ];
00190          tmps = (tmpold+tmp) * INVSQRT2;
00191          tmpw = (tmpold-tmp) * INVSQRT2;
00192          mracoef[ Msize*2*a + 2*(m-1) ] = tmp;
00193          mracoef[ Msize*2*a + 2*m + 1 ] = tmpw;
00194          tmp = tmps;
00195          m++;
00196       }
00197       if ( m == mcyclers ) {
00198          tmpold = mracoef[ Msize*2*a + 2*(m-1) ];
00199          tmps = (tmpold+tmp) * INVSQRT2;
00200          tmpw = (tmpold-tmp) * INVSQRT2;
00201          mracoefrs[ Msize*2*a + 2*m ] = tmps;
00202          mracoefrs[ Msize*2*a + 2*m + 1 ] = tmpw;
00203       }
00204       mracoef[ Msize*2*a + 2*(m-1) ] = tmp;
00205    }
00206 #endif
00207 }

void rtrsmrartrswt const int Msize,
const int mmax,
int mrastep,
int mracoef,
int mracoefrs,
const int datavalue
 

Definition at line 112 of file rtrsmrartrswt.cpp.

References irtrsmrartrswt_().

00120 { 
00121 #ifdef STORM_USEF 
00122    irtrsmrartrswt_( &Msize, &mmax, &mrastep, mracoef, mracoefrs, &datavalue );
00123 #else
00124    mrastep++;
00125    int mcycle = 0;
00126    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00127    int mcyclers = mcycle + 1;
00128    if ( ( mrastep < (1<<mcyclers) ) || ( mcyclers > mmax ) ) { mcyclers = 0; }
00129    int tmp = datavalue;
00130    int m=1;
00131    int tmpold,tmprs;
00132    while ( m <= mcycle ) {
00133       tmpold = mracoef[ 2*(m-1) ];
00134       mracoef[ 2*(m-1) ] = tmp;
00135       mracoef[ 2*m + 1 ] = tmpold-tmp;
00136       tmp = tmpold+tmp;
00137       if ( (tmp >= 0) || ((tmp & 0x00000001) != 0 ) ) {
00138          tmp = tmp/2;
00139       } else {
00140          tmp = tmp/2-1;
00141       }
00142       m++;
00143    }
00144    if ( m == mcyclers ) {
00145       tmpold = mracoef[ 2*(m-1) ];
00146       mracoefrs[ 2*m + 1 ] = tmpold-tmp;
00147       tmprs = tmpold+tmp;
00148       if ( (tmprs >= 0) || ((tmprs & 0x00000001) != 0 ) ) {
00149          tmprs = tmprs/2;
00150       } else {
00151          tmprs = tmprs/2-1;
00152       }
00153       mracoefrs[ 2*m ] = tmprs;
00154    }
00155    mracoef[ 2*(m-1) ]=tmp;
00156 #endif
00157 }

void rtrsmrartrswt const int Msize,
const int mmax,
int mrastep,
double *  mracoef,
double *  mracoefrs,
const double &  datavalue
 

Definition at line 66 of file rtrsmrartrswt.cpp.

References drtrsmrartrswt_(), and INVSQRT2.

00074 { 
00075 #ifdef STORM_USEF 
00076    drtrsmrartrswt_( 
00077      &Msize, 
00078      &mmax, 
00079      &mrastep, mracoef, mracoefrs,
00080      &datavalue 
00081    );
00082 #else
00083    mrastep++;
00084    int mcycle = 0;
00085    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00086    int mcyclers = mcycle + 1;
00087    if ( ( mrastep < (1<<mcyclers) ) || ( mcyclers > mmax ) ) { mcyclers = 0; }
00088    double tmp = datavalue;
00089    int m=1;
00090    double tmpold,tmps,tmpw;
00091    while ( m <= mcycle ) {
00092       tmpold = mracoef[ 2*(m-1) ];
00093       tmps = (tmpold+tmp) * INVSQRT2;
00094       tmpw = (tmpold-tmp) * INVSQRT2;
00095       mracoef[ 2*(m-1) ] = tmp;
00096       mracoef[ 2*m + 1 ] = tmpw;
00097       tmp = tmps;
00098       m++;
00099    }
00100    if ( m == mcyclers ) {
00101       tmpold = mracoef[ 2*(m-1) ];
00102       tmps = (tmpold+tmp) * INVSQRT2;
00103       tmpw = (tmpold-tmp) * INVSQRT2;
00104       mracoefrs[ 2*m ] = tmps;
00105       mracoefrs[ 2*m + 1 ] = tmpw;
00106    }
00107    mracoef[ 2*(m-1) ]=tmp;
00108 #endif
00109 }

void rtrsmrartrswt const int Msize,
const int mmax,
int mrastep,
float *  mracoef,
float *  mracoefrs,
const float &  datavalue
 

Definition at line 19 of file rtrsmrartrswt.cpp.

References INVSQRT2, and rtrsmrartrswt_().

00027 {
00028 #ifdef STORM_USEF 
00029    rtrsmrartrswt_( 
00030      &Msize, 
00031      &mmax, 
00032      &mrastep, mracoef, mracoefrs,
00033      &datavalue 
00034    );
00035 #else
00036    mrastep++;
00037    int mcycle = 0;
00038    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00039    int mcyclers = mcycle + 1;
00040    if ( ( mrastep < (1<<mcyclers) ) || ( mcyclers > mmax ) ) { mcyclers = 0; }
00041    float tmp = datavalue;
00042    int m=1;
00043    float tmpold,tmps,tmpw;
00044    while ( m <= mcycle ) {
00045       tmpold = mracoef[ 2*(m-1) ];
00046       tmps = (tmpold+tmp) * INVSQRT2;
00047       tmpw = (tmpold-tmp) * INVSQRT2;
00048       mracoef[ 2*(m-1) ] = tmp;
00049       mracoef[ 2*m + 1 ] = tmpw;
00050       tmp=tmps;
00051       m++;
00052    }
00053    if ( m == mcyclers ) {
00054       tmpold = mracoef[ 2*(m-1) ];
00055       tmps = (tmpold+tmp) * INVSQRT2;
00056       tmpw = (tmpold-tmp) * INVSQRT2;
00057       mracoefrs[ 2*m ] = tmps;
00058       mracoefrs[ 2*m + 1 ] = tmpw;
00059    }
00060    mracoef[ 2*(m-1) ] = tmp;
00061 #endif
00062 
00063 } 


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