zoukankan      html  css  js  c++  java
  • 迭代FFT

     1 int reverse(int x, int len){
     2     int t = 0;
     3     for (int i = 1; i < len; i <<= 1){
     4         t <<= 1;
     5         if (x & i) t |= 1;
     6     }
     7     return t;
     8 }
     9 
    10 Complex A[200010];
    11 void FFT(Complex *a, int n, int DFT){
    12     for (int i = 0; i < n; ++i) A[reverse(i, n)] = a[i];
    13     for (int i = 2; i <= n; i <<= 1){
    14         Complex wn = Complex(cos(2 * pi / i), DFT * sin(2 * pi / i));
    15         for (int j = 0; j < n; j += i){
    16             Complex w = Complex(1, 0);
    17             for (int k = 0; k < (i >> 1); ++k){
    18                 Complex x = A[j + k];
    19                 Complex y = w * A[j + k + (i >> 1)];
    20                 A[j + k] = x + y;
    21                 A[j + k + (i >> 1)] = x - y;
    22                 w = w * wn;
    23             }
    24         }
    25     }
    26     if (DFT == -1) for (int i = 0; i < n; ++i) A[i] = A[i] / n;
    27     for (int i = 0; i < n; ++i) a[i] = A[i];
    28 }
  • 相关阅读:
    团队开发5
    团队开发4
    团队开发3
    团队开发2
    团队开发1
    团队计划会议
    寒假学习进度---完结篇
    寒假学习进度十七
    寒假学习进度十六
    python后续学习
  • 原文地址:https://www.cnblogs.com/tempestT/p/7663323.html
Copyright © 2011-2022 走看看