⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 complex.h

📁 C 语言编写的fft算法
💻 H
字号:
/*///////////////////////////////////////////////////////////////////////////////////////////

--------------------------------by linker110@yahoo.com.cn---------------------------------
								20:03 2007-10-11
///////////////////////////////////////////////////////////////////////////////////////////*/

typedef	struct
{
	float	real;
	float	img;
}COMPLEX;

#define COM_PI	3.14159265
extern	COMPLEX  *ComAdd(const COMPLEX  *add1, const COMPLEX  *add2,COMPLEX  *result);
extern	COMPLEX  *ComSub(const COMPLEX  *sub1, const COMPLEX  *sub2,COMPLEX  *result);
extern	COMPLEX  *ComMul(const COMPLEX  *mul1, const COMPLEX  *mul2,COMPLEX  *result);
extern	COMPLEX  *ComDiv(const COMPLEX  *div1,  const COMPLEX * div2,COMPLEX *result);

extern	COMPLEX  *ComCon(const COMPLEX  *target,COMPLEX  *result);
extern	void	  ComDisplay(const COMPLEX  *target);

/*////////////////////////////////////////////////////////////////////////////////////////////
函数功能:执行两个复数的加法
入口参数:指向两个加数的指针
出口参数:指向结果的指针
注意事项:保存结果的复数需在函数外申请,本函数不处理此项内容;任何一个加数均可同时用于保存结果
////////////////////////////////////////////////////////////////////////////////////////////*/
extern	COMPLEX  *ComAdd(const COMPLEX  *add1, const COMPLEX  *add2,COMPLEX  *result)
{
	result->real = add1->real + add2->real;
	result->img = add1->img  + add2->img;

	return	result;
}




/*////////////////////////////////////////////////////////////////////////////////////////////
函数功能:执行两个复数的减法
入口参数:指向两个减数的指针
出口参数:指向结果的指针
注意事项:保存结果的复数需在函数外申请,本函数不处理此项内容;任何一个减数均可同时用于保存结果
////////////////////////////////////////////////////////////////////////////////////////////*/
extern	COMPLEX  *ComSub(const COMPLEX  *sub1, const COMPLEX  *sub2,COMPLEX  *result)
{
	result->real = sub1->real - sub2->real;
	result->img = sub1->img  - sub2->img;

	return	result;
}



/*////////////////////////////////////////////////////////////////////////////////////////////
函数功能:执行两个复数的乘法
入口参数:指向两个乘数的指针
出口参数:指向结果的指针
注意事项:保存结果的复数需在函数外申请,本函数不处理此项内容;任何一个乘数均可同时用于保存结果
////////////////////////////////////////////////////////////////////////////////////////////*/
extern	COMPLEX  *ComMul(const COMPLEX  *mul1, const COMPLEX  *mul2,COMPLEX  *result)
{
	float	m1r=mul1->real,m1i=mul1->img,m2r=mul2->real,m2i=mul2->img;
	result->real =m1r  * m2r  - m1i * m2i;
	result->img = m1r * m2i  + m2r * m1i;

	return	result;
}



/*////////////////////////////////////////////////////////////////////////////////////////////
函数功能:执行两个复数的除法
入口参数:指向被除数和除数的指针
出口参数:指向结果的指针
注意事项:保存结果的复数需在函数外申请,本函数不处理此项内容;被除数和除数均可同时用于保存结果
	   未处理除数为零的情况 
////////////////////////////////////////////////////////////////////////////////////////////*/
extern	COMPLEX  *ComDiv(const COMPLEX  *div1,  const COMPLEX *div2,COMPLEX *result)
{
	float	d1r=div1->real,d1i=div1->img,d2r=div2->real,d2i=div2->img;
	result->real = (d1r * d2r + d1i * d2i)/(d2r * d2r + d2i * d2i);
	result->img =(d2r * d1i - d1r * d2i)/(d2r * d2r + d2i * d2i);

	return	result;
}



/*////////////////////////////////////////////////////////////////////////////////////////////
函数功能:求一个复数的共轭复数
入口参数:目标复数指针
出口参数:指向结果的指针
注意事项:目标复数可以同时用于保存结果
////////////////////////////////////////////////////////////////////////////////////////////*/
extern	COMPLEX  *ComCon(const COMPLEX  *target,COMPLEX  *result)
{
	float	tarrel=target->real,tarimg=target->img;
	result->real = tarrel;
	result->img = -tarimg;

	return	result;
}



/*////////////////////////////////////////////////////////////////////////////////////////////
函数功能:显示复数,用于调试
入口参数:指向欲显示的复数的指针
出口参数:
注意事项:
////////////////////////////////////////////////////////////////////////////////////////////*/
extern	void	     ComDisplay(const COMPLEX  *target)
{
	printf("real = %f\t ,img = %f\n",target->real,target->img);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -