讲解:
快速傅里叶变换(FFT)详解
公式介绍比较详细。
FFT详解
原理讲解比较清晰。
建议两篇一起看一下。
如果只是在基础应用层面不去深究,FFT还是比较好懂的。
代码
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#define db double
using namespace std;
const int N=5e6+10;
const db pi=acos(-1);
int n,m,l,bin[N];
//誓死不用STL,手打Complex
struct Complex{db real,imag;}a[N],b[N];
typedef Complex cc;
cc operator *(cc x,cc y)
{
return (cc){x.real*y.real-x.imag*y.imag,x.real*y.imag+x.imag*y.real};}
cc operator -(cc x,cc y)
{
return (cc){x.real-y.real,x.imag-y.imag};}
cc operator +(cc x,cc y)
{
return (cc){x.real+y.real,x.imag+y.imag};}
inline void swa(cc &x,cc &y){cc t=x;x=y;y=t;}
inline void FFT(cc *C,int sta)
{
for(int i=