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

rtmrartiwt.cpp File Reference

#include <iostream>
#include "stormdef.h"

Include dependency graph for rtmrartiwt.cpp:

Include dependency graph

Go to the source code of this file.

Defines

#define INVSQRT2   STORMDEF_MATHCONST_INVSQRT2

Functions

void rtmrartiwt (const int &Asize, const int &Msize, const int &amax, const int &mmax, int &mrastep, int *mracoef, int *data)
void rtmrartiwt (const int &Asize, const int &Msize, const int &amax, const int &mmax, int &mrastep, double *mracoef, double *data)
void rtmrartiwt (const int &Asize, const int &Msize, const int &amax, const int &mmax, int &mrastep, float *mracoef, float *data)
void rtmrartiwt (const int &Msize, const int &mmax, int &mrastep, int *mracoef, int &data)
void rtmrartiwt (const int &Msize, const int &mmax, int &mrastep, double *mracoef, double &data)
void rtmrartiwt (const int &Msize, const int &mmax, int &mrastep, float *mracoef, float &data)


Define Documentation

#define INVSQRT2   STORMDEF_MATHCONST_INVSQRT2
 

Definition at line 19 of file rtmrartiwt.cpp.


Function Documentation

void rtmrartiwt const int Asize,
const int Msize,
const int amax,
const int mmax,
int mrastep,
int mracoef,
int data
 

Definition at line 190 of file rtmrartiwt.cpp.

References iartmrartiwt_().

Referenced by Rtmra< Data_t, array >.rtiwt(), and Rtmra< Data_t, scalar >.rtiwt().

00198   { 
00199 #ifdef STORM_USEF
00200    iartmrartiwt_( &Asize,&Msize, &amax,&mmax, &mrastep, mracoef, data );
00201 #else
00202    mrastep++;
00203    int itmp = (1<<mmax) - 1;
00204    itmp = itmp - ( itmp & mrastep );
00205    int imcycle=0;
00206    while ( ( itmp & (1<<imcycle) ) && ( imcycle < mmax ) ) { imcycle++; }
00207    int m;
00208    for(int a = 0; a <= amax; a++ ) {
00209       m=imcycle;
00210       if ( m < mmax ) { //right
00211          itmp = mracoef[ a*2*Msize + 2*(m+1) + 1 ];
00212          if ( (itmp >= 0) || ((itmp & 0x00000001) == 0) ) {
00213             mracoef[a*2*Msize + 2*m]=mracoef[a*2*Msize + 2*(m+1)] - itmp/2;
00214          } else {
00215             mracoef[a*2*Msize + 2*m]=mracoef[a*2*Msize + 2*(m+1)] - (itmp/2-1);
00216          }
00217       }
00218       m--;
00219       while ( m >= 0 ) { //left
00220          itmp = mracoef[ a*2*Msize + 2*(m+1) + 1 ] + 1;
00221          if ( (itmp >= 0) || ((itmp & 0x00000001) == 0) ) {
00222             mracoef[a*2*Msize + 2*m]=mracoef[a*2*Msize + 2*(m+1)] + itmp/2;
00223          } else {
00224             mracoef[a*2*Msize + 2*m]=mracoef[a*2*Msize + 2*(m+1)] + (itmp/2-1);
00225          }
00226         m--;
00227       }
00228       data[a] = mracoef[a*2*Msize];
00229    }
00230 #endif
00231 } 

void rtmrartiwt const int Asize,
const int Msize,
const int amax,
const int mmax,
int mrastep,
double *  mracoef,
double *  data
 

Definition at line 154 of file rtmrartiwt.cpp.

00162   { 
00163 #ifdef STORM_USEF
00164    dartmrartiwt_( &Asize,&Msize, &amax,&mmax, &mrastep, mracoef, data );
00165 #else
00166    mrastep++;
00167    int itmp = (1<<mmax) - 1;
00168    itmp = itmp - ( itmp & mrastep );
00169    int imcycle=0;
00170    while ( ( itmp & (1<<imcycle) ) && ( imcycle < mmax ) ) { imcycle++; }
00171    int m;
00172    for(int a = 0; a <= amax; a++ ) {
00173       m=imcycle;
00174       if ( m < mmax ) {
00175          mracoef[ a*2*Msize + 2*m ] = ( mracoef[ a*2*Msize + 2*(m+1) ]
00176            - mracoef[ a*2*Msize + 2*(m+1) + 1 ] ) * INVSQRT2;
00177       }
00178       m--;
00179       while ( m >= 0 ) {
00180         mracoef[ a*2*Msize + 2*m ] = ( mracoef[ a*2*Msize + 2*(m+1) ]
00181           +mracoef[ a*2*Msize + 2*(m+1) + 1 ] ) * INVSQRT2;
00182         m--;
00183       }
00184       data[a] = mracoef[a*2*Msize];
00185    }
00186 #endif
00187 } 

void rtmrartiwt const int Asize,
const int Msize,
const int amax,
const int mmax,
int mrastep,
float *  mracoef,
float *  data
 

Definition at line 118 of file rtmrartiwt.cpp.

00126   { 
00127 #ifdef STORM_USEF
00128    artmrartiwt_( &Asize,&Msize, &amax,&mmax, &mrastep, mracoef, data );
00129 #else
00130    mrastep++;
00131    int itmp = (1<<mmax) - 1;
00132    itmp = itmp - ( itmp & mrastep );
00133    int imcycle = 0;
00134    while ( ( itmp & (1 <<imcycle) ) && ( imcycle < mmax ) ) { imcycle++; }
00135    int m;
00136    for(int a=0; a <= amax; a++ ) {
00137       m=imcycle;
00138       if ( m < mmax ) {
00139          mracoef[ a*2*Msize + 2*m ]=( mracoef[ a*2*Msize + 2*(m+1) ]
00140            - mracoef[ a*2*Msize + 2*(m+1) + 1 ] ) * INVSQRT2;
00141       }
00142       m--;
00143       while ( m >= 0 ) {
00144         mracoef[ a*2*Msize + 2*m ] = ( mracoef[ a*2*Msize + 2*(m+1) ]
00145           +mracoef[ a*2*Msize + 2*(m+1) + 1 ] ) * INVSQRT2;
00146         m--;
00147       }
00148       data[a] = mracoef[a*2*Msize];
00149    }
00150 #endif
00151 } 

void rtmrartiwt const int Msize,
const int mmax,
int mrastep,
int mracoef,
int data
 

Definition at line 79 of file rtmrartiwt.cpp.

00085   { 
00086 #ifdef STORM_USEF
00087    irtmrartiwt_( &Msize, &mmax, &mrastep, mracoef, &data );
00088 #else
00089    mrastep++;
00090    int itmp = (1<<mmax) - 1;
00091    itmp = itmp - (itmp & mrastep);
00092    int imcycle = 0;
00093    while ( ( itmp & (1<<imcycle) ) && ( imcycle < mmax ) ) { imcycle++; }
00094    int m = imcycle;
00095    if ( m < mmax ) { // right
00096       itmp = mracoef[2*(m+1)+1];
00097       if ( (itmp >= 0) || ((itmp & 0x00000001) == 0) ) {
00098          mracoef[2*m]  = mracoef[2*(m+1)] - itmp/2;
00099       } else {
00100          mracoef[2*m]  = mracoef[2*(m+1)] - (itmp/2-1);
00101       }
00102    }
00103    m--;
00104    while ( m >= 0 ) { //left
00105       itmp = mracoef[2*(m+1)+1] + 1;
00106       if ( (itmp >= 0) || ((itmp & 0x00000001) == 0) ) {
00107          mracoef[2*m]  = mracoef[2*(m+1)] + itmp/2;
00108       } else {
00109          mracoef[2*m]  = mracoef[2*(m+1)] + (itmp/2-1);
00110       }
00111       m--;
00112    }
00113    data = mracoef[0];
00114 #endif
00115 } 

void rtmrartiwt const int Msize,
const int mmax,
int mrastep,
double *  mracoef,
double &  data
 

Definition at line 50 of file rtmrartiwt.cpp.

00056   { 
00057 #ifdef STORM_USEF
00058    drtmrartiwt_( &Msize, &mmax, &mrastep, mracoef, &data );
00059 #else
00060    mrastep++;
00061    int itmp = (1<<mmax) - 1;
00062    itmp = itmp - ( itmp & mrastep);
00063    int imcycle = 0;
00064    while ( ( itmp & (1<<imcycle) ) && ( imcycle < mmax ) ) { imcycle++; }
00065    int m = imcycle;
00066    if ( m < mmax ) { 
00067       mracoef[2*m]  = ( mracoef[2*(m+1)] - mracoef[2*(m+1)+1]) * INVSQRT2; 
00068    }
00069    m--;
00070    while ( m >= 0 ) {
00071       mracoef[2*m] = ( mracoef[2*(m+1)] + mracoef[2*(m+1)+1]) * INVSQRT2;
00072       m--;
00073    }
00074    data = mracoef[0];
00075 #endif
00076 } 

void rtmrartiwt const int Msize,
const int mmax,
int mrastep,
float *  mracoef,
float &  data
 

Definition at line 21 of file rtmrartiwt.cpp.

00027   { 
00028 #ifdef STORM_USEF
00029    rtmrartiwt_( &Msize, &mmax, &mrastep, mracoef, &data );
00030 #else
00031    mrastep++;
00032    int itmp = (1<<mmax) - 1;
00033    itmp = itmp - (itmp & mrastep);
00034    int imcycle=0;
00035    while ( ( itmp & (1<<imcycle) ) && ( imcycle < mmax ) ) { imcycle++; }
00036    int m = imcycle;
00037    if ( m < mmax ) { 
00038       mracoef[2*m] = ( mracoef[2*(m+1)] - mracoef[2*(m+1)+1] ) * INVSQRT2; 
00039    }
00040    m--;
00041    while ( m >= 0 ) {
00042       mracoef[2*m] = ( mracoef[2*(m+1)] + mracoef[2*(m+1)+1]) * INVSQRT2;
00043       m--;
00044    }
00045    data = mracoef[0];
00046 #endif
00047 } 


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