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

rtmrartwt.cpp

Go to the documentation of this file.
00001 // rtmrartwt.cpp
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2000-2002 Brown Deer Technology, LLC.
00004 //                        All rights reserved.
00005 //////////////////////////////////////////////////////////////////////
00006 
00007 #ifdef STORM_USEF
00008 #include "rtmrartwt_.h"
00009 #include "drtmrartwt_.h"
00010 #include "irtmrartwt_.h"
00011 #include "artmrartwt_.h"
00012 #include "dartmrartwt_.h"
00013 #include "iartmrartwt_.h"
00014 #endif
00015 
00016 #include "stormdef.h"
00017 #define INVSQRT2 STORMDEF_MATHCONST_INVSQRT2
00018 
00019 void rtmrartwt( 
00020           const int& Msize,
00021           const int& mmax,
00022                 int& mrastep,
00023                 float* mracoef,
00024           const float& datavalue
00025 ) { 
00026 #ifdef STORM_USEF
00027    rtmrartwt_( &Msize, &mmax, &mrastep, mracoef, &datavalue );
00028 #else
00029    mrastep++;
00030    int mcycle = 0;
00031    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00032    float tmp=datavalue;
00033    int m = 1;
00034    float tmpold;
00035    while ( m <= mcycle ) {
00036       tmpold = mracoef[ 2*(m-1) ];
00037       mracoef[ 2*(m-1) ] = tmp;
00038       mracoef[ 2*m +1 ] = (tmpold-tmp) * INVSQRT2;
00039       tmp = (tmpold+tmp) * INVSQRT2;
00040       m++;
00041    }
00042    mracoef[ 2*(m-1) ] = tmp;
00043 #endif
00044 } 
00045 
00046 
00047 void rtmrartwt( 
00048           const int& Msize,
00049           const int& mmax,
00050                 int& mrastep,
00051                 double* mracoef,
00052           const double& datavalue
00053 ) {
00054 #ifdef STORM_USEF 
00055    drtmrartwt_( &Msize, &mmax, &mrastep, mracoef, &datavalue );
00056 #else
00057    mrastep++;
00058    int mcycle = 0;
00059    while ( (mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00060    double tmp = datavalue;
00061    int m = 1;
00062    double tmpold,tmps,tmpw;
00063    while ( m <= mcycle ) {
00064       tmpold = mracoef[ 2*(m-1) ];
00065       mracoef[ 2*(m-1) ] = tmp;
00066       mracoef[ 2*m + 1 ] = (tmpold-tmp) * INVSQRT2;
00067       tmp = (tmpold+tmp) * INVSQRT2;
00068       m++;
00069    }
00070    mracoef[ 2*(m-1) ] = tmp;
00071 #endif
00072 }
00073 
00074 
00075 void rtmrartwt( 
00076           const int& Msize,
00077           const int& mmax,
00078                 int& mrastep,
00079                 int* mracoef,
00080           const int& datavalue
00081 ) {
00082 #ifdef STORM_USEF 
00083    irtmrartwt_( &Msize, &mmax, &mrastep, mracoef, &datavalue );
00084 #else
00085    mrastep++;
00086    int mcycle = 0;
00087    while ( (mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00088    int tmp = datavalue;
00089    int m = 1;
00090    int tmpold,tmps,tmpw;
00091    while ( m <= mcycle ) {
00092       tmpold = mracoef[ 2*(m-1) ];
00093       mracoef[ 2*(m-1) ] = tmp;
00094       mracoef[ 2*m + 1 ] = tmpold-tmp;
00095       tmp = tmpold + tmp;
00096       if ( (tmp >= 0) || ((tmp & 0x00000001) != 0) ) {
00097          tmp = tmp/2;
00098       } else {
00099          tmp = tmp/2 -1;
00100       }
00101       m++;
00102    }
00103    mracoef[ 2*(m-1) ] = tmp;
00104 #endif
00105 }
00106 
00107 
00108 void rtmrartwt(
00109           const int& Asize,
00110           const int& Msize,
00111           const int& amax,
00112           const int& mmax,
00113                 int& mrastep,
00114                 float* mracoef,
00115           const float* datavalue
00116 ) {
00117 #ifdef STORM_USEF
00118    artmrartwt_( &Asize, &Msize, &amax, &mmax, &mrastep, mracoef, datavalue);
00119 #else
00120    mrastep++;
00121    int mcycle = 0;
00122    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00123    int m;
00124    float tmp,tmpold,tmps,tmpw;
00125    for(int a = 0; a <= amax; a++ ) {
00126       tmp = datavalue[a];
00127       m = 1;
00128       while ( m <= mcycle ) {
00129          tmpold = mracoef[ a*2*Msize + 2*(m-1) ];
00130          mracoef[ a*2*Msize + 2*(m-1) ] = tmp;
00131          mracoef[ a*2*Msize + 2*m + 1 ] = (tmpold-tmp) * INVSQRT2;
00132          tmp = (tmpold+tmp) * INVSQRT2;
00133          m++;
00134       }
00135       mracoef[ a*2*Msize + 2*(m-1) ] = tmp;
00136    }
00137 #endif
00138 }
00139 
00140 
00141 void rtmrartwt(
00142           const int& Asize,
00143           const int& Msize,
00144           const int& amax,
00145           const int& mmax,
00146                 int& mrastep,
00147                 double* mracoef,
00148           const double* datavalue
00149 ) {
00150 #ifdef STORM_USEF
00151    dartmrartwt_( &Asize, &Msize, &amax, &mmax, &mrastep, mracoef, datavalue );
00152 #else
00153    mrastep++;
00154    int mcycle = 0;
00155    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00156    int m;
00157    double tmp,tmpold,tmps,tmpw;
00158    for(int a = 0; a <= amax; a++) {
00159       tmp = datavalue[a];
00160       m = 1;
00161       while ( m <= mcycle ) {
00162          tmpold = mracoef[ a*2*Msize + 2*(m-1) ];
00163          mracoef[ a*2*Msize + 2*(m-1) ] = tmp;
00164          mracoef[ a*2*Msize + 2*m + 1 ] = (tmpold-tmp) * INVSQRT2;
00165          tmp = (tmpold+tmp) * INVSQRT2;
00166          m++;
00167       }
00168       mracoef[ a*2*Msize + 2*(m-1) ] = tmp;
00169    }
00170 #endif
00171 }
00172 
00173  
00174 void rtmrartwt(
00175           const int& Asize,
00176           const int& Msize,
00177           const int& amax,
00178           const int& mmax,
00179                 int& mrastep,
00180                 int* mracoef,
00181           const int* datavalue
00182 ) {
00183 #ifdef STORM_USEF
00184    iartmrartwt_( &Asize, &Msize, &amax, &mmax, &mrastep, mracoef, datavalue );
00185 #else
00186    mrastep++;
00187    int mcycle = 0;
00188    while ( ( mrastep & (1<<mcycle) ) && ( mcycle < mmax ) ) { mcycle++; }
00189    int m;
00190    int tmp,tmpold;
00191    for(int a = 0; a <= amax; a++) {
00192       tmp = datavalue[a];
00193       m = 1;
00194       while ( m <= mcycle ) {
00195          tmpold = mracoef[ a*2*Msize + 2*(m-1) ];
00196          mracoef[ a*2*Msize + 2*(m-1) ] = tmp;
00197          mracoef[ a*2*Msize + 2*m + 1 ] = tmpold-tmp;
00198          tmp = tmpold + tmp;
00199          if ( (tmp >= 0) || ((tmp & 0x00000001) != 0) ) {
00200             tmp = tmp/2;
00201          } else {
00202             tmp = tmp/2-1;
00203          }
00204          m++;
00205       }
00206       mracoef[ a*2*Msize + 2*(m-1) ] = tmp;
00207    }
00208 #endif
00209 }
00210  

Generated on Mon May 31 21:38:52 2004 for SR2k4 Assembler by doxygen 1.3.6