home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume1 / 8707 / 48 / demo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-13  |  1017 b   |  49 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "complex.h"
  4.  
  5. #define ndim 3
  6. #define ndat 512
  7.  
  8. main()
  9. {
  10.     int i, j, k, l, ll, isign = 1;
  11.     int nn[ndim];
  12.  
  13. #ifdef SPEED
  14.     struct fcomplex data[ndat];
  15. #else
  16.     struct complex data[ndat];
  17. #endif
  18.  
  19.     for (i = 0; i < ndim; ++i)
  20.     nn[i] = 4 << i;
  21.  
  22.     for (i = 0; i < nn[0]; ++i)
  23.         for (j = 0; j < nn[1]; ++j)
  24.             for (k = 0; k < nn[2]; ++k) {
  25.                 l = (i * nn[1] + j) * nn[2] + k;
  26.                 ll = (l << 1) + 1;
  27.                 data[l].x = ll;
  28.                 data[l].y = ll + 1;
  29.             }
  30.     fftn(data, nn, ndim, isign);
  31.     isign = -1;
  32.  
  33.     printf("\nDouble 3-dimensional Transform");
  34.     printf("\nDouble Transf.  Original Data  Ratio");
  35.     printf("\nReal   Imag.    Real   Imag.   Real   Imag.");
  36.  
  37.     fftn(data, nn, ndim, isign);
  38.  
  39.     for (i = 0; i < 4; ++i) {
  40.         j = i << 1;
  41.         k = j << 1;
  42.         l = (i * nn[1] + j) * nn[2] + k;
  43.         ll = (l << 1) + 1;
  44.         printf("\n%.2lf %.2lf %d %d %.2lf %.2lf", data[l].x, data[l].y, ll, ll+1, data[l].x / ll, data[l].y / (ll+1));
  45.     }
  46.  
  47.     printf("\nThe product of transform lengths is: %d\n", nn[0] * nn[1] * nn[2]);
  48. }
  49.