/**************************************************************************
版权所有：	
版本号：    1.00 
文件名：    GEN.H
生成日期：  2010-04-25
作者：      
功能说明：	一般的函数头文件	
			程序文件canctrl.s
修改日志：  
日志1：           
修改者：    
修改日期：
修改内容：
修改原因：
****************************************************************************/
#ifndef __GEN_H
#define __GEN_H 
//
//取绝对值
//参数:
//x(长整数对AbsL()或短整数对AbsS())
//返回值
//x的绝对值
DWORD  _AbsL(long x);
WORD   _AbsS(short x);
long lAbs(long la);
//
//计算复数的模(幅值)
//参数:
//x=复数的实部
//y=复数的虚部
//返回值
//该复数的模(幅值)(3*L+5*S*S/(3*L+S))/3
DWORD  _AmXY(long x,long y);
//
//参数:
//p=复数的实部
//q=复数的虚部
//返回值:
//角度值(-180～180,高16位=整数,低16位=小数)
long   _AngPQ(long p,long q);
//
//计算复数的复角的余弦
//参数:
//p=复数的实部
//q=复数的虚部
//返回值:
//余弦值(高16位=整数,低16位=小数)
long   _CosPQ(long p,long q);
//
//长整数(v)乘以另一个长整数(f)
//参数:
//v=被乘数
//f=乘数(高16位=整数部分,低16位=小数部分)
//返回值:
//(v)x(f)/65536
//注:相乘后的结果应不超过48位,否则出现溢出错误
// uint32_t   _MulFac_U(uint32_t v,uint32_t f);
DWORD   _MulFac_U(DWORD v,DWORD f);
long   _MulFac_S(long v,long f);

//
//长整数(v)乘以另一个长整数(a)再除以一个长整数(b)
//参数:
//v,a,b
//返回值
//(v)x(a)/(b)
long   _MulFac2(long v,long a,long b);
//无符号的长整数(v)乘以另一个无符号的长整数(a)再除以一个无符号的长整数(b)
//参数:
//v,a,b
//返回值
//(v)x(a)/(b)

DWORD   _Mul_Div_U(DWORD v,DWORD f,DWORD ch) ; 
//符号的长整数(v)乘以另一个符号的长整数(a)再除以一个符号的长整数(b)
//参数:
//v,a,b
//返回值
//(v)x(a)/(b)

long   _Mul_Div_S(long v,long f,long ch) ;
long mSin(long lAngle);
long mCos(long lAngle);
void Swap_32(void *p);
void Swap_16_memcpy(BYTE *dat1,BYTE *dat2);
int CopySwap(BYTE *lval,BYTE *rval,int bytes,bool rval_swap);
//
#endif//__GEN_H
//
//========================== 本文件结束 =============================
