#include "stormdef.h"Include dependency graph for g1fwt2ds.cpp:

Go to the source code of this file.
Defines | |
| #define | H00 STORMDEF_MATHCONST_GHB1H00 |
| #define | H10 STORMDEF_MATHCONST_GHB1H10 |
| #define | H11 STORMDEF_MATHCONST_GHB1H11 |
Functions | |
| int | g1fwt2ds (const int &Sizef2d, const int &ns, const int &size, const double *sdata, double *wdata, double *ws) |
| int | g1fwt2ds (const int &Sizef2d, const int &ns, const int &size, const float *sdata, float *wdata, float *ws) |
| int | g1fwt2ds (const int &Sizef2d, const int &ns, const int &size, const double *sdata, double *wdata) |
| int | g1fwt2ds (const int &Sizef2d, const int &ns, const int &size, const float *sdata, float *wdata) |
|
|
Definition at line 16 of file g1fwt2ds.cpp. |
|
|
Definition at line 17 of file g1fwt2ds.cpp. |
|
|
Definition at line 18 of file g1fwt2ds.cpp. |
|
||||||||||||||||||||||||||||
|
Definition at line 310 of file g1fwt2ds.cpp.
00317 {
00318
00319 #ifdef STORM_USEF
00320
00321 int iflag;
00322 dg1fwt2dsws_( &Sizef2d, &ns, &size, sdata, wdata, ws, &iflag );
00323 return iflag;
00324
00325 #else
00326
00327 int ii,l,size2;
00328 int size1 = size;
00329 double *u = ws;
00330 double *v = &ws[2*Sizef2d];
00331
00332 #ifdef STORM_FWT_CCHECKUSAGE
00333 if ( size1 < ns ) return 1;
00334 #endif
00335
00336 for( int i = 0; i < 2*size*size; i++ ) {
00337 wdata[i] = sdata[i];
00338 }
00339
00340 if ( size1 == ns ) return 0;
00341
00342 while ( size1 > ns ) {
00343
00344 size2 = size1 / 2;
00345
00346 for( int j = 0; j < size1; j++ ) { // index 1
00347 for( int i = 0; i < size1; i++ ) {
00348 ii = i * size;
00349 u[2*i] = wdata[2*(ii+j)];
00350 u[2*i+1] = wdata[2*(ii+j)+1];
00351 }
00352 for( int i = 0; i < size2; i++ ) {
00353 l = 2 * i;
00354 v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00355 v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00356 + H11 * ( u[2*l+1] + u[2*l+3] );
00357 v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00358 - H10 * ( u[2*l+1] + u[2*l+3] );
00359 v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00360 }
00361 for( int i = 0; i < size1; i++ ) {
00362 ii = i * size;
00363 wdata[2*(ii+j)] = v[2*i];
00364 wdata[2*(ii+j)+1] = v[2*i+1];
00365 }
00366 }
00367
00368 for( int i = 0; i < size1; i++ ) { // index 2
00369 ii = i * size;
00370 for( int j = 0; j < size1; j++ ) {
00371 u[2*j] = wdata[2*(ii+j)];
00372 u[2*j+1] = wdata[2*(ii+j)+1];
00373 }
00374 for( int j = 0; j < size2; j++ ) {
00375 l = 2 * j;
00376 v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00377 v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00378 + H11 * ( u[2*l+1] + u[2*l+3] );
00379 v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00380 - H10 * ( u[2*l+1] + u[2*l+3] );
00381 v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00382 }
00383 for( int j = 0; j < size1; j++ ) {
00384 wdata[2*(ii+j)] = v[2*j];
00385 wdata[2*(ii+j)+1] = v[2*j+1];
00386 }
00387 }
00388 size1 = size2;
00389
00390 }
00391
00392 #ifdef STORM_FWT_CCHECKUSAGE
00393 if (size1 < ns) return 2;
00394 #endif
00395
00396 return 0;
00397
00398 #endif
00399
00400 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 215 of file g1fwt2ds.cpp.
00222 {
00223
00224 #ifdef STORM_USEF
00225
00226 int iflag;
00227 g1fwt2dsws_( &Sizef2d, &ns, &size, sdata, wdata, ws, &iflag );
00228 return iflag;
00229
00230 #else
00231
00232 int ii,l,size2;
00233 int size1 = size;
00234 float *u = ws;
00235 float *v = &ws[2*Sizef2d];
00236
00237 #ifdef STORM_FWT_CCHECKUSAGE
00238 if ( size1 < ns ) return 1;
00239 #endif
00240
00241 for( int i = 0; i < 2*size*size; i++ ) {
00242 wdata[i] = sdata[i];
00243 }
00244
00245 if ( size1 == ns ) return 0;
00246
00247 while ( size1 > ns ) {
00248
00249 size2 = size1 / 2;
00250
00251 for( int j = 0; j < size1; j++ ) { // index 1
00252 for( int i = 0; i < size1; i++ ) {
00253 ii = i * size;
00254 u[2*i] = wdata[2*(ii+j)];
00255 u[2*i+1] = wdata[2*(ii+j)+1];
00256 }
00257 for( int i = 0; i < size2; i++ ) {
00258 l = 2 * i;
00259 v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00260 v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00261 + H11 * ( u[2*l+1] + u[2*l+3] );
00262 v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00263 - H10 * ( u[2*l+1] + u[2*l+3] );
00264 v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00265 }
00266 for( int i = 0; i < size1; i++ ) {
00267 ii = i * size;
00268 wdata[2*(ii+j)] = v[2*i];
00269 wdata[2*(ii+j)+1] = v[2*i+1];
00270 }
00271 }
00272
00273 for( int i = 0; i < size1; i++ ) { // index 2
00274 ii = i * size;
00275 for( int j = 0; j < size1; j++ ) {
00276 u[2*j] = wdata[2*(ii+j)];
00277 u[2*j+1] = wdata[2*(ii+j)+1];
00278 }
00279 for( int j = 0; j < size2; j++ ) {
00280 l = 2 * j;
00281 v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00282 v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00283 + H11 * ( u[2*l+1] + u[2*l+3] );
00284 v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00285 - H10 * ( u[2*l+1] + u[2*l+3] );
00286 v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00287 }
00288 for( int j = 0; j < size1; j++ ) {
00289 wdata[2*(ii+j)] = v[2*j];
00290 wdata[2*(ii+j)+1] = v[2*j+1];
00291 }
00292 }
00293
00294 size1 = size2;
00295
00296 }
00297
00298 #ifdef STORM_FWT_CCHECKUSAGE
00299 if (size1 < ns) return 2;
00300 #endif
00301
00302 return 0;
00303
00304 #endif
00305
00306 }
|
|
||||||||||||||||||||||||
|
Definition at line 118 of file g1fwt2ds.cpp.
00124 {
00125
00126 #ifdef STORM_USEF
00127
00128 int iflag;
00129 dg1fwt2ds_( &Sizef2d, &ns, &size, sdata, wdata, &iflag );
00130 return iflag;
00131
00132 #else
00133
00134 int ii,l,size2;
00135 int size1 = size;
00136
00137 #ifdef STORM_FWT_CCHECKUSAGE
00138 if ( size1 < ns ) return 1;
00139 #endif
00140
00141 for( int i = 0; i < 2*size*size; i++ ) {
00142 wdata[i] = sdata[i];
00143 }
00144
00145 if ( size1 == ns ) return 0;
00146
00147 double *u = new double[2*Sizef2d];
00148 double *v = new double[2*Sizef2d];
00149
00150 while ( size1 > ns ) {
00151
00152 size2 = size1 / 2;
00153
00154 for( int j = 0; j < size1; j++ ) { // index 1
00155 for( int i = 0; i < size1; i++ ) {
00156 ii = i * size;
00157 u[2*i] = wdata[2*(ii+j)];
00158 u[2*i+1] = wdata[2*(ii+j)+1];
00159 }
00160 for( int i = 0; i < size2; i++ ) {
00161 l = 2 * i;
00162 v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00163 v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00164 + H11 * ( u[2*l+1] + u[2*l+3] );
00165 v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00166 - H10 * ( u[2*l+1] + u[2*l+3] );
00167 v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00168 }
00169 for( int i = 0; i < size1; i++ ) {
00170 ii = i * size;
00171 wdata[2*(ii+j)] = v[2*i];
00172 wdata[2*(ii+j)+1] = v[2*i+1];
00173 }
00174 }
00175
00176 for( int i = 0; i < size1; i++ ) { // index 2
00177 ii = i * size;
00178 for( int j = 0; j < size1; j++ ) {
00179 u[2*j] = wdata[2*(ii+j)];
00180 u[2*j+1] = wdata[2*(ii+j)+1];
00181 }
00182 for( int j = 0; j < size2; j++ ) {
00183 l = 2 * j;
00184 v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00185 v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00186 + H11 * ( u[2*l+1] + u[2*l+3] );
00187 v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00188 - H10 * ( u[2*l+1] + u[2*l+3] );
00189 v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00190 }
00191 for( int j = 0; j < size1; j++ ) {
00192 wdata[2*(ii+j)] = v[2*j];
00193 wdata[2*(ii+j)+1] = v[2*j+1];
00194 }
00195 }
00196
00197 size1 = size2;
00198
00199 }
00200 delete [] u;
00201 delete [] v;
00202
00203 #ifdef STORM_FWT_CCHECKUSAGE
00204 if (size1 < ns) return 2;
00205 #endif
00206
00207 return 0;
00208
00209 #endif
00210
00211 }
|
|
||||||||||||||||||||||||
|
Definition at line 21 of file g1fwt2ds.cpp.
00027 {
00028
00029 #ifdef STORM_USEF
00030
00031 int iflag;
00032 g1fwt2ds_( &Sizef2d, &ns, &size, sdata, wdata, &iflag );
00033 return iflag;
00034
00035 #else
00036
00037 int ii,l,size2;
00038 int size1 = size;
00039
00040 #ifdef STORM_FWT_CCHECKUSAGE
00041 if ( size1 < ns ) return 1;
00042 #endif
00043
00044 for( int i = 0; i < 2*size*size; i++ ) {
00045 wdata[i] = sdata[i];
00046 }
00047
00048 if ( size1 == ns ) return 0;
00049
00050 float *u = new float[2*Sizef2d];
00051 float *v = new float[2*Sizef2d];
00052
00053 while ( size1 > ns ) {
00054
00055 size2 = size1 / 2;
00056
00057 for( int j = 0; j < size1; j++ ) { // index 1
00058 for( int i = 0; i < size1; i++ ) {
00059 ii = i * size;
00060 u[2*i] = wdata[2*(ii+j)];
00061 u[2*i+1] = wdata[2*(ii+j)+1];
00062 }
00063 for( int i = 0; i < size2; i++ ) {
00064 l = 2 * i;
00065 v[2*i] = H00 * ( u[2*l] + u[2*l+2] );
00066 v[2*i+1] = H10 * ( u[2*l] - u[2*l+2] )
00067 + H11 * ( u[2*l+1] + u[2*l+3] );
00068 v[2*(size2+i)] = H11 * ( u[2*l] - u[2*l+2] )
00069 - H10 * ( u[2*l+1] + u[2*l+3] );
00070 v[2*(size2+i)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00071 }
00072 for( int i = 0; i < size1; i++ ) {
00073 ii = i * size;
00074 wdata[2*(ii+j)] = v[2*i];
00075 wdata[2*(ii+j)+1] = v[2*i+1];
00076 }
00077 }
00078
00079 for( int i = 0; i < size1; i++ ) { // index 2
00080 ii = i * size;
00081 for( int j = 0; j < size1; j++ ) {
00082 u[2*j] = wdata[2*(ii+j)];
00083 u[2*j+1] = wdata[2*(ii+j)+1];
00084 }
00085 for( int j = 0; j < size2; j++ ) {
00086 l = 2 * j;
00087 v[2*j] = H00 * ( u[2*l] + u[2*l+2] );
00088 v[2*j+1] = H10 * ( u[2*l] - u[2*l+2] )
00089 + H11 * ( u[2*l+1] + u[2*l+3] );
00090 v[2*(size2+j)] = H11 * ( u[2*l] - u[2*l+2] )
00091 - H10 * ( u[2*l+1] + u[2*l+3] );
00092 v[2*(size2+j)+1] = H00 * ( u[2*l+1] - u[2*l+3] );
00093 }
00094 for( int j = 0; j < size1; j++ ) {
00095 wdata[2*(ii+j)] = v[2*j];
00096 wdata[2*(ii+j)+1] = v[2*j+1];
00097 }
00098 }
00099
00100 size1 = size2;
00101
00102 }
00103 delete [] u;
00104 delete [] v;
00105
00106 #ifdef STORM_FWT_CCHECKUSAGE
00107 if (size1 < ns) return 2;
00108 #endif
00109
00110 return 0;
00111
00112 #endif
00113
00114 }
|
1.3.6