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

rtmrartjiwt.cpp

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

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