avr中怎么运用atan(x,y) 函数
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/18 01:25:28
avr中怎么运用atan(x,y) 函数
# define PiOv2 (3.14159f / 2.0f)
# define SignBit(f)\x05\x05((*(const unsigned long *)&(f)) >> 31)
float Atan_16bits_Pre( float y,float x )
{
\x05float a,s;
\x05if ( fabs( y ) > fabs( x ) )
\x05{
\x05\x05a = x / y;
\x05\x05s = a * a;
\x05\x05s = - ( ( ( ( ( ( ( ( ( 0.0028662257f * s - 0.0161657367f ) * s + 0.0429096138f ) * s - 0.0752896400f )
\x05\x05\x05* s + 0.1065626393f ) * s - 0.1420889944f ) * s + 0.1999355085f ) * s - 0.3333314528f ) * s ) + 1.0f ) * a;
\x05\x05if ( SignBit( a ) ) {
\x05\x05\x05return s - PiOv2;
\x05\x05} else {
\x05\x05\x05return s + PiOv2;
\x05\x05}
\x05}
\x05else
\x05{
\x05\x05a = y / x;
\x05\x05s = a * a;
\x05\x05return ( ( ( ( ( ( ( ( ( 0.0028662257f * s - 0.0161657367f ) * s + 0.0429096138f ) * s - 0.0752896400f )
\x05\x05\x05* s + 0.1065626393f ) * s - 0.1420889944f ) * s + 0.1999355085f ) * s - 0.3333314528f ) * s ) + 1.0f ) * a;
\x05}
}
atan(x,y)需要CPU浮点指令级支持,AVR中一般没有专用浮点单元,所以atan也是软件实现的.如果你在AVR的库中一时没有找到atan,可以用上面这段程序代替,注意,上面程序只提供了两字节精度支持,大概小数点后3位左右.
上述程序来至id的4号引擎,基本上都是大神写的,你很难找到一段效率比它还高的代码,上述代码在一定情况下和浮点指令的速度差不多.
# define SignBit(f)\x05\x05((*(const unsigned long *)&(f)) >> 31)
float Atan_16bits_Pre( float y,float x )
{
\x05float a,s;
\x05if ( fabs( y ) > fabs( x ) )
\x05{
\x05\x05a = x / y;
\x05\x05s = a * a;
\x05\x05s = - ( ( ( ( ( ( ( ( ( 0.0028662257f * s - 0.0161657367f ) * s + 0.0429096138f ) * s - 0.0752896400f )
\x05\x05\x05* s + 0.1065626393f ) * s - 0.1420889944f ) * s + 0.1999355085f ) * s - 0.3333314528f ) * s ) + 1.0f ) * a;
\x05\x05if ( SignBit( a ) ) {
\x05\x05\x05return s - PiOv2;
\x05\x05} else {
\x05\x05\x05return s + PiOv2;
\x05\x05}
\x05}
\x05else
\x05{
\x05\x05a = y / x;
\x05\x05s = a * a;
\x05\x05return ( ( ( ( ( ( ( ( ( 0.0028662257f * s - 0.0161657367f ) * s + 0.0429096138f ) * s - 0.0752896400f )
\x05\x05\x05* s + 0.1065626393f ) * s - 0.1420889944f ) * s + 0.1999355085f ) * s - 0.3333314528f ) * s ) + 1.0f ) * a;
\x05}
}
atan(x,y)需要CPU浮点指令级支持,AVR中一般没有专用浮点单元,所以atan也是软件实现的.如果你在AVR的库中一时没有找到atan,可以用上面这段程序代替,注意,上面程序只提供了两字节精度支持,大概小数点后3位左右.
上述程序来至id的4号引擎,基本上都是大神写的,你很难找到一段效率比它还高的代码,上述代码在一定情况下和浮点指令的速度差不多.
matlab中atan(y/x)是啥意思
tan /asin /acos /atan /atan2(y,x) /sinh /cosh /tanh 这些都是函数,能
matlab,matlab如何画出 y=x-atan(3/x)^36*2/pi*x-atan(x/3)^35*6/pi;
函数y=Atan(ωx+φ) (A>0,ω>0﹚中为什么要满足条件A>0?ω>0还可以理解,但为什么不是A≠0?
AVR单片机中可以是BIT(0)这个函数,比如:#define LED1_ON (PORTA &= BIT(0))
matlab 中 运行:[x]=solve('90-atan(0.1*x)-atan(0.2*x)=51) 为什么不行啊
用matlab怎么画y=atan((x^2+(3x+1)^0.5+2(cosx)^2)/(x-7))的图像啊,急求
(2011•辽宁)已知函数f(x)=Atan(ωx+φ)(ω>0,|φ|<π2
怎么运用EXCEL中SIN函数命令求坐标?(在直角坐标系中,已知角度a=48.3和半径R=21.18;求X,Y坐标值)
已知函数f(x)=Atan(wx+φ)+h(w>0,|φ|
已知y=Atan(ωx+φ) 为奇函数,求φ?
matlab中fill函数的运用,怎么给封闭的曲线内着色,比如y=x^2和y=x围成的封闭区域着色,怎么弄!