Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. void fft2InPlace(complex * _c, unsigned int _n)
  2. {
  3. unsigned int m = _n;
  4. if(m > 0x0FFFFFFF) return;
  5. if(m & (m - 1)) return;
  6. complex * c0 = _c;
  7. m <<= 3;
  8. complex * cn = c0 + 2 * m;
  9. complex * cm = cn - 1;
  10. float s = PI / m;
  11. float t = 0.0f;
  12. complex y;
  13. y.r = 1.0f;
  14. y.i = 0.0f;
  15. complex * c = c0;
  16. complex * d = c0 + m;
  17. for(;;)
  18. {
  19. complex tc = *c;
  20. complex td = *d;
  21. c->i = tc.i + td.i;
  22. d->i = tc.i - td.i;
  23. c->r = tc.r + td.r;
  24. d->r = td.r - td.r;
  25. d->r = td.r * y.r - td.i * y.i;
  26. d->i = td.r * y.i + td.i * y.r;
  27. c += 2 * m;
  28. d += 2 * m;
  29. if(c >= cn)
  30. {
  31. if(c != cm)
  32. {
  33. c += c0 - cn + sizeof(complex);
  34. d += c0 - cn + sizeof(complex);
  35. t += s;
  36. y.r = cos(t);
  37. y.i = sin(t);
  38. }
  39. else
  40. {
  41. if(m == sizeof(complex)) return;
  42. m >>= 1;
  43. cm = cn + cm - sizeof(complex);
  44. c = c0;
  45. d = c0 + m;
  46. s *= 2;
  47. t = 0.0f;
  48. y.r = 1.0f;
  49. y.i = 0.0f;
  50. }
  51. }
  52. }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement