这是迭代版的快速傅里叶转换 (FFT)。其实就是翻译了一下https://blog.csdn.net/weixin_33714884/article/details/94249560?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param中的代码。
实际测试发现两个数组的规模都比较小 (<= 50) 的时候,运行是正常的。但是当数据规模到500时,软件就运行出错。不清楚原因。但是用递归版本就没问题。
下面是代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
double PI = 3.1415926;
int lim = 1;
int r[1000];
int l;
//定义复数
struct Complex{
double x; //实部
double y; //虚部
};
struct Complex add(struct Complex a, struct Complex b)//复数的加法
{
struct Complex c;
c.x = a.x + b.x;
c.y = a.y + b.y;
return c;
}
struct Complex myMinus(struct Complex a, struct Complex b) //复数的减法
{
struct Complex c;
c.x = a.x - b.x;
c.y = a.y - b.y;
return c;
}
struct Complex multiply(struct Complex a, struct Complex b) //复数的乘法
{
struct Complex c;
c.x = a.x * b.x - a