Go to the source code of this file.
Functions | |
| int | hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const int *wdata, int *sdata, int *ws) |
| int | hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const double *wdata, double *sdata, double *ws) |
| int | hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const float *wdata, float *sdata, float *ws) |
| int | hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const int *wdata, int *sdata) |
| int | hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const double *wdata, double *sdata) |
| int | hifwt2ds (const int &Sizef2d, const int &ns, const int &size, const float *wdata, float *sdata) |
|
||||||||||||||||||||||||||||
|
Definition at line 415 of file hifwt2ds.cpp. References ihifwt2dsws_(), ii, j, sdata(), size1, v, and wdata().
00422 {
00423
00424 #ifdef STORM_USEF
00425
00426 int iflag;
00427 ihifwt2dsws_( &Sizef2d, &ns, &size, wdata, sdata, ws, &iflag );
00428 return iflag;
00429
00430 #else
00431
00432 int ii,size2;
00433 int size1 = ns;
00434 int *u = ws;
00435 int *v = &ws[Sizef2d];
00436
00437 #ifdef STORM_FWT_CCHECKUSAGE
00438 if ( size1 < ns ) return 1;
00439 #endif
00440
00441 for( int i = 0; i < size*size; i++ ) {
00442 sdata[i] = wdata[i];
00443 }
00444
00445 if ( size == ns ) return 0;
00446
00447 while ( size1 < size ) {
00448
00449 size2 = size1;
00450 size1 = 2 * size1;
00451
00452 for( int j = 0; j < size1; j++ ) { // index 1
00453 for( int i = 0; i < size1; i++ ) {
00454 ii = i * size;
00455 u[i] = sdata[ii+j];
00456 }
00457 for( int i = 0; i < size2; i++ ) {
00458 v[2*i] = ( u[i] + u[size2+i] ) / 2;
00459 v[2*i+1] = u[i] - u[size2+i];
00460 }
00461 for( int i = 0; i < size1; i++ ) {
00462 ii = i * size;
00463 sdata[ii+j] = v[i];
00464 }
00465 }
00466
00467 for( int i = 0; i < size1; i++ ) { // index 2
00468 ii = i * size;
00469 for( int j = 0; j < size1; j++ ) {
00470 u[j] = sdata[ii+j];
00471 }
00472 for( int j = 0; j < size2; j++ ) {
00473 v[2*j] = ( u[j] + u[size2+j] ) / 2;
00474 v[2*j+1] = u[j] - u[size2+j];
00475 }
00476 for( int j = 0; j < size1; j++ ) {
00477 sdata[ii+j] = v[j];
00478 }
00479 }
00480
00481 }
00482
00483 #ifdef STORM_FWT_CCHECKUSAGE
00484 if ( size1 > size ) return 2;
00485 #endif
00486
00487 return 0;
00488
00489 #endif
00490 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 337 of file hifwt2ds.cpp. References dhifwt2dsws_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().
00344 {
00345
00346 #ifdef STORM_USEF
00347
00348 int iflag;
00349 dhifwt2dsws_( &Sizef2d, &ns, &size, wdata, sdata, ws, &iflag );
00350 return iflag;
00351
00352 #else
00353
00354 int ii,size2;
00355 int size1 = ns;
00356 double *u = ws;
00357 double *v = &ws[Sizef2d];
00358
00359 #ifdef STORM_FWT_CCHECKUSAGE
00360 if ( size1 < ns ) return 1;
00361 #endif
00362
00363 for( int i = 0; i < size*size; i++ ) {
00364 sdata[i] = wdata[i];
00365 }
00366
00367 if ( size == ns ) return 0;
00368
00369 while ( size1 < size ) {
00370
00371 size2 = size1;
00372 size1 = 2 * size1;
00373
00374 for( int j = 0; j < size1; j++ ) { // index 1
00375 for( int i = 0; i < size1; i++ ) {
00376 ii = i * size;
00377 u[i] = sdata[ii+j];
00378 }
00379 for( int i = 0; i < size2; i++ ) {
00380 v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00381 v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00382 }
00383 for( int i = 0; i < size1; i++ ) {
00384 ii = i * size;
00385 sdata[ii+j] = v[i];
00386 }
00387 }
00388
00389 for( int i = 0; i < size1; i++ ) { // index 2
00390 ii = i * size;
00391 for( int j = 0; j < size1; j++ ) {
00392 u[j] = sdata[ii+j];
00393 }
00394 for( int j = 0; j < size2; j++ ) {
00395 v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00396 v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00397 }
00398 for( int j = 0; j < size1; j++ ) {
00399 sdata[ii+j] = v[j];
00400 }
00401 }
00402
00403 }
00404
00405 #ifdef STORM_FWT_CCHECKUSAGE
00406 if ( size1 > size ) return 2;
00407 #endif
00408
00409 return 0;
00410
00411 #endif
00412 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 259 of file hifwt2ds.cpp. References hifwt2dsws_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().
00266 {
00267
00268 #ifdef STORM_USEF
00269
00270 int iflag;
00271 hifwt2dsws_( &Sizef2d, &ns, &size, wdata, sdata, ws, &iflag );
00272 return iflag;
00273
00274 #else
00275
00276 int ii,size2;
00277 int size1 = ns;
00278 float *u = ws;
00279 float *v = &ws[Sizef2d];
00280
00281 #ifdef STORM_FWT_CCHECKUSAGE
00282 if ( size1 < ns ) return 1;
00283 #endif
00284
00285 for( int i = 0; i < size*size; i++ ) {
00286 sdata[i] = wdata[i];
00287 }
00288
00289 if ( size == ns ) return 0;
00290
00291 while ( size1 < size ) {
00292
00293 size2 = size1;
00294 size1 = 2 * size1;
00295
00296 for( int j = 0; j < size1; j++ ) { // index 1
00297 for( int i = 0; i < size1; i++ ) {
00298 ii = i * size;
00299 u[i] = sdata[ii+j];
00300 }
00301 for( int i = 0; i < size2; i++ ) {
00302 v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00303 v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00304 }
00305 for( int i = 0; i < size1; i++ ) {
00306 ii = i * size;
00307 sdata[ii+j] = v[i];
00308 }
00309 }
00310
00311 for( int i = 0; i < size1; i++ ) { // index 2
00312 ii = i * size;
00313 for( int j = 0; j < size1; j++ ) {
00314 u[j] = sdata[ii+j];
00315 }
00316 for( int j = 0; j < size2; j++ ) {
00317 v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00318 v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00319 }
00320 for( int j = 0; j < size1; j++ ) {
00321 sdata[ii+j] = v[j];
00322 }
00323 }
00324
00325 }
00326
00327 #ifdef STORM_FWT_CCHECKUSAGE
00328 if ( size1 > size ) return 2;
00329 #endif
00330
00331 return 0;
00332
00333 #endif
00334 }
|
|
||||||||||||||||||||||||
|
Definition at line 179 of file hifwt2ds.cpp. References ihifwt2ds_(), ii, j, sdata(), size1, v, and wdata().
00185 {
00186
00187 #ifdef STORM_USEF
00188
00189 int iflag;
00190 ihifwt2ds_( &Sizef2d, &ns, &size, wdata, sdata, &iflag );
00191 return iflag;
00192
00193 #else
00194
00195 int ii,size2;
00196 int size1 = ns;
00197 int *u = new int[Sizef2d];
00198 int *v = new int[Sizef2d];
00199
00200 #ifdef STORM_FWT_CCHECKUSAGE
00201 if ( size1 < ns ) return 1;
00202 #endif
00203
00204 for( int i = 0; i < size*size; i++ ) {
00205 sdata[i] = wdata[i];
00206 }
00207
00208 if ( size == ns ) return 0;
00209
00210 while ( size1 < size ) {
00211
00212 size2 = size1;
00213 size1 = 2 * size1;
00214
00215 for( int j = 0; j < size1; j++ ) { // index 1
00216 for( int i = 0; i < size1; i++ ) {
00217 ii = i * size;
00218 u[i] = sdata[ii+j];
00219 }
00220 for( int i = 0; i < size2; i++ ) {
00221 v[2*i] = ( u[i] + u[size2+i] ) / 2;
00222 v[2*i+1] = u[i] - u[size2+i];
00223 }
00224 for( int i = 0; i < size1; i++ ) {
00225 ii = i * size;
00226 sdata[ii+j] = v[i];
00227 }
00228 }
00229
00230 for( int i = 0; i < size1; i++ ) { // index 2
00231 ii = i * size;
00232 for( int j = 0; j < size1; j++ ) {
00233 u[j] = sdata[ii+j];
00234 }
00235 for( int j = 0; j < size2; j++ ) {
00236 v[2*j] = ( u[j] + u[size2+j] ) / 2;
00237 v[2*j+1] = u[j] - u[size2+j];
00238 }
00239 for( int j = 0; j < size1; j++ ) {
00240 sdata[ii+j] = v[j];
00241 }
00242 }
00243
00244 }
00245
00246 delete [] u;
00247 delete [] v;
00248
00249 #ifdef STORM_FWT_CCHECKUSAGE
00250 if ( size1 > size ) return 2;
00251 #endif
00252
00253 return 0;
00254
00255 #endif
00256 }
|
|
||||||||||||||||||||||||
|
Definition at line 99 of file hifwt2ds.cpp. References dhifwt2ds_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().
00105 {
00106
00107 #ifdef STORM_USEF
00108
00109 int iflag;
00110 dhifwt2ds_( &Sizef2d, &ns, &size, wdata, sdata, &iflag );
00111 return iflag;
00112
00113 #else
00114
00115 int ii,size2;
00116 int size1 = ns;
00117 double *u = new double[Sizef2d];
00118 double *v = new double[Sizef2d];
00119
00120 #ifdef STORM_FWT_CCHECKUSAGE
00121 if ( size1 < ns ) return 1;
00122 #endif
00123
00124 for( int i = 0; i < size*size; i++ ) {
00125 sdata[i] = wdata[i];
00126 }
00127
00128 if ( size == ns ) return 0;
00129
00130 while ( size1 < size ) {
00131
00132 size2 = size1;
00133 size1 = 2 * size1;
00134
00135 for( int j = 0; j < size1; j++ ) { // index 1
00136 for( int i = 0; i < size1; i++ ) {
00137 ii = i * size;
00138 u[i] = sdata[ii+j];
00139 }
00140 for( int i = 0; i < size2; i++ ) {
00141 v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00142 v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00143 }
00144 for( int i = 0; i < size1; i++ ) {
00145 ii = i * size;
00146 sdata[ii+j] = v[i];
00147 }
00148 }
00149
00150 for( int i = 0; i < size1; i++ ) { // index 2
00151 ii = i * size;
00152 for( int j = 0; j < size1; j++ ) {
00153 u[j] = sdata[ii+j];
00154 }
00155 for( int j = 0; j < size2; j++ ) {
00156 v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00157 v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00158 }
00159 for( int j = 0; j < size1; j++ ) {
00160 sdata[ii+j] = v[j];
00161 }
00162 }
00163
00164 }
00165
00166 delete [] u;
00167 delete [] v;
00168
00169 #ifdef STORM_FWT_CCHECKUSAGE
00170 if ( size1 > size ) return 2;
00171 #endif
00172
00173 return 0;
00174
00175 #endif
00176 }
|
|
||||||||||||||||||||||||
|
Definition at line 19 of file hifwt2ds.cpp. References hifwt2ds_(), ii, INVSQRT2, j, sdata(), size1, v, and wdata().
00025 {
00026
00027 #ifdef STORM_USEF
00028
00029 int iflag;
00030 hifwt2ds_( &Sizef2d, &ns, &size, wdata, sdata, &iflag );
00031 return iflag;
00032
00033 #else
00034
00035 int ii,size2;
00036 int size1 = ns;
00037 float *u = new float[Sizef2d];
00038 float *v = new float[Sizef2d];
00039
00040 #ifdef STORM_FWT_CCHECKUSAGE
00041 if ( size1 < ns ) return 1;
00042 #endif
00043
00044 for( int i = 0; i < size*size; i++ ) {
00045 sdata[i] = wdata[i];
00046 }
00047
00048 if ( size == ns ) return 0;
00049
00050 while ( size1 < size ) {
00051
00052 size2 = size1;
00053 size1 = 2 * size1;
00054
00055 for( int j = 0; j < size1; j++ ) { // index 1
00056 for( int i = 0; i < size1; i++ ) {
00057 ii = i * size;
00058 u[i] = sdata[ii+j];
00059 }
00060 for( int i = 0; i < size2; i++ ) {
00061 v[2*i] = ( u[i] + u[size2+i] ) * INVSQRT2;
00062 v[2*i+1] = ( u[i] - u[size2+i] ) * INVSQRT2;
00063 }
00064 for( int i = 0; i < size1; i++ ) {
00065 ii = i * size;
00066 sdata[ii+j] = v[i];
00067 }
00068 }
00069
00070 for( int i = 0; i < size1; i++ ) { // index 2
00071 ii = i * size;
00072 for( int j = 0; j < size1; j++ ) {
00073 u[j] = sdata[ii+j];
00074 }
00075 for( int j = 0; j < size2; j++ ) {
00076 v[2*j] = ( u[j] + u[size2+j] ) * INVSQRT2;
00077 v[2*j+1] = ( u[j] - u[size2+j] ) * INVSQRT2;
00078 }
00079 for( int j = 0; j < size1; j++ ) {
00080 sdata[ii+j] = v[j];
00081 }
00082 }
00083
00084 }
00085
00086 delete [] u;
00087 delete [] v;
00088
00089 #ifdef STORM_FWT_CCHECKUSAGE
00090 if ( size1 > size ) return 2;
00091 #endif
00092
00093 return 0;
00094
00095 #endif
00096 }
|
1.3.6