📄 main.c
字号:
#include <stdio.h>
#include <malloc.h>
#include "FFT.h"
#include <math.h>
void main(int argc, char *argv[])
{
FILE* pFile;
int MaxExpo, i, Max;
int* Co;
poly p1, p2;
MyComplex C;
double angle;
MyComplex *P1, *P2, *P3, *P4, *P1Coefficient, *P2Coefficient;
if(argc <= 2)
{
printf("input example: \n FFT input.dat output.dat \n 5060309181\n");
return;
}
pFile = fopen(argv[1], "r");
if(pFile == 0)
return;
fscanf(pFile, "%d\n", &MaxExpo);
Max = GetUpExpo(MaxExpo * 2);
Co = (int*)malloc(sizeof(int) * Max);
for(i = 0; i < MaxExpo + 1; i++)
fscanf(pFile, "%d", &Co[i]);
for(; i < Max; i++)
Co[i] = 0;
InitializePoly(&p1, Max - 1, Co);
for(i = 0; i < MaxExpo + 1; i++)
fscanf(pFile, "%d", &Co[i]);
for(; i < Max; i++)
Co[i] = 0;
InitializePoly(&p2, Max - 1, Co);
P1Coefficient = (MyComplex*)malloc(sizeof(MyComplex) * Max);
for(i = 0; i < Max; i++)
{
P1Coefficient[i].real = p1.Coefficient[i];
P1Coefficient[i].imagine = 0;
}
P2Coefficient = (MyComplex*)malloc(sizeof(MyComplex) * Max);
for(i = 0; i < Max; i++)
{
P2Coefficient[i].real = p2.Coefficient[i];
P2Coefficient[i].imagine = 0;
}
angle = 360 / (double)Max;
angle = angle * PI / 180;
C.imagine = sin(angle);
C.real = cos(angle);
P1 = FFT(Max, P1Coefficient, C);
P2 = FFT(Max, P2Coefficient, C);
P3 = (MyComplex*)malloc(sizeof(MyComplex) * Max);
for(i = 0; i < Max; i++)
Equal(&P3[i], Mult(P1[i], P2[i]));
P4 = FFT(Max, P3, Inv(C));
pFile = fopen(argv[2], "w");
for(i = 0; i < MaxExpo * 2 + 1; i++)
fprintf(pFile, "%.0f ", P4[i].real / Max);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -