原创 全定点 快速 ATAN2 反正切函数

2008-12-24 17:39 7464 14 15 分类: MCU/ 嵌入式

仿照TI的IQMATH 定点数学库,自己写了个定点的数学库,方便在ARM7/9,DSP,CORTEX-M3上使用。


使用例子:float  temp6=fix2float(arctan(float2fix(1),float2fix(1)));


int32_t arctan( int32_t y, int32_t x )
{
 const int32_t ONEQTR_PI = float2fix(M_PI / 4.0);
 const int32_t THRQTR_PI = float2fix(3.0 * M_PI / 4.0);
        const int32_t OP1 =float2fix(0.1963f);
        const int32_t OP2 =float2fix(0.9817f);
        const int32_t LEF =float2fix(1e-10f);


 int32_t r, angle;
 int32_t  abs_y = abs(y)+LEF;      // kludge to prevent 0/0 condition


 if ( x < 0 )
 {
  r = fixdiv((x + abs_y) , (abs_y - x));
  angle = THRQTR_PI;
 }
 else
 {
  r = fixdiv((x - abs_y) , (x + abs_y));
  angle = ONEQTR_PI;
 }
        //angle =angle + (0.1963f * r * r - 0.9817f) * r;


 angle += fixmulf(  (fixmulf(OP1,fixmulf(r,r))- OP2),   r);


 if ( y < 0 )
  return( -angle );     // negate if in quad III or IV
 else
  return( angle );
}

文章评论1条评论)

登录后参与讨论

用户1058922 2015-11-25 18:44

函数原型找不到fixmulf,fixdiv,float2fix等
相关推荐阅读
用户479664 2009-12-30 17:07
CRC校验之 MSP430与STM32通吃版
CRC是一个必备工具。在工程上,特别是通信。好比网卡芯片,无效RF CC500 CC1100等芯片内部都有CRC电路。...
用户479664 2009-09-01 17:59
TMS320F280X SPI SPIA使用入门与总结
TMS320F280X SPI SPIA使用入门与总结Netjob @ 2009年 8月31日晚我使用过NXP ARM LPC2138的SPI口,ATMEL AT91SAM7S256的SPI,MSP4...
用户479664 2009-08-25 23:09
STM32 CAN 标称位时间计算
以知 CAN总线 每秒发送的位数,即 最大传输 比特率是 1Mb/s( 1 兆位每秒)这样 CAN总线的【最小标称位时间】就是  1 μs,简单的说就是 发送 1 位要1 μs时间。根据ISO1189...
用户479664 2009-08-25 23:07
精解 SPI 的 CPHA 时钟相位 与CPLK 时钟极性
精解 SPI 的 CPHA 时钟相位 与CPLK 时钟极性Netjob @ 2009-08-01...
用户479664 2009-06-18 23:00
STM32 Hello World!
https://static.assets-stash.eet-china.com/album/old-resources/2008/12/12/8ee2aa15-a51b-441d-96f5-a15...
用户479664 2009-05-11 23:56
精解 Solder Mask 和Paste Mask 区别
Solder Mask Layers【阻焊层】。这个是反显层! 有的表示无的,无的表示有的嘛,不明白?你在Solder Mask Layer【有TopSolder 和BottomSolder】上FIL...
我要评论
1
14
关闭 站长推荐上一条 /2 下一条