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

pd4fwt.cpp File Reference

#include "stormdef.h"

Include dependency graph for pd4fwt.cpp:

Include dependency graph

Go to the source code of this file.

Defines

#define H0   STORMDEF_MATHCONST_D4H0
#define H1   STORMDEF_MATHCONST_D4H1
#define H2   STORMDEF_MATHCONST_D4H2
#define H3   STORMDEF_MATHCONST_D4H3

Functions

int pd4fwt (const int &Sizef, const int &ns, const int &ks, const int &size, const double *sdata, double *wdata, double *ws)
int pd4fwt (const int &Sizef, const int &ns, const int &ks, const int &size, const float *sdata, float *wdata, float *ws)
int pd4fwt (const int &Sizef, const int &ns, const int &ks, const int &size, const double *sdata, double *wdata)
int pd4fwt (const int &Sizef, const int &ns, const int &ks, const int &size, const float *sdata, float *wdata)


Define Documentation

#define H0   STORMDEF_MATHCONST_D4H0
 

Definition at line 15 of file pd4fwt.cpp.

Referenced by pd4fwt(), pd4fwt2ds(), pd4fwt3ds(), pd4ifwt(), pd4ifwt2ds(), and pd4ifwt3ds().

#define H1   STORMDEF_MATHCONST_D4H1
 

Definition at line 16 of file pd4fwt.cpp.

Referenced by pd4fwt(), pd4fwt2ds(), pd4fwt3ds(), pd4ifwt(), pd4ifwt2ds(), and pd4ifwt3ds().

#define H2   STORMDEF_MATHCONST_D4H2
 

Definition at line 17 of file pd4fwt.cpp.

Referenced by pd4fwt(), pd4fwt2ds(), pd4fwt3ds(), pd4ifwt(), pd4ifwt2ds(), and pd4ifwt3ds().

#define H3   STORMDEF_MATHCONST_D4H3
 

Definition at line 18 of file pd4fwt.cpp.

Referenced by pd4fwt(), pd4fwt2ds(), pd4fwt3ds(), pd4ifwt(), pd4ifwt2ds(), and pd4ifwt3ds().


Function Documentation

int pd4fwt const int Sizef,
const int ns,
const int ks,
const int size,
const double *  sdata,
double *  wdata,
double *  ws
 

Definition at line 193 of file pd4fwt.cpp.

00201   { 
00202 
00203 #ifdef STORM_USEF
00204 
00205    int iflag;
00206    dpd4fwtws_( &Sizef, &ns, &ks, &size, sdata, wdata, ws, &iflag );
00207    return iflag;
00208 
00209 #else
00210 
00211    int j;
00212    int j1,j2,j3;
00213    int size2;
00214    int size1 = size;
00215 
00216 #ifdef STORM_FWT_CCHECKUSAGE
00217    if ( size1 < ns ) return 1;
00218 #endif
00219 
00220    for( int i = 0; i < size1; i++ ) { wdata[i] = sdata[i]; }
00221    if ( size1 == ns ) return 0;
00222    while ( size1 > ns ) {
00223       size2 = size1 / 2;
00224       for( int i = 0; i < size2; i++ ) {
00225          j = 2 * i;
00226          j1 = (j+1)%size1;
00227          j2 = (j+2)%size1;
00228          j3 = (j+3)%size1;
00229          ws[i] = H0*wdata[j] + H1*wdata[j+1] 
00230            + H2*wdata[j2] + H3*wdata[j3];
00231          ws[size2+i] = H3*wdata[j] - H2*wdata[j1] 
00232            + H1*wdata[j2] + H0*wdata[j3];
00233       }
00234       for( int i = 0; i < size1; i++ ) { wdata[i] = ws[i]; }
00235       size1 = size2;
00236    }
00237 
00238 #ifdef STORM_FWT_CCHECKUSAGE
00239    if ( size1 != ns ) return 2;
00240 #endif
00241 
00242    return 0;
00243 
00244 #endif
00245 
00246 } 

int pd4fwt const int Sizef,
const int ns,
const int ks,
const int size,
const float *  sdata,
float *  wdata,
float *  ws
 

Definition at line 136 of file pd4fwt.cpp.

00144   { 
00145 
00146 #ifdef STORM_USEF
00147 
00148    int iflag;
00149    pd4fwtws_( &Sizef, &ns, &ks, &size, sdata, wdata, ws, &iflag );
00150    return iflag;
00151 
00152 #else
00153 
00154    int j;
00155    int j1,j2,j3;
00156    int size2;
00157    int size1 = size;
00158    if ( size1 < ns ) return 1;
00159    for( int i = 0; i < size1; i++ ) { wdata[i] = sdata[i]; }
00160 
00161 #ifdef STORM_FWT_CCHECKUSAGE
00162    if ( size1 == ns ) return 0;
00163 #endif
00164 
00165    while ( size1 > ns ) {
00166       size2 = size1 / 2;
00167       for( int i = 0; i < size2; i++ ) {
00168          j = 2 * i;
00169          j1 = (j+1)%size1;
00170          j2 = (j+2)%size1;
00171          j3 = (j+3)%size1;
00172          ws[i] = H0*wdata[j] + H1*wdata[j+1] 
00173            + H2*wdata[j2] + H3*wdata[j3];
00174          ws[size2+i] = H3*wdata[j] - H2*wdata[j1] 
00175            + H1*wdata[j2] + H0*wdata[j3];
00176       }
00177       for( int i = 0; i < size1; i++ ) { wdata[i] = ws[i]; }
00178       size1 = size2;
00179    }
00180 
00181 #ifdef STORM_FWT_CCHECKUSAGE
00182    if ( size1 != ns ) return 2;
00183 #endif
00184 
00185    return 0;
00186 
00187 #endif
00188 
00189 } 

int pd4fwt const int Sizef,
const int ns,
const int ks,
const int size,
const double *  sdata,
double *  wdata
 

Definition at line 78 of file pd4fwt.cpp.

00085   { 
00086 
00087 #ifdef STORM_USEF
00088 
00089    int iflag;
00090    dpd4fwt_( &Sizef, &ns, &ks, &size, sdata, wdata, &iflag );
00091    return iflag;
00092 
00093 #else
00094 
00095    int j;
00096    int j1,j2,j3;
00097    int size2;
00098    int size1 = size;
00099    double *xx = new double[Sizef];
00100 
00101 #ifdef STORM_FWT_CCHECKUSAGE
00102    if ( size1 < ns ) return 1;
00103 #endif
00104 
00105    for( int i = 0; i < size1; i++ ) { wdata[i] = sdata[i]; }
00106    if ( size1 == ns ) return 0;
00107    while ( size1 > ns ) {
00108       size2 = size1 / 2;
00109       for( int i = 0; i < size2; i++ ) {
00110          j = 2 * i;
00111          j1 = (j+1)%size1;
00112          j2 = (j+2)%size1;
00113          j3 = (j+3)%size1;
00114          xx[i] = H0*wdata[j] + H1*wdata[j+1] 
00115            + H2*wdata[j2] + H3*wdata[j3];
00116          xx[size2+i] = H3*wdata[j] - H2*wdata[j1] 
00117            + H1*wdata[j2] + H0*wdata[j3];
00118       }
00119       for( int i = 0; i < size1; i++ ) { wdata[i] = xx[i]; }
00120       size1 = size2;
00121    }
00122    delete [] xx;
00123 
00124 #ifdef STORM_FWT_CCHECKUSAGE
00125    if ( size1 != ns ) return 2;
00126 #endif
00127 
00128    return 0;
00129 
00130 #endif
00131 
00132 } 

int pd4fwt const int Sizef,
const int ns,
const int ks,
const int size,
const float *  sdata,
float *  wdata
 

Definition at line 20 of file pd4fwt.cpp.

00027   { 
00028 
00029 #ifdef STORM_USEF
00030 
00031    int iflag;
00032    pd4fwt_( &Sizef, &ns, &ks, &size, sdata, wdata, &iflag );
00033    return iflag;
00034 
00035 #else
00036 
00037    int j;
00038    int j1,j2,j3;
00039    int size2;
00040    int size1 = size;
00041    float *xx = new float[Sizef];
00042 
00043 #ifdef STORM_FWT_CCHECKUSAGE
00044    if ( size1 < ns ) return 1;
00045 #endif
00046 
00047    for( int i = 0; i < size1; i++ ) { wdata[i] = sdata[i]; }
00048    if ( size1 == ns ) return 0;
00049    while ( size1 > ns ) {
00050       size2 = size1 / 2;
00051       for( int i = 0; i < size2; i++ ) {
00052          j = 2 * i;
00053          j1 = (j+1)%size1;
00054          j2 = (j+2)%size1;
00055          j3 = (j+3)%size1;
00056          xx[i] = H0*wdata[j] + H1*wdata[j+1] 
00057            + H2*wdata[j2] + H3*wdata[j3];
00058          xx[size2+i] = H3*wdata[j] - H2*wdata[j1] 
00059            + H1*wdata[j2] + H0*wdata[j3];
00060       }
00061       for( int i = 0; i < size1; i++ ) { wdata[i] = xx[i]; }
00062       size1 = size2;
00063    }
00064    delete [] xx;
00065 
00066 #ifdef STORM_FWT_CCHECKUSAGE
00067    if ( size1 != ns ) return 2;
00068 #endif
00069 
00070    return 0;
00071 
00072 #endif
00073 
00074 } 


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