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

Rtmra< Data_t, array > Class Template Reference

#include <Rtmra_Data_t_array.h>

Collaboration diagram for Rtmra< Data_t, array >:

Collaboration graph
[legend]

Public Types

typedef Data_t DataType

Public Member Functions

int amax ()
void assign (const int a0, const int a1, const Data_t *data)
void assign (const Data_t data)
virtual Data_t ave (const int a, const int m)
virtual Data_t chg (const int a, const int m)
virtual void clear ()
virtual int imcycle ()
bool isvalid (const int m)
virtual int mcycle ()
int mmax ()
void mrastep (const int mrastep)
int mrastep ()
int operator++ (int)
int operator++ ()
int operator-- (int)
int operator-- ()
Data_t & operator[] (const int a)
virtual void remalloc (const int asize=1, const int msize=8)
virtual void rtiwt ()
virtual void rtjiwt ()
 Rtmra (const int asize=1, const int msize=8)
virtual void rtwt ()
virtual void scal (const int a, const int m, Data_t scalcoef)
virtual Data_t scal (const int a, const int m)
virtual void wav (const int a, const int m, Data_t wavcoef)
virtual Data_t wav (const int a, const int m)
virtual ~Rtmra ()

Static Public Attributes

const int ArrayDim = 1

Protected Attributes

int _amax
int _Asize
Data_t * _data
int _mmax
Data_t * _mracoef
int _mrastep
int _Msize

template<typename Data_t>
class Rtmra< Data_t, array >


Member Typedef Documentation

template<typename Data_t>
typedef Data_t Rtmra< Data_t, array >.DataType
 

Definition at line 26 of file Rtmra_Data_t_array.h.


Constructor & Destructor Documentation

template<typename Data_t>
Rtmra< Data_t, array >::~Rtmra  )  [virtual]
 

Definition at line 80 of file Rtmra_Data_t_array.h.

00081 {
00082    delete [] _mracoef; _mracoef = 0;
00083    delete [] _data; _data = 0;
00084 }


Member Function Documentation

template<typename Data_t>
int Rtmra< Data_t, array >.amax  ) 
 

Definition at line 43 of file Rtmra_Data_t_array.h.

00043 { return _amax; }

template<typename Data_t>
void Rtmra< Data_t, array >::assign const int  a0,
const int  a1,
const Data_t *  data
 

Definition at line 119 of file Rtmra_Data_t_array.h.

00124 { 
00125    if ( ( a0 <= a1 ) && ( a0 >= 0 ) && ( a0 <= _amax ) 
00126      && ( a1 >= 0 ) && ( a1 <= _amax ) ) {
00127       for( int a = a0; a <= a1; a++) { _data[a] = data[a]; }
00128    }
00129 }

template<typename Data_t>
void Rtmra< Data_t, array >::assign const Data_t  data  ) 
 

Definition at line 111 of file Rtmra_Data_t_array.h.

00112 { 
00113    for( int a = 0; a <= _amax; a++ ) { 
00114       _data[a] = data; 
00115    }
00116 }

template<typename Data_t>
Data_t Rtmra< Data_t, array >::ave const int  a,
const int  m
[virtual]
 

Definition at line 291 of file Rtmra_Data_t_array.h.

References INVSQRT2, and rtmrascala().

00292 {
00293    Data_t scala;
00294 #ifdef STORM_USEC
00295    rtmrascala( 
00296      _Asize, _Msize, 
00297      _amax, _mmax, 
00298      _mrastep, _mracoef, 
00299      a, m, scala
00300    );
00301 #else
00302 //   if ( ( a >= 0 ) && ( a <= _amax ) && ( m >= 0 ) && ( m <= _mmax ) ) { 
00303       scala = _mracoef[ _Msize*2*a + 2*m ] * pow(INVSQRT2,m);
00304 //   } else { scala=1.0/0; }
00305 #endif
00306    return scala;
00307 }

template<typename Data_t>
Data_t Rtmra< Data_t, array >::chg const int  a,
const int  m
[virtual]
 

Definition at line 310 of file Rtmra_Data_t_array.h.

References INVSQRT2, and rtmrawavd().

00311 {
00312    Data_t wavd;
00313 #ifdef STORM_USEC
00314    rtmrawavd( 
00315      _Asize, _Msize, 
00316      _amax, _mmax, 
00317      _mrastep, _mracoef, 
00318      a, m, wavd
00319    );
00320 #else
00321 //   if ( ( a >= 0 ) && ( a <= _amax ) && ( m >= 0 ) && ( m <= _mmax ) ) {
00322       wavd = _mracoef[ _Msize*2*a + 2*m + 1 ] * pow(INVSQRT2,m);
00323 //   } 
00324 //   else { 
00325 //      wavd = 1.0/0; 
00326 //   }
00327 #endif
00328    return wavd;
00329 }

template<typename Data_t>
void Rtmra< Data_t, array >::clear  )  [virtual]
 

Definition at line 103 of file Rtmra_Data_t_array.h.

00104 {
00105    _mrastep = -1;
00106    for( int i = 0; i < _Asize*_Msize*2; i++ ) { _mracoef[i] = 0; }
00107    for( int i = 0; i < _Asize; i++ ) { _data[i] = 0; }
00108 }

template<typename Data_t>
int Rtmra< Data_t, array >::imcycle  )  [virtual]
 

Definition at line 332 of file Rtmra_Data_t_array.h.

References rtmraimcycle().

00333 {
00334    int imcycle=0;
00335 #ifdef STORM_USEC
00336    rtmraimcycle( _Msize, _mmax, _mrastep, imcycle);
00337 #else
00338    int itmp = (1<<_mmax) - 1;
00339    itmp = itmp - ( itmp & ( _mrastep +1 ) );
00340    while ( ( itmp & (1<<imcycle) ) && ( imcycle < _mmax ) ) { imcycle++; }
00341 #endif
00342    return imcycle;
00343 }

template<typename Data_t>
bool Rtmra< Data_t, array >.isvalid const int  m  ) 
 

Definition at line 48 of file Rtmra_Data_t_array.h.

00048 { return ( m < mcycle() ) ; }

template<typename Data_t>
int Rtmra< Data_t, array >::mcycle  )  [virtual]
 

Definition at line 235 of file Rtmra_Data_t_array.h.

References rtmramcycle().

00236 {
00237    int mcycle = 0;
00238 #ifdef STORM_USEC
00239    rtmramcycle( _Msize, _mmax, _mrastep, mcycle);
00240 #else
00241    while ( ( _mrastep & (1<<mcycle) ) && ( mcycle < _mmax ) ) { mcycle++; }
00242 #endif
00243    return mcycle;
00244 }

template<typename Data_t>
int Rtmra< Data_t, array >.mmax  ) 
 

Definition at line 44 of file Rtmra_Data_t_array.h.

00044 { return _mmax; }

template<typename Data_t>
void Rtmra< Data_t, array >.mrastep const int  mrastep  ) 
 

Definition at line 46 of file Rtmra_Data_t_array.h.

00046 { _mrastep = mrastep; } //DEBUG

template<typename Data_t>
int Rtmra< Data_t, array >.mrastep  ) 
 

Definition at line 45 of file Rtmra_Data_t_array.h.

00045 { return _mrastep; }

template<typename Data_t>
int Rtmra< Data_t, array >.operator++ int   ) 
 

Definition at line 40 of file Rtmra_Data_t_array.h.

00040 { rtwt(); return 0; }

template<typename Data_t>
int Rtmra< Data_t, array >.operator++  ) 
 

Definition at line 39 of file Rtmra_Data_t_array.h.

00039 { rtwt(); return 0; }

template<typename Data_t>
int Rtmra< Data_t, array >.operator-- int   ) 
 

Definition at line 42 of file Rtmra_Data_t_array.h.

00042 { rtiwt(); return 0; }

template<typename Data_t>
int Rtmra< Data_t, array >.operator--  ) 
 

Definition at line 41 of file Rtmra_Data_t_array.h.

00041 { rtiwt(); return 0; }

template<typename Data_t>
Data_t& Rtmra< Data_t, array >.operator[] const int  a  ) 
 

Definition at line 35 of file Rtmra_Data_t_array.h.

00035 { return _data[a]; }

template<typename Data_t>
void Rtmra< Data_t, array >::remalloc const int  asize = 1,
const int  msize = 8
[virtual]
 

Definition at line 87 of file Rtmra_Data_t_array.h.

00088 {
00089    _Asize = asize;
00090    _Msize = msize;
00091    _amax = asize-1;
00092    _mmax = msize-1;
00093    _mrastep = -1;
00094    if (_mracoef) delete [] _mracoef; _mracoef = 0;
00095    if (_data) delete [] _data; _data = 0;
00096    _mracoef = new Data_t[ _Asize*_Msize*2 ];
00097    _data = new Data_t[ _Asize ];
00098    for( int i = 0; i < _Asize*_Msize*2; i++ ) { _mracoef[i] = 0; }
00099    for( int i = 0; i < _Asize; i++) { _data[i] = 0; }
00100 }

template<typename Data_t>
void Rtmra< Data_t, array >::rtiwt  )  [virtual]
 

Definition at line 163 of file Rtmra_Data_t_array.h.

References INVSQRT2, and rtmrartiwt().

00164 {
00165 #ifdef STORM_USEC
00166    rtmrartiwt( 
00167      _Asize, _Msize, 
00168      _amax, _mmax,
00169      _mrastep, _mracoef, 
00170      _data 
00171    );
00172 #else
00173    _mrastep++;
00174    int itmp = ( 1 << _mmax) - 1;
00175    itmp = itmp - ( itmp & _mrastep );
00176    int imcycle = 0;
00177    while ( ( itmp & ( 1 << imcycle ) ) && ( imcycle < _mmax ) ) { imcycle++; }
00178    int m;
00179    for(int a = 0; a <= _amax; a++ ) {
00180       m = imcycle;
00181       if ( m < _mmax ) {
00182          _mracoef[ _Msize*2*a + 2*m ] = 
00183            ( _mracoef[ _Msize*2*a + 2*(m+1) ]
00184            - _mracoef[ _Msize*2*a + 2*(m+1) + 1 ] ) * INVSQRT2;
00185       }
00186       m--;
00187       while ( m >= 0 ) {
00188         _mracoef[ _Msize*2*a + 2*m ] = 
00189           ( _mracoef[ _Msize*2*a + 2*(m+1) ]
00190           + _mracoef[ _Msize*2*a + 2*(m+1) + 1 ] ) * INVSQRT2;
00191         m--;
00192       }
00193       _data[a] = _mracoef[a];
00194    }
00195 #endif
00196 }

template<typename Data_t>
void Rtmra< Data_t, array >::rtjiwt  )  [virtual]
 

Definition at line 199 of file Rtmra_Data_t_array.h.

References rtmrartjiwt().

00200 {
00201 //#ifdef STORM_USEC
00202    rtmrartjiwt( 
00203      _Asize, _Msize, 
00204      _amax, _mmax,
00205      _mrastep, _mracoef, 
00206      _data 
00207    );
00208 //#else
00209 //   _mrastep++;
00210 //   int itmp = ( 1 << _mmax) - 1;
00211 //   itmp = itmp - ( itmp & _mrastep );
00212 //   int imcycle = 0;
00213 //   while ( ( itmp & ( 1 << imcycle ) ) && ( imcycle < _mmax ) ) { imcycle++; }
00214 //   int m;
00215 //   for(int a = 0; a <= _amax; a++ ) {
00216 //      m = imcycle;
00217 //      if ( m < _mmax ) {
00218 //         _mracoef[ _Msize*2*a + 2*m ] = 
00219 //           ( _mracoef[ _Msize*2*a + 2*(m+1) ]
00220 //         - _mracoef[ _Msize*2*a + 2*(m+1) + 1 ] ) * INVSQRT2;
00221 //      }
00222 //      m--;
00223 //      while ( m >= 0 ) {
00224 //      _mracoef[ _Msize*2*a + 2*m ] = 
00225 //          ( _mracoef[ _Msize*2*a + 2*(m+1) ]
00226 //        + _mracoef[ _Msize*2*a + 2*(m+1) + 1 ] ) * INVSQRT2;
00227 //      m--;
00228 //      }
00229 //      _data[a] = _mracoef[a];
00230 //   }
00231 //#endif
00232 }

template<typename Data_t>
Rtmra< Data_t, array >::Rtmra const int  asize = 1,
const int  msize = 8
 

Definition at line 70 of file Rtmra_Data_t_array.h.

00071   : _Asize(asize), _Msize(msize), _amax(asize-1), _mmax(msize-1), _mrastep(-1)
00072 {
00073    _mracoef = new Data_t[ _Asize*_Msize*2 ];
00074    _data = new Data_t[ _Asize ];
00075    for( int i = 0; i< _Asize*_Msize*2; i++) { _mracoef[i] = 0; }
00076    for( int i = 0; i< _Asize; i++) { _data[i] = 0; }
00077 }

template<typename Data_t>
void Rtmra< Data_t, array >::rtwt  )  [virtual]
 

Definition at line 132 of file Rtmra_Data_t_array.h.

References INVSQRT2, and rtmrartwt().

00133 {
00134 #ifdef STORM_USEC
00135    rtmrartwt( 
00136      _Asize, _Msize, 
00137      _amax, _mmax, 
00138      _mrastep, _mracoef, 
00139      _data 
00140    );
00141 #else
00142    _mrastep++;
00143    int mcycle = 0;
00144    while ( ( _mrastep & (1 << mcycle) ) && ( mcycle < _mmax ) ) { mcycle++; }
00145    int m;
00146    Data_t tmp,tmpold;
00147    for(int a = 0; a <= _amax; a++) {
00148       tmp = _data[a];
00149       m = 1;
00150       while ( m <= mcycle ) {
00151          tmpold = _mracoef[ _Msize*2*a + 2*(m-1) ];
00152          _mracoef[ _Msize*2*a + 2*(m-1) ] = tmp;
00153          _mracoef[ _Msize*2*a + 2*m + 1 ] = (tmpold-tmp) * INVSQRT2;
00154          tmp = (tmpold+tmp) * INVSQRT2;
00155          m++;
00156       }
00157       _mracoef[ _Msize*2*a + 2*(m-1) ] = tmp;
00158    }
00159 #endif
00160 }

template<typename Data_t>
void Rtmra< Data_t, array >::scal const int  a,
const int  m,
Data_t  scalcoef
[virtual]
 

Definition at line 347 of file Rtmra_Data_t_array.h.

References rtmraputscalcoef().

00348 {
00349 #ifdef STORM_USEC
00350    rtmraputscalcoef( 
00351      _Asize, _Msize, 
00352      _amax, _mmax, 
00353      _mrastep, _mracoef, 
00354      a, m, scalcoef
00355    );
00356 #else
00357 //   if ( ( a >= 0 ) && ( a <= _amax ) && ( m >= 0 ) && (m <= _mmax ) ) { 
00358       _mracoef[ _Msize*2*a + 2*m ] = scalcoef; 
00359 //   }
00360 #endif
00361 }

template<typename Data_t>
Data_t Rtmra< Data_t, array >::scal const int  a,
const int  m
[virtual]
 

Definition at line 247 of file Rtmra_Data_t_array.h.

References rtmrascalcoef().

00248 {
00249    Data_t scalcoef;
00250 #ifdef STORM_USEC
00251    rtmrascalcoef( 
00252      _Asize, _Msize, 
00253      _amax, _mmax, 
00254      _mrastep, _mracoef, 
00255      a, m, scalcoef
00256    );
00257 #else
00258 //   if ( ( a >= 0 ) && ( a <= _amax ) && ( m >= 0 ) && ( m <= _mmax ) ) { 
00259       scalcoef = _mracoef[ _Msize*2*a + 2*m ]; 
00260 //   } 
00261 //   else { 
00262 //      scalcoef = 1.0/0; 
00263 //   }
00264 #endif
00265    return scalcoef;
00266 }

template<typename Data_t>
void Rtmra< Data_t, array >::wav const int  a,
const int  m,
Data_t  wavcoef
[virtual]
 

Definition at line 365 of file Rtmra_Data_t_array.h.

References rtmraputwavcoef().

00366 {
00367 #ifdef STORM_USEC
00368    rtmraputwavcoef( 
00369      _Asize, _Msize, 
00370      _amax, _mmax, 
00371      _mrastep, _mracoef, 
00372      a, m, wavcoef
00373    );
00374 #else
00375 //   if ( ( a >= 0 ) && ( a <= _amax ) && ( m >= 0 ) && ( m <= _mmax ) ) { 
00376       _mracoef[ _Msize*2*a + 2*m + 1] = wavcoef; 
00377 //   }
00378 #endif
00379 }

template<typename Data_t>
Data_t Rtmra< Data_t, array >::wav const int  a,
const int  m
[virtual]
 

Definition at line 269 of file Rtmra_Data_t_array.h.

References rtmrawavcoef().

00270 {
00271    Data_t wavcoef;
00272 #ifdef STORM_USEC
00273    rtmrawavcoef( 
00274      _Asize, _Msize, 
00275      _amax, _mmax, 
00276      _mrastep, _mracoef, 
00277      a, m, wavcoef
00278    );
00279 #else
00280 //   if ( ( a >= 0 ) && ( a <= _amax ) && ( m >= 0 ) && ( m <= _mmax) ) {
00281       wavcoef = _mracoef[ _Msize*2*a +  2*m + 1 ];
00282 //   } 
00283 //   else { 
00284 //      wavcoef = 1.0/0; 
00285 //   }
00286 #endif
00287    return wavcoef;
00288 }


Field Documentation

template<typename Data_t>
int Rtmra< Data_t, array >._amax [protected]
 

Definition at line 61 of file Rtmra_Data_t_array.h.

template<typename Data_t>
int Rtmra< Data_t, array >._Asize [protected]
 

Definition at line 59 of file Rtmra_Data_t_array.h.

template<typename Data_t>
Data_t* Rtmra< Data_t, array >._data [protected]
 

Definition at line 65 of file Rtmra_Data_t_array.h.

template<typename Data_t>
int Rtmra< Data_t, array >._mmax [protected]
 

Definition at line 62 of file Rtmra_Data_t_array.h.

template<typename Data_t>
Data_t* Rtmra< Data_t, array >._mracoef [protected]
 

Definition at line 64 of file Rtmra_Data_t_array.h.

template<typename Data_t>
int Rtmra< Data_t, array >._mrastep [protected]
 

Definition at line 63 of file Rtmra_Data_t_array.h.

template<typename Data_t>
int Rtmra< Data_t, array >._Msize [protected]
 

Definition at line 60 of file Rtmra_Data_t_array.h.

template<typename Data_t>
const int Rtmra< Data_t, array >.ArrayDim = 1 [static]
 

Definition at line 27 of file Rtmra_Data_t_array.h.


The documentation for this class was generated from the following file:
Generated on Mon May 31 21:41:38 2004 for SR2k4 Assembler by doxygen 1.3.6